diff --git a/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuxx.asm b/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuxx.asm new file mode 100644 index 000000000..7454fa763 --- /dev/null +++ b/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuxx.asm @@ -0,0 +1 @@ +lda {c1},x \ No newline at end of file diff --git a/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuyy.asm b/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuyy.asm new file mode 100644 index 000000000..b2b867b05 --- /dev/null +++ b/src/main/fragment/vbuaa=_lo_pwsc1_derefidx_vbuyy.asm @@ -0,0 +1 @@ +lda {c1},y \ No newline at end of file diff --git a/src/main/fragment/vdsz1=vdsz1_rol_5.asm b/src/main/fragment/vdsz1=vdsz1_rol_5.asm new file mode 100644 index 000000000..1f1ac7f54 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz1_rol_5.asm @@ -0,0 +1,20 @@ +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 diff --git a/src/main/fragment/vdsz1=vdsz1_rol_6.asm b/src/main/fragment/vdsz1=vdsz1_rol_6.asm new file mode 100644 index 000000000..8189fc992 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz1_rol_6.asm @@ -0,0 +1,24 @@ +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 diff --git a/src/main/fragment/vdsz1=vdsz2_rol_3.asm b/src/main/fragment/vdsz1=vdsz2_rol_3.asm new file mode 100644 index 000000000..d1cab4764 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz2_rol_3.asm @@ -0,0 +1,20 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +lda {z2}+2 +sta {z1}+2 +lda {z2}+3 +sta {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 \ No newline at end of file diff --git a/src/main/fragment/vdsz1=vdsz2_rol_5.asm b/src/main/fragment/vdsz1=vdsz2_rol_5.asm new file mode 100644 index 000000000..2c00a7db4 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz2_rol_5.asm @@ -0,0 +1,28 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +lda {z2}+2 +sta {z1}+2 +lda {z2}+3 +sta {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 \ No newline at end of file diff --git a/src/main/fragment/vdsz1=vdsz2_rol_6.asm b/src/main/fragment/vdsz1=vdsz2_rol_6.asm new file mode 100644 index 000000000..de6ac3ff8 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz2_rol_6.asm @@ -0,0 +1,32 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +lda {z2}+2 +sta {z1}+2 +lda {z2}+3 +sta {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 \ No newline at end of file diff --git a/src/main/fragment/vduz1=vduz2_band_vduc1.asm b/src/main/fragment/vduz1=vduz2_band_vduc1.asm new file mode 100644 index 000000000..628a460fd --- /dev/null +++ b/src/main/fragment/vduz1=vduz2_band_vduc1.asm @@ -0,0 +1,12 @@ +lda {z2} +and #<{c1} +sta {z1} +lda {z2}+1 +and #>{c1} +sta {z1}+1 +lda {z2}+2 +and #<{c1}>>$10 +sta {z1}+2 +lda {z2}+3 +and #>{c1}>>$10 +sta {z1}+3 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz1_rol_3.asm b/src/main/fragment/vwsz1=vwsz1_rol_3.asm new file mode 100644 index 000000000..649d196a9 --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz1_rol_3.asm @@ -0,0 +1,6 @@ +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 diff --git a/src/main/fragment/vwsz1=vwsz1_rol_6.asm b/src/main/fragment/vwsz1=vwsz1_rol_6.asm new file mode 100644 index 000000000..27b4007de --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz1_rol_6.asm @@ -0,0 +1,12 @@ +lda {z1}+1 +sta $ff +lda {z1} +sta {z1}+1 +lda #0 +sta {z1} +lsr $ff +ror {z1}+1 +ror {z1} +lsr $ff +ror {z1}+1 +ror {z1} diff --git a/src/main/fragment/vwsz1=vwsz1_ror_5.asm b/src/main/fragment/vwsz1=vwsz1_ror_5.asm index cfcaf6714..d6a40da8c 100644 --- a/src/main/fragment/vwsz1=vwsz1_ror_5.asm +++ b/src/main/fragment/vwsz1=vwsz1_ror_5.asm @@ -1,21 +1,19 @@ +lda {z1} +sta $ff lda {z1}+1 -cmp #$80 -ror {z1}+1 -ror {z1} -lda {z1}+1 -cmp #$80 -ror {z1}+1 -ror {z1} -lda {z1}+1 -cmp #$80 -ror {z1}+1 -ror {z1} -lda {z1}+1 -cmp #$80 -ror {z1}+1 -ror {z1} -lda {z1}+1 -cmp #$80 -ror {z1}+1 -ror {z1} - +sta {z1} +lda #0 +bit {z1}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz1_ror_6.asm b/src/main/fragment/vwsz1=vwsz1_ror_6.asm new file mode 100644 index 000000000..d78b2b049 --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz1_ror_6.asm @@ -0,0 +1,16 @@ +lda {z1} +sta $ff +lda {z1}+1 +sta {z1} +lda #0 +bit {z1}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz2_plus_vbsc1.asm b/src/main/fragment/vwsz1=vwsz2_plus_vbsc1.asm new file mode 100644 index 000000000..d533af26a --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz2_plus_vbsc1.asm @@ -0,0 +1,7 @@ +lda {z2} +clc +adc #<{c1} +sta {z1} +lda {z2}+1 +adc #>{c1} +sta {z1}+1 diff --git a/src/main/fragment/vwsz1=vwsz2_rol_3.asm b/src/main/fragment/vwsz1=vwsz2_rol_3.asm new file mode 100644 index 000000000..3fc5b7b3a --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz2_rol_3.asm @@ -0,0 +1,10 @@ +lda {z2} +asl +sta {z1} +lda {z2}+1 +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz2_rol_6.asm b/src/main/fragment/vwsz1=vwsz2_rol_6.asm new file mode 100644 index 000000000..d89caea72 --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz2_rol_6.asm @@ -0,0 +1,35 @@ +// ROL twice instead of RORing 6 times +lda {z1} +sta $ff +lda {z1}+1 +sta {z1} +lda #0 +bit {z1}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 // 64 + + +lda {z2} +asl +sta {z1} +lda {z2}+1 +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 // 66 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz2_ror_5.asm b/src/main/fragment/vwsz1=vwsz2_ror_5.asm index f4225184e..3743d0d4e 100644 --- a/src/main/fragment/vwsz1=vwsz2_ror_5.asm +++ b/src/main/fragment/vwsz1=vwsz2_ror_5.asm @@ -1,15 +1,13 @@ -// ROL thrice instead of RORing 5 times -lda {z2} // {z2} low byte to tmp $ff +lda {z2} sta $ff -lda {z2}+1 // {z2} high byte to {z1} low byte +lda {z2}+1 sta {z1} lda #0 bit {z2}+1 -bpl !+ // {z2} high byte positive? +bpl !+ lda #$ff !: -sta {z1}+1 // sign extended {z2} into {z1} high byte -// ROL thrice +sta {z1}+1 rol $ff rol {z1} rol {z1}+1 @@ -18,4 +16,4 @@ rol {z1} rol {z1}+1 rol $ff rol {z1} -rol {z1}+1 +rol {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwsz1=vwsz2_ror_6.asm b/src/main/fragment/vwsz1=vwsz2_ror_6.asm new file mode 100644 index 000000000..526c5cc41 --- /dev/null +++ b/src/main/fragment/vwsz1=vwsz2_ror_6.asm @@ -0,0 +1,16 @@ +lda {z2} +sta $ff +lda {z2}+1 +sta {z1} +lda #0 +bit {z2}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_band_vwuc2.asm b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_band_vwuc2.asm new file mode 100644 index 000000000..7a477bb34 --- /dev/null +++ b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_band_vwuc2.asm @@ -0,0 +1,6 @@ +lda {c1},x +and #<{c2} +sta {z1} +lda {c1}+1,x +and #>{c2} +sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_minus_vwuc2.asm b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_minus_vwuc2.asm index ecd27d55e..80f366824 100644 --- a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_minus_vwuc2.asm +++ b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuxx_minus_vwuc2.asm @@ -1,7 +1,7 @@ sec lda {c1},x -sbc {c2} +sbc #<{c2} sta {z1} lda {c1}+1,x -sbc {c2}+1 +sbc #>{c2} sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_band_vwuc2.asm b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_band_vwuc2.asm new file mode 100644 index 000000000..370da45ef --- /dev/null +++ b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_band_vwuc2.asm @@ -0,0 +1,6 @@ +lda {c1},y +and #<{c2} +sta {z1} +lda {c1}+1,y +and #>{c2} +sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_minus_vwuc2.asm b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_minus_vwuc2.asm index 6b9762bfe..a41992f9d 100644 --- a/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_minus_vwuc2.asm +++ b/src/main/fragment/vwuz1=pwuc1_derefidx_vbuyy_minus_vwuc2.asm @@ -1,7 +1,7 @@ sec lda {c1},y -sbc {c2} +sbc #<{c2} sta {z1} lda {c1}+1,y -sbc {c2}+1 +sbc #>{c2} sta {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java index 759b1c6ff..67307d393 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java @@ -286,6 +286,8 @@ public class AsmFragmentInstanceSpecFactory { val = new ConstantBinary(new ConstantInteger(0xffL, SymbolType.BYTE), Operators.BOOL_AND, val); } else if(toType.getSizeBytes() == 2) { val = new ConstantBinary(new ConstantInteger(0xffffL, SymbolType.WORD), Operators.BOOL_AND, val); + } else if(toType.getSizeBytes() == 4) { + val = new ConstantBinary(new ConstantInteger(0xffffffffL, SymbolType.DWORD), Operators.BOOL_AND, val); } else { throw new InternalError("Not implemented " + toType); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java index d665509b8..d65c6c250 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1UnwindStructValues.java @@ -21,6 +21,7 @@ import java.util.concurrent.atomic.AtomicBoolean; /** Convert all struct values that are not used as pointers (address-of used or declared volatile) into variables representing each member */ public class Pass1UnwindStructValues extends Pass1Base { + public Pass1UnwindStructValues(Program program) { super(program); } @@ -271,6 +272,10 @@ public class Pass1UnwindStructValues extends Pass1Base { boolean modified = false; StructUnwinding.StructMemberUnwinding memberUnwinding = getStructMemberUnwinding(assignment.getlValue(), structType, structUnwinding, assignment, stmtIt, currentBlock); + if(memberUnwinding==POSTPONE_UNWINDING) { + return true; + } + if(memberUnwinding == null) { throw new CompileError("Cannot unwind struct assignment " + assignment.toString(getProgram(), false), assignment); } @@ -324,7 +329,9 @@ public class Pass1UnwindStructValues extends Pass1Base { if(sourceType.equals(structType)) { // Copying a struct - unwind to assigning each member! StructUnwinding.StructMemberUnwinding sourceMemberUnwinding = getStructMemberUnwinding((LValue) assignment.getrValue2(), structType, structUnwinding, assignment, stmtIt, currentBlock); - if(sourceMemberUnwinding != null) { + if(sourceMemberUnwinding==POSTPONE_UNWINDING) + modified = true; + if(sourceMemberUnwinding != null && sourceMemberUnwinding!=POSTPONE_UNWINDING) { List membersUnwound = new ArrayList<>(); stmtIt.previous(); for(String memberName : memberUnwinding.getMemberNames()) { @@ -355,6 +362,8 @@ public class Pass1UnwindStructValues extends Pass1Base { private StructUnwinding.StructMemberUnwinding getStructMemberUnwinding(LValue lValue, SymbolTypeStruct lValueType, StructUnwinding structUnwinding, Statement currentStmt, ListIterator stmtIt, ControlFlowBlock currentBlock) { if(lValue instanceof VariableRef) { return structUnwinding.getVariableUnwinding((VariableRef) lValue); + } else if(lValue instanceof StructMemberRef && ((StructMemberRef) lValue).getStruct() instanceof VariableRef) { + return POSTPONE_UNWINDING; } else if(lValue instanceof PointerDereferenceSimple) { return new StructMemberUnwindingPointerDerefSimple((PointerDereferenceSimple) lValue, lValueType.getStructDefinition(getScope()), stmtIt, currentBlock, currentStmt); } else if(lValue instanceof PointerDereferenceIndexed) { @@ -364,6 +373,18 @@ public class Pass1UnwindStructValues extends Pass1Base { } } + /** Singleton signalling that unwinding should be postponed. */ + public static final StructUnwinding.StructMemberUnwinding POSTPONE_UNWINDING = new StructUnwinding.StructMemberUnwinding() { + @Override + public List getMemberNames() { + return null; + } + + @Override + public LValue getMemberUnwinding(String memberName) { + return null; + } + }; /** Unwinding for a simple pointer deref to a struct. */ private class StructMemberUnwindingPointerDerefSimple implements StructUnwinding.StructMemberUnwinding { diff --git a/src/main/kc/stdlib/bitmap2.kc b/src/main/kc/stdlib/bitmap2.kc index 4ca9739dd..43a94789a 100644 --- a/src/main/kc/stdlib/bitmap2.kc +++ b/src/main/kc/stdlib/bitmap2.kc @@ -55,6 +55,10 @@ void bitmap_line(word x1, word y1, word x2, word y2) { word y = y1; word dx = abs_u16(x2-x1); word dy = abs_u16(y2-y1); + if(dx==0 && dy==0) { + bitmap_plot(x,(byte)y); + return; + } word sx = sgn_u16(x2-x1); word sy = sgn_u16(y2-y1); if(dx > dy) { diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 1d98fcc8f..216dcde66 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -44,7 +44,7 @@ public class TestPrograms { @Test public void testSplines() throws IOException, URISyntaxException { - compileAndCompare("complex/splines/splines"); + compileAndCompare("complex/splines/simple-splines"); } @Test @@ -410,6 +410,16 @@ public class TestPrograms { assertError("struct-err-0", "Unknown struct type"); } + @Test + public void testStruct9() throws IOException, URISyntaxException { + compileAndCompare("struct-9"); + } + + @Test + public void testStruct8() throws IOException, URISyntaxException { + compileAndCompare("struct-8"); + } + @Test public void testStruct7() throws IOException, URISyntaxException { compileAndCompare("struct-7"); diff --git a/src/test/kc/complex/splines/simple-splines.kc b/src/test/kc/complex/splines/simple-splines.kc new file mode 100644 index 000000000..e3946fdaf --- /dev/null +++ b/src/test/kc/complex/splines/simple-splines.kc @@ -0,0 +1,91 @@ +// Show a few simple splines using the splines library + +import "splines" +import "bitmap2" +import "time" +import "print" +import "c64" + +const char* PRINT_SCREEN = 0x0400; +const char* BITMAP_SCREEN = 0x5c00; +const char* BITMAP_GRAPHICS = 0x6000; + +enum SegmentType { MOVE_TO, SPLINE_TO, LINE_TO}; + +struct Segment { + enum SegmentType type; + struct SplineVector16 to; + struct SplineVector16 via; +}; + +// True type letter a +struct Segment[21] letter_c; + +void main() { + letter_c[0] = { MOVE_TO, {108,146}, {0,0} }; + letter_c[1] = { SPLINE_TO, {89,182}, {103,169} }; + letter_c[2] = { SPLINE_TO, {59,195}, {75,195} }; + letter_c[3] = { SPLINE_TO, {23,178}, {38,195} }; + letter_c[4] = { SPLINE_TO, {9,132}, {9,161} }; + letter_c[5] = { SPLINE_TO, {25,87}, {9,104} }; + letter_c[6] = { SPLINE_TO, {65,69}, {42,69} }; + letter_c[7] = { SPLINE_TO, {93,79}, {82,69} }; + letter_c[8] = { SPLINE_TO, {105,98}, {105,88} }; + letter_c[9] = { SPLINE_TO, {102,106}, {105,103} }; + letter_c[10] = { SPLINE_TO, {93,109}, {98,109} }; + letter_c[11] = { SPLINE_TO, {81,104}, {85,109} }; + letter_c[12] = { SPLINE_TO, {78,93}, {79,101} }; + letter_c[13] = { SPLINE_TO, {73,82}, {78,86} }; + letter_c[14] = { SPLINE_TO, {61,78}, {69,78} }; + letter_c[15] = { SPLINE_TO, {40,88}, {48,78} }; + letter_c[16] = { SPLINE_TO, {29,121}, {29,100} }; + letter_c[17] = { SPLINE_TO, {40,158}, {29,142} }; + letter_c[18] = { SPLINE_TO, {68,174}, {50,174} }; + letter_c[19] = { SPLINE_TO, {91,166}, {80,174} }; + letter_c[20] = { SPLINE_TO, {104,144}, {98,160} }; + letter_c[21] = { LINE_TO, {108,146}, {0,0} }; + + bitmap_init(BITMAP_GRAPHICS, BITMAP_SCREEN); + bitmap_clear(BLACK, WHITE); + vicSelectGfxBank(BITMAP_SCREEN); + *D018 = toD018(BITMAP_SCREEN, BITMAP_GRAPHICS); + *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3; + + struct SplineVector16 current = {0,0}; + for( byte i: 0..sizeof(letter_c)/sizeof(struct Segment)) { + //for( byte i: 0..7) { + struct Segment segment = letter_c[i]; + if(segment.type==MOVE_TO) { + current = segment.to; + } else if(segment.type==SPLINE_TO) { + struct SplineVector16 to = segment.to; + struct SplineVector16 via = segment.via; + spline_8segB(current, via, to); + bitmap_plot_spline_8seg(); + current = to; + } else { + struct SplineVector16 to = segment.to; + bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)to.x, (unsigned int)to.y); + current = to; + } + } + + while(true) { (*(PRINT_SCREEN+999))++; } +} + +// Plot the spline in the SPLINE_8SEG array +void bitmap_plot_spline_8seg() { + struct SplineVector16 current = SPLINE_8SEG[0]; + for(char n:1..8) { + struct SplineVector16 to = SPLINE_8SEG[n]; + bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)to.x, (unsigned int)to.y); + //bitmap_plot((unsigned int)current.x, (unsigned char)current.y); + current = to; + } +} + +void bitmap_plot_spline_16seg() { + for( char n:0..16) { + bitmap_plot((unsigned int)SPLINE_16SEG[n].x, p.x, < > p.y); - // p = p + i; + for( char n: 0..15) { + SPLINE_16SEG[n] = { (signed word)>(p.x+0x8000), (signed word)>(p.y+0x8000) }; + // P = P + I; p = { p.x+i.x, p.y+i.y }; - // i = i + j; + // I = I + J; i = { i.x+j.x, i.y+j.y }; } - + SPLINE_16SEG[16] = { (signed word)>(p.x+0x8000), (signed word)>(p.y+0x8000) }; } +// Array filled with spline segment points by splinePlot_8() +struct SplineVector16[9] SPLINE_8SEG; - -// Print a spline vector -void print_spline16(struct SplineVector16 p) { - print_char('('); - print_sword(p.x); - print_char(','); - print_sword(p.y); - print_char(')'); +// Generate a 8-segment quadratic spline using 32-bit fixed point 1/$10000-format math 16 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// This function can handle all signed int values in the points. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +void spline_8seg(struct SplineVector16 p0, struct SplineVector16 p1, struct SplineVector16 p2) { + // A = P2 - 2*P1 + P0 + struct SplineVector16 a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y}; + // B = 2*P1 - 2*P0 + struct SplineVector16 b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 }; + // I = A*Dt*Dt + B*Dt - Fixed point s[16.16] + // Dt = 1/8 and Dt*Dt=1/64 - we can multiply using only bitshifts + struct SplineVector32 i = { (signed long)a.x*0x100*0x4 + (signed long)b.x*0x100*0x20, (signed long)a.y*0x100*0x4 + (signed long)b.y*0x100*0x20 }; + // J = 2*A*Dt*Dt - Fixed point s[16.16] + // Dt = 1/8 and Dt*Dt=1/64 - we can multiply using only bitshifts + struct SplineVector32 j = { (signed long)a.x*0x100*0x8, (signed long)a.y*0x100*0x8 }; + // P = P0 - Fixed point s[16.16] + struct SplineVector32 p = { (signed long)p0.x*0x10000, (signed long)p0.y*0x10000 }; + for( char n: 0..7) { + SPLINE_8SEG[n] = { (signed word)>(p.x+0x8000), (signed word)>(p.y+0x8000) }; + // P = P + I; + p = { p.x+i.x, p.y+i.y }; + // I = I + J; + i = { i.x+j.x, i.y+j.y }; + } + SPLINE_8SEG[8] = { (signed word)>(p.x+0x8000), (signed word)>(p.y+0x8000) }; } -// Print a spline vector -void print_spline32(struct SplineVector32 p) { - print_char('('); - print_sdword(p.x); - print_char(','); - print_sdword(p.y); - print_char(')'); +// Generate a 8-segment quadratic spline using 16-bit fixed point 1/64-format math (6 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// Point values must be within [-200 ; 1ff] for the calculation to not overflow. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +void spline_8segB(struct SplineVector16 p0, struct SplineVector16 p1, struct SplineVector16 p2) { + // A = P2 - 2*P1 + P0 + struct SplineVector16 a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y}; + // B = 2*P1 - 2*P0 + struct SplineVector16 b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 }; + // I = A*Dt*Dt + B*Dt - I is in fixed point 1/64-format (6 decimal bits) [-200 ; 1ff] + // Dt = 1/8 and Dt*Dt=1/64 - we can multiply using only bitshifts. Dt*Dt is exactly==1 in the fixed point format. + struct SplineVector16 i = { a.x + b.x*8, a.y + b.y*8}; + // J = 2*A*Dt*Dt - J is in fixed point 1/64-format (6 decimal bits) [-200 ; 1ff] + // Dt = 1/8 and Dt*Dt=1/64 - we can multiply using only bitshifts. Dt*Dt is exactly==1 in the fixed point format. + struct SplineVector16 j = { a.x*2, a.y*2 }; + // P = P0 - P is in fixed point 1/64-format (6 decimal bits) [-200 ; 1ff] + struct SplineVector16 p = { p0.x*0x40, p0.y*0x40 }; + for( char n: 0..7) { + // Get the rounded result + SPLINE_8SEG[n] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 }; + // P = P + I; + p = { p.x+i.x, p.y+i.y }; + // I = I + J; + i = { i.x+j.x, i.y+j.y }; + } + SPLINE_8SEG[8] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 }; } diff --git a/src/test/kc/struct-8.kc b/src/test/kc/struct-8.kc new file mode 100644 index 000000000..b4a4a44f9 --- /dev/null +++ b/src/test/kc/struct-8.kc @@ -0,0 +1,21 @@ +// Minimal struct - nested struct where a sub-struct is assigned out + +struct Point { + byte x; + byte y; +}; + +struct Circle { + struct Point center; + byte radius; +}; + +void main() { + struct Point p = { 10, 10 }; + struct Circle c = { p, 5 }; + struct Point point = c.center; + const byte* SCREEN = 0x0400; + SCREEN[0] = point.x; + SCREEN[1] = point.y; + SCREEN[1] = c.radius; +} diff --git a/src/test/kc/struct-9.kc b/src/test/kc/struct-9.kc new file mode 100644 index 000000000..5fae7ca0e --- /dev/null +++ b/src/test/kc/struct-9.kc @@ -0,0 +1,22 @@ +// Minimal struct - nesting structs + +struct Point { + byte x; + byte y; +}; + +struct Circle { + struct Point center; + byte radius; +}; + +void main() { + struct Point p = { 10, 10 }; + struct Circle c; + c.center = p; + c.radius = 12; + const byte* SCREEN = 0x0400; + SCREEN[0] = c.center.x; + SCREEN[1] = c.center.y; + SCREEN[2] = c.radius; +} diff --git a/src/test/ref/bitmap-plot-2.asm b/src/test/ref/bitmap-plot-2.asm index 6c1f18775..a9e532df9 100644 --- a/src/test/ref/bitmap-plot-2.asm +++ b/src/test/ref/bitmap-plot-2.asm @@ -165,19 +165,12 @@ main: { cmp #$80 ror _17+1 ror _17 - lda #$64 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda y - adc $fe + clc + adc #<$64 sta y lda y+1 - adc $ff + adc #>$64 sta y+1 lda y tax diff --git a/src/test/ref/bitmap-plot-2.log b/src/test/ref/bitmap-plot-2.log index b5f1369f9..04e070ea7 100644 --- a/src/test/ref/bitmap-plot-2.log +++ b/src/test/ref/bitmap-plot-2.log @@ -4602,19 +4602,12 @@ main: { ror _17+1 ror _17 // [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$17 -- vwsz1=vbsc1_plus_vwsz2 - lda #$64 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda _17 - adc $fe + clc + adc #<$64 sta y lda _17+1 - adc $ff + adc #>$64 sta y+1 // [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuz1=_byte_vwuz2 lda y @@ -6598,34 +6591,34 @@ Uplift Scope [bitmap_clear] Uplift Scope [init_irq] Uplift Scope [irq] -Uplifting [mul16u] best 27259 combination zp ZP_DWORD:23 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:27 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:21 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:17 [ mul16u::b#0 ] zp ZP_WORD:19 [ mul16u::b#1 ] zp ZP_DWORD:121 [ mul16u::return#2 ] zp ZP_DWORD:196 [ mul16u::return#3 ] -Uplifting [main] best 27259 combination zp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp ZP_WORD:71 [ main::$32 ] zp ZP_WORD:73 [ main::$34 ] zp ZP_DWORD:81 [ main::xpos#0 ] zp ZP_WORD:87 [ main::$11 ] zp ZP_WORD:91 [ main::$33 ] zp ZP_WORD:93 [ main::$35 ] zp ZP_DWORD:101 [ main::ypos#0 ] zp ZP_WORD:107 [ main::$17 ] zp ZP_WORD:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp ZP_WORD:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp ZP_WORD:75 [ main::cos_x#0 ] zp ZP_WORD:85 [ main::$10 ] zp ZP_WORD:95 [ main::sin_y#0 ] zp ZP_WORD:105 [ main::$16 ] zp ZP_WORD:109 [ main::y#0 ] zp ZP_WORD:4 [ main::r#10 main::r#1 ] zp ZP_WORD:89 [ main::x#0 ] -Uplifting [divr16u] best 27049 combination zp ZP_WORD:63 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:67 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:65 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:210 [ divr16u::return#2 ] zp ZP_WORD:214 [ divr16u::return#3 ] -Uplifting [mul16s] best 27049 combination zp ZP_WORD:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] zp ZP_WORD:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] zp ZP_DWORD:77 [ mul16s::return#3 ] zp ZP_DWORD:97 [ mul16s::return#4 ] zp ZP_DWORD:154 [ mul16s::return#2 ] zp ZP_DWORD:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_DWORD:133 [ mul16s::return#0 ] zp ZP_WORD:125 [ mul16s::$9 ] zp ZP_WORD:127 [ mul16s::$16 ] zp ZP_WORD:129 [ mul16s::$13 ] zp ZP_WORD:131 [ mul16s::$17 ] -Uplifting [bitmap_init] best 26539 combination zp ZP_WORD:41 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:142 [ bitmap_init::$5 ] zp ZP_BYTE:143 [ bitmap_init::$6 ] zp ZP_BYTE:140 [ bitmap_init::$7 ] +Uplifting [mul16u] best 27094 combination zp ZP_DWORD:23 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:27 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:21 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:17 [ mul16u::b#0 ] zp ZP_WORD:19 [ mul16u::b#1 ] zp ZP_DWORD:121 [ mul16u::return#2 ] zp ZP_DWORD:196 [ mul16u::return#3 ] +Uplifting [main] best 27094 combination zp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp ZP_WORD:71 [ main::$32 ] zp ZP_WORD:73 [ main::$34 ] zp ZP_DWORD:81 [ main::xpos#0 ] zp ZP_WORD:87 [ main::$11 ] zp ZP_WORD:91 [ main::$33 ] zp ZP_WORD:93 [ main::$35 ] zp ZP_DWORD:101 [ main::ypos#0 ] zp ZP_WORD:107 [ main::$17 ] zp ZP_WORD:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp ZP_WORD:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp ZP_WORD:75 [ main::cos_x#0 ] zp ZP_WORD:85 [ main::$10 ] zp ZP_WORD:95 [ main::sin_y#0 ] zp ZP_WORD:105 [ main::$16 ] zp ZP_WORD:109 [ main::y#0 ] zp ZP_WORD:4 [ main::r#10 main::r#1 ] zp ZP_WORD:89 [ main::x#0 ] +Uplifting [divr16u] best 26884 combination zp ZP_WORD:63 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:67 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:65 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:210 [ divr16u::return#2 ] zp ZP_WORD:214 [ divr16u::return#3 ] +Uplifting [mul16s] best 26884 combination zp ZP_WORD:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] zp ZP_WORD:11 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 ] zp ZP_DWORD:77 [ mul16s::return#3 ] zp ZP_DWORD:97 [ mul16s::return#4 ] zp ZP_DWORD:154 [ mul16s::return#2 ] zp ZP_DWORD:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_DWORD:133 [ mul16s::return#0 ] zp ZP_WORD:125 [ mul16s::$9 ] zp ZP_WORD:127 [ mul16s::$16 ] zp ZP_WORD:129 [ mul16s::$13 ] zp ZP_WORD:131 [ mul16s::$17 ] +Uplifting [bitmap_init] best 26374 combination zp ZP_WORD:41 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:142 [ bitmap_init::$5 ] zp ZP_BYTE:143 [ bitmap_init::$6 ] zp ZP_BYTE:140 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [sin16s] best 26539 combination zp ZP_DWORD:52 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:152 [ sin16s::return#0 ] zp ZP_WORD:56 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:164 [ sin16s::$4 ] zp ZP_WORD:172 [ sin16s::x2#0 ] zp ZP_WORD:180 [ sin16s::x3_6#0 ] zp ZP_WORD:186 [ sin16s::x4#0 ] zp ZP_WORD:190 [ sin16s::x5#0 ] zp ZP_WORD:192 [ sin16s::x5_128#0 ] zp ZP_WORD:176 [ sin16s::x3#0 ] zp ZP_WORD:194 [ sin16s::usinx#1 ] zp ZP_WORD:168 [ sin16s::x1#0 ] zp ZP_WORD:182 [ sin16s::usinx#0 ] zp ZP_BYTE:51 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 26523 combination zp ZP_WORD:58 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:60 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:170 [ mulu16_sel::return#0 ] zp ZP_WORD:174 [ mulu16_sel::return#1 ] zp ZP_WORD:178 [ mulu16_sel::return#2 ] zp ZP_WORD:184 [ mulu16_sel::return#10 ] zp ZP_WORD:188 [ mulu16_sel::return#11 ] zp ZP_DWORD:200 [ mulu16_sel::$0 ] zp ZP_DWORD:204 [ mulu16_sel::$1 ] zp ZP_WORD:208 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen2] best 26523 combination zp ZP_DWORD:158 [ sin16s_gen2::$5 ] zp ZP_WORD:49 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:162 [ sin16s_gen2::$8 ] zp ZP_DWORD:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:148 [ sin16s_gen2::step#0 ] -Uplifting [] best 26523 combination zp ZP_BYTE:70 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ] zp ZP_WORD:224 [ rem16u#1 ] -Uplifting [memset] best 26507 combination zp ZP_WORD:36 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:138 [ memset::end#0 ] zp ZP_WORD:31 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:33 [ memset::str#3 ] -Uplifting [bitmap_plot] best 26490 combination reg byte x [ bitmap_plot::y#0 ] zp ZP_WORD:116 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:112 [ bitmap_plot::x#0 ] zp ZP_WORD:118 [ bitmap_plot::plotter#1 ] zp ZP_WORD:114 [ bitmap_plot::plotter#0 ] -Uplifting [div32u16u] best 26490 combination zp ZP_DWORD:144 [ div32u16u::return#2 ] zp ZP_WORD:216 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:218 [ div32u16u::return#0 ] zp ZP_WORD:212 [ div32u16u::quotient_hi#0 ] -Uplifting [bitmap_clear] best 26490 combination -Uplifting [init_irq] best 26490 combination -Uplifting [irq] best 26490 combination +Uplifting [sin16s] best 26374 combination zp ZP_DWORD:52 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:152 [ sin16s::return#0 ] zp ZP_WORD:56 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:164 [ sin16s::$4 ] zp ZP_WORD:172 [ sin16s::x2#0 ] zp ZP_WORD:180 [ sin16s::x3_6#0 ] zp ZP_WORD:186 [ sin16s::x4#0 ] zp ZP_WORD:190 [ sin16s::x5#0 ] zp ZP_WORD:192 [ sin16s::x5_128#0 ] zp ZP_WORD:176 [ sin16s::x3#0 ] zp ZP_WORD:194 [ sin16s::usinx#1 ] zp ZP_WORD:168 [ sin16s::x1#0 ] zp ZP_WORD:182 [ sin16s::usinx#0 ] zp ZP_BYTE:51 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 26358 combination zp ZP_WORD:58 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:60 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:170 [ mulu16_sel::return#0 ] zp ZP_WORD:174 [ mulu16_sel::return#1 ] zp ZP_WORD:178 [ mulu16_sel::return#2 ] zp ZP_WORD:184 [ mulu16_sel::return#10 ] zp ZP_WORD:188 [ mulu16_sel::return#11 ] zp ZP_DWORD:200 [ mulu16_sel::$0 ] zp ZP_DWORD:204 [ mulu16_sel::$1 ] zp ZP_WORD:208 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen2] best 26358 combination zp ZP_DWORD:158 [ sin16s_gen2::$5 ] zp ZP_WORD:49 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:162 [ sin16s_gen2::$8 ] zp ZP_DWORD:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:148 [ sin16s_gen2::step#0 ] +Uplifting [] best 26358 combination zp ZP_BYTE:70 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ] zp ZP_WORD:224 [ rem16u#1 ] +Uplifting [memset] best 26342 combination zp ZP_WORD:36 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:138 [ memset::end#0 ] zp ZP_WORD:31 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:33 [ memset::str#3 ] +Uplifting [bitmap_plot] best 26325 combination reg byte x [ bitmap_plot::y#0 ] zp ZP_WORD:116 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:112 [ bitmap_plot::x#0 ] zp ZP_WORD:118 [ bitmap_plot::plotter#1 ] zp ZP_WORD:114 [ bitmap_plot::plotter#0 ] +Uplifting [div32u16u] best 26325 combination zp ZP_DWORD:144 [ div32u16u::return#2 ] zp ZP_WORD:216 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:218 [ div32u16u::return#0 ] zp ZP_WORD:212 [ div32u16u::quotient_hi#0 ] +Uplifting [bitmap_clear] best 26325 combination +Uplifting [init_irq] best 26325 combination +Uplifting [irq] best 26325 combination Attempting to uplift remaining variables inzp ZP_BYTE:70 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ] -Uplifting [] best 26490 combination zp ZP_BYTE:70 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ] +Uplifting [] best 26325 combination zp ZP_BYTE:70 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] -Uplifting [main] best 26490 combination zp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] +Uplifting [main] best 26325 combination zp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:142 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 26430 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 26265 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:143 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 26370 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 26205 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:140 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 26370 combination zp ZP_BYTE:140 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 26205 combination zp ZP_BYTE:140 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 26370 combination zp ZP_BYTE:51 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 26205 combination zp ZP_BYTE:51 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ main::r#10 main::r#1 ] ] with [ zp ZP_WORD:9 [ mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:56 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:194 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:58 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:176 [ sin16s::x3#0 ] ] - score: 2 @@ -6989,19 +6982,12 @@ main: { ror _17+1 ror _17 // [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$17 -- vwsz1=vbsc1_plus_vwsz1 - lda #$64 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda y - adc $fe + clc + adc #<$64 sta y lda y+1 - adc $ff + adc #>$64 sta y+1 // [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuxx=_byte_vwuz1 lda y @@ -9083,7 +9069,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 20601 +Score: 20436 // File Comments // Tests the simple bitmap plotter - and counts plots per frame in an IRQ @@ -9340,19 +9326,12 @@ main: { ror _17 // 100 + ((signed word)>ypos)>>2 // [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$17 -- vwsz1=vbsc1_plus_vwsz1 - lda #$64 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda y - adc $fe + clc + adc #<$64 sta y lda y+1 - adc $ff + adc #>$64 sta y+1 // bitmap_plot(x, (byte)y) // [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuxx=_byte_vwuz1 diff --git a/src/test/ref/bitmap-plot-3.asm b/src/test/ref/bitmap-plot-3.asm index eb016fced..1b6c91f69 100644 --- a/src/test/ref/bitmap-plot-3.asm +++ b/src/test/ref/bitmap-plot-3.asm @@ -108,6 +108,18 @@ bitmap_line: { sbc y1+1 sta abs_u16.w+1 jsr abs_u16 + lda dx + bne b1 + lda dx+1 + bne b1 + lda dy + bne !+ + lda dy+1 + bne !b4+ + jmp b4 + !b4: + !: + b1: lda x2 sec sbc x1 @@ -130,11 +142,11 @@ bitmap_line: { jsr sgn_u16 lda dy+1 cmp dx+1 - bcc b1 + bcc b2 bne !+ lda dy cmp dx - bcc b1 + bcc b2 !: lda dx+1 lsr @@ -142,7 +154,7 @@ bitmap_line: { lda dx ror sta e - b4: + b6: lda y tax jsr bitmap_plot @@ -164,9 +176,9 @@ bitmap_line: { bne !+ lda e cmp dy - beq b5 + beq b7 !: - bcc b5 + bcc b7 lda x clc adc sx @@ -181,26 +193,26 @@ bitmap_line: { lda e+1 sbc dy+1 sta e+1 - b5: + b7: lda y+1 cmp y2+1 - bne b4 + bne b6 lda y cmp y2 - bne b4 - b2: + bne b6 + b3: lda y tax jsr bitmap_plot rts - b1: + b2: lda dy+1 lsr sta e1+1 lda dy ror sta e1 - b7: + b9: lda y tax jsr bitmap_plot @@ -222,9 +234,9 @@ bitmap_line: { bne !+ lda e1 cmp dx - beq b8 + beq b10 !: - bcc b8 + bcc b10 lda y clc adc sy @@ -239,14 +251,19 @@ bitmap_line: { lda e1+1 sbc dx+1 sta e1+1 - b8: + b10: lda x+1 cmp x2+1 - bne b7 + bne b9 lda x cmp x2 - bne b7 - jmp b2 + bne b9 + jmp b3 + b4: + lda y1 + tax + jsr bitmap_plot + rts } // Plot a single dot in the bitmap // bitmap_plot(word zeropage(8) x, byte register(X) y) diff --git a/src/test/ref/bitmap-plot-3.cfg b/src/test/ref/bitmap-plot-3.cfg index c57718b15..01d4fdb78 100644 --- a/src/test/ref/bitmap-plot-3.cfg +++ b/src/test/ref/bitmap-plot-3.cfg @@ -47,194 +47,205 @@ bitmap_line: scope:[bitmap_line] from main::@1 [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [24] call abs_u16 [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 - to:bitmap_line::@10 -bitmap_line::@10: scope:[bitmap_line] from bitmap_line + to:bitmap_line::@12 +bitmap_line::@12: scope:[bitmap_line] from bitmap_line [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [28] call abs_u16 [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 - to:bitmap_line::@11 -bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@10 - [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 - [32] call sgn_u16 - [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 - to:bitmap_line::@12 -bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@11 - [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 - [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 - [36] call sgn_u16 - [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 - [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 - to:bitmap_line::@3 -bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@13 - [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 - to:bitmap_line::@4 -bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@5 - [41] (word) bitmap_line::e#3 ← phi( bitmap_line::@3/(word) bitmap_line::e#0 bitmap_line::@5/(word) bitmap_line::e#6 ) - [41] (word) bitmap_line::x#11 ← phi( bitmap_line::@3/(word) bitmap_line::x1#0 bitmap_line::@5/(word) bitmap_line::x#10 ) - [41] (word) bitmap_line::y#3 ← phi( bitmap_line::@3/(word) bitmap_line::y1#0 bitmap_line::@5/(word) bitmap_line::y#1 ) - [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 - [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 - [44] call bitmap_plot + [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 + [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + to:bitmap_line::@1 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 + [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 + [34] call sgn_u16 + [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 to:bitmap_line::@14 -bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@4 - [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 - [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 - [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 - to:bitmap_line::@6 -bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@14 - [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 - [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 - to:bitmap_line::@5 -bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@14 bitmap_line::@6 - [50] (word) bitmap_line::e#6 ← phi( bitmap_line::@14/(word) bitmap_line::e#1 bitmap_line::@6/(word) bitmap_line::e#2 ) - [50] (word) bitmap_line::x#10 ← phi( bitmap_line::@14/(word) bitmap_line::x#11 bitmap_line::@6/(word) bitmap_line::x#1 ) - [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 - to:bitmap_line::@2 -bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@8 - [52] (word) bitmap_line::x#5 ← phi( bitmap_line::@8/(word) bitmap_line::x#13 bitmap_line::@5/(word) bitmap_line::x#10 ) - [52] (word) bitmap_line::y#6 ← phi( bitmap_line::@8/(word) bitmap_line::y#11 bitmap_line::@5/(word) bitmap_line::y#1 ) - [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 - [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 - [55] call bitmap_plot - to:bitmap_line::@return -bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@2 - [56] return - to:@return -bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 - [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 - to:bitmap_line::@7 -bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@1 bitmap_line::@8 - [58] (word) bitmap_line::e1#3 ← phi( bitmap_line::@1/(word) bitmap_line::e1#0 bitmap_line::@8/(word) bitmap_line::e1#6 ) - [58] (word) bitmap_line::x#6 ← phi( bitmap_line::@1/(word) bitmap_line::x1#0 bitmap_line::@8/(word) bitmap_line::x#13 ) - [58] (word) bitmap_line::y#13 ← phi( bitmap_line::@1/(word) bitmap_line::y1#0 bitmap_line::@8/(word) bitmap_line::y#11 ) - [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 - [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - [61] call bitmap_plot +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 + [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 + [38] call sgn_u16 + [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@15 -bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@7 - [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 - [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 - [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 - to:bitmap_line::@9 -bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@15 - [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 - [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 +bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 + [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + to:bitmap_line::@5 +bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 + [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + to:bitmap_line::@6 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 + [43] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [43] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x1#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [43] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y1#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [46] call bitmap_plot + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 + [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 to:bitmap_line::@8 -bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@15 bitmap_line::@9 - [67] (word) bitmap_line::e1#6 ← phi( bitmap_line::@9/(word) bitmap_line::e1#2 bitmap_line::@15/(word) bitmap_line::e1#1 ) - [67] (word) bitmap_line::y#11 ← phi( bitmap_line::@9/(word) bitmap_line::y#2 bitmap_line::@15/(word) bitmap_line::y#13 ) - [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 - to:bitmap_line::@2 -bitmap_plot: scope:[bitmap_plot] from bitmap_line::@2 bitmap_line::@4 bitmap_line::@7 - [69] (word) bitmap_plot::x#3 ← phi( bitmap_line::@2/(word) bitmap_plot::x#1 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@7/(word) bitmap_plot::x#2 ) - [69] (byte) bitmap_plot::y#3 ← phi( bitmap_line::@2/(byte) bitmap_plot::y#1 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@7/(byte) bitmap_plot::y#2 ) - [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) - [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 - [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 - [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 - [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 + [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 + [52] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [52] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 + to:bitmap_line::@3 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 + [54] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [54] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [57] call bitmap_plot + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 + [58] return + to:@return +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 + [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + to:bitmap_line::@9 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 + [60] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [60] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x1#0 ) + [60] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y1#0 ) + [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [63] call bitmap_plot + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 + [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + to:bitmap_line::@11 +bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 + [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + to:bitmap_line::@10 +bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 + [69] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [69] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 + to:bitmap_line::@3 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 + [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 + [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 + [73] call bitmap_plot + to:bitmap_line::@return +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 + [74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 ) + [74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 ) + [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 + [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 + [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [75] return + [80] return to:@return -sgn_u16: scope:[sgn_u16] from bitmap_line::@11 bitmap_line::@12 - [76] (word) sgn_u16::w#2 ← phi( bitmap_line::@11/(word) sgn_u16::w#0 bitmap_line::@12/(word) sgn_u16::w#1 ) - [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 - [78] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 - [79] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 + [81] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 to:sgn_u16::@return sgn_u16::@1: scope:[sgn_u16] from sgn_u16 - [80] phi() + [85] phi() to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 - [81] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) - [82] return + [86] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [87] return to:@return -abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@10 - [83] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@10/(word) abs_u16::w#1 ) - [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 - [85] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 - [86] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 + [88] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 to:abs_u16::@return abs_u16::@1: scope:[abs_u16] from abs_u16 - [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 - [88] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) - [89] return - to:@return -bitmap_clear: scope:[bitmap_clear] from main::@4 - [90] phi() - [91] call memset - to:bitmap_clear::@1 -bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear - [92] phi() - [93] call memset - to:bitmap_clear::@return -bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [93] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) [94] return to:@return +bitmap_clear: scope:[bitmap_clear] from main::@4 + [95] phi() + [96] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [97] phi() + [98] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [99] return + to:@return memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [95] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [95] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) - [95] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [96] if((word) memset::num#2<=(byte) 0) goto memset::@return + [100] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [100] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) + [100] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [101] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@2 - [99] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) - [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 - [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 - [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + [104] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [103] return + [108] return to:@return bitmap_init: scope:[bitmap_init] from main - [104] phi() + [109] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [105] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [105] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [106] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [107] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 - [108] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + [110] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [110] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [109] phi() + [114] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [110] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) - [111] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [112] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + [115] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [113] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [113] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 - [115] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [116] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 - [117] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [118] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [119] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [120] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + [118] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [118] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [122] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [122] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [123] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [124] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + [127] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [125] return + [130] return to:@return diff --git a/src/test/ref/bitmap-plot-3.log b/src/test/ref/bitmap-plot-3.log index 236d56754..c1b5ce8b3 100644 --- a/src/test/ref/bitmap-plot-3.log +++ b/src/test/ref/bitmap-plot-3.log @@ -18,9 +18,10 @@ Culled Empty Block (label) bitmap_init::@8 Culled Empty Block (label) @9 Culled Empty Block (label) @10 Culled Empty Block (label) @11 -Culled Empty Block (label) bitmap_line::@7 -Culled Empty Block (label) bitmap_line::@8 -Culled Empty Block (label) bitmap_line::@12 +Culled Empty Block (label) bitmap_line::@5 +Culled Empty Block (label) bitmap_line::@10 +Culled Empty Block (label) bitmap_line::@11 +Culled Empty Block (label) bitmap_line::@15 Culled Empty Block (label) @12 Culled Empty Block (label) abs_u16::@4 Culled Empty Block (label) abs_u16::@2 @@ -223,14 +224,14 @@ bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@2 return to:@return -bitmap_plot: scope:[bitmap_plot] from bitmap_line::@2 bitmap_line::@4 bitmap_line::@9 - (word) bitmap_plot::x#3 ← phi( bitmap_line::@2/(word) bitmap_plot::x#1 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@9/(word) bitmap_plot::x#2 ) - (byte) bitmap_plot::y#3 ← phi( bitmap_line::@2/(byte) bitmap_plot::y#1 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@9/(byte) bitmap_plot::y#2 ) - (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3), *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) } +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@12 bitmap_line::@3 bitmap_line::@4 bitmap_line::@7 + (word) bitmap_plot::x#4 ← phi( bitmap_line::@12/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@7/(word) bitmap_plot::x#1 ) + (byte) bitmap_plot::y#4 ← phi( bitmap_line::@12/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@7/(byte) bitmap_plot::y#1 ) + (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4), *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) } (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0 - (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (number) $fff8 + (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8 (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (number~) bitmap_plot::$1 - (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 + (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot @@ -247,12 +248,12 @@ bitmap_line: scope:[bitmap_line] from main::@1 (word) abs_u16::w#0 ← (word~) bitmap_line::$0 call abs_u16 (word) abs_u16::return#0 ← (word) abs_u16::return#4 - to:bitmap_line::@13 -bitmap_line::@13: scope:[bitmap_line] from bitmap_line - (word) bitmap_line::x#17 ← phi( bitmap_line/(word) bitmap_line::x#0 ) - (word) bitmap_line::y#17 ← phi( bitmap_line/(word) bitmap_line::y#0 ) - (word) bitmap_line::x1#3 ← phi( bitmap_line/(word) bitmap_line::x1#1 ) - (word) bitmap_line::x2#4 ← phi( bitmap_line/(word) bitmap_line::x2#1 ) + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line + (word) bitmap_line::x#16 ← phi( bitmap_line/(word) bitmap_line::x#0 ) + (word) bitmap_line::y#16 ← phi( bitmap_line/(word) bitmap_line::y#0 ) + (word) bitmap_line::x1#4 ← phi( bitmap_line/(word) bitmap_line::x1#1 ) + (word) bitmap_line::x2#7 ← phi( bitmap_line/(word) bitmap_line::x2#1 ) (word) bitmap_line::y1#2 ← phi( bitmap_line/(word) bitmap_line::y1#1 ) (word) bitmap_line::y2#1 ← phi( bitmap_line/(word) bitmap_line::y2#4 ) (word) abs_u16::return#5 ← phi( bitmap_line/(word) abs_u16::return#0 ) @@ -262,196 +263,221 @@ bitmap_line::@13: scope:[bitmap_line] from bitmap_line (word) abs_u16::w#1 ← (word~) bitmap_line::$2 call abs_u16 (word) abs_u16::return#1 ← (word) abs_u16::return#4 - to:bitmap_line::@14 -bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@13 - (word) bitmap_line::x#16 ← phi( bitmap_line::@13/(word) bitmap_line::x#17 ) - (word) bitmap_line::y#16 ← phi( bitmap_line::@13/(word) bitmap_line::y#17 ) - (word) bitmap_line::dx#9 ← phi( bitmap_line::@13/(word) bitmap_line::dx#0 ) - (word) bitmap_line::y1#4 ← phi( bitmap_line::@13/(word) bitmap_line::y1#2 ) - (word) bitmap_line::y2#5 ← phi( bitmap_line::@13/(word) bitmap_line::y2#1 ) - (word) bitmap_line::x1#2 ← phi( bitmap_line::@13/(word) bitmap_line::x1#3 ) - (word) bitmap_line::x2#2 ← phi( bitmap_line::@13/(word) bitmap_line::x2#4 ) - (word) abs_u16::return#6 ← phi( bitmap_line::@13/(word) abs_u16::return#1 ) + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@16 + (word) bitmap_line::y1#5 ← phi( bitmap_line::@16/(word) bitmap_line::y1#2 ) + (word) bitmap_line::y2#8 ← phi( bitmap_line::@16/(word) bitmap_line::y2#1 ) + (word) bitmap_line::x#10 ← phi( bitmap_line::@16/(word) bitmap_line::x#16 ) + (word) bitmap_line::y#10 ← phi( bitmap_line::@16/(word) bitmap_line::y#16 ) + (word) bitmap_line::x1#3 ← phi( bitmap_line::@16/(word) bitmap_line::x1#4 ) + (word) bitmap_line::x2#4 ← phi( bitmap_line::@16/(word) bitmap_line::x2#7 ) + (word) bitmap_line::dx#1 ← phi( bitmap_line::@16/(word) bitmap_line::dx#0 ) + (word) abs_u16::return#6 ← phi( bitmap_line::@16/(word) abs_u16::return#1 ) (word~) bitmap_line::$3 ← (word) abs_u16::return#6 (word) bitmap_line::dy#0 ← (word~) bitmap_line::$3 - (word~) bitmap_line::$4 ← (word) bitmap_line::x2#2 - (word) bitmap_line::x1#2 - (word) sgn_u16::w#0 ← (word~) bitmap_line::$4 + (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0 + (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0 + (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5 + (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6 + if((bool~) bitmap_line::$7) goto bitmap_line::@1 + to:bitmap_line::@4 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@17 + (word) bitmap_line::x#19 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 ) + (word) bitmap_line::y#19 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 ) + (word) bitmap_line::dy#9 ← phi( bitmap_line::@17/(word) bitmap_line::dy#0 ) + (word) bitmap_line::dx#10 ← phi( bitmap_line::@17/(word) bitmap_line::dx#1 ) + (word) bitmap_line::y1#4 ← phi( bitmap_line::@17/(word) bitmap_line::y1#5 ) + (word) bitmap_line::y2#5 ← phi( bitmap_line::@17/(word) bitmap_line::y2#8 ) + (word) bitmap_line::x1#2 ← phi( bitmap_line::@17/(word) bitmap_line::x1#3 ) + (word) bitmap_line::x2#2 ← phi( bitmap_line::@17/(word) bitmap_line::x2#4 ) + (word~) bitmap_line::$8 ← (word) bitmap_line::x2#2 - (word) bitmap_line::x1#2 + (word) sgn_u16::w#0 ← (word~) bitmap_line::$8 call sgn_u16 (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 - to:bitmap_line::@15 -bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 - (word) bitmap_line::x2#10 ← phi( bitmap_line::@14/(word) bitmap_line::x2#2 ) - (word) bitmap_line::x#15 ← phi( bitmap_line::@14/(word) bitmap_line::x#16 ) - (word) bitmap_line::y#15 ← phi( bitmap_line::@14/(word) bitmap_line::y#16 ) - (word) bitmap_line::dy#6 ← phi( bitmap_line::@14/(word) bitmap_line::dy#0 ) - (word) bitmap_line::dx#6 ← phi( bitmap_line::@14/(word) bitmap_line::dx#9 ) - (word) bitmap_line::y1#3 ← phi( bitmap_line::@14/(word) bitmap_line::y1#4 ) - (word) bitmap_line::y2#2 ← phi( bitmap_line::@14/(word) bitmap_line::y2#5 ) - (word) sgn_u16::return#5 ← phi( bitmap_line::@14/(word) sgn_u16::return#0 ) - (word~) bitmap_line::$5 ← (word) sgn_u16::return#5 - (word) bitmap_line::sx#0 ← (word~) bitmap_line::$5 - (word~) bitmap_line::$6 ← (word) bitmap_line::y2#2 - (word) bitmap_line::y1#3 - (word) sgn_u16::w#1 ← (word~) bitmap_line::$6 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@1 + (word) bitmap_line::x2#11 ← phi( bitmap_line::@1/(word) bitmap_line::x2#2 ) + (word) bitmap_line::x#18 ← phi( bitmap_line::@1/(word) bitmap_line::x#19 ) + (word) bitmap_line::y#18 ← phi( bitmap_line::@1/(word) bitmap_line::y#19 ) + (word) bitmap_line::dy#6 ← phi( bitmap_line::@1/(word) bitmap_line::dy#9 ) + (word) bitmap_line::dx#7 ← phi( bitmap_line::@1/(word) bitmap_line::dx#10 ) + (word) bitmap_line::y1#3 ← phi( bitmap_line::@1/(word) bitmap_line::y1#4 ) + (word) bitmap_line::y2#2 ← phi( bitmap_line::@1/(word) bitmap_line::y2#5 ) + (word) sgn_u16::return#5 ← phi( bitmap_line::@1/(word) sgn_u16::return#0 ) + (word~) bitmap_line::$9 ← (word) sgn_u16::return#5 + (word) bitmap_line::sx#0 ← (word~) bitmap_line::$9 + (word~) bitmap_line::$10 ← (word) bitmap_line::y2#2 - (word) bitmap_line::y1#3 + (word) sgn_u16::w#1 ← (word~) bitmap_line::$10 call sgn_u16 (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 - to:bitmap_line::@16 -bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@15 - (word) bitmap_line::y2#10 ← phi( bitmap_line::@15/(word) bitmap_line::y2#2 ) - (word) bitmap_line::x2#9 ← phi( bitmap_line::@15/(word) bitmap_line::x2#10 ) - (word) bitmap_line::sx#8 ← phi( bitmap_line::@15/(word) bitmap_line::sx#0 ) - (word) bitmap_line::x#14 ← phi( bitmap_line::@15/(word) bitmap_line::x#15 ) - (word) bitmap_line::y#14 ← phi( bitmap_line::@15/(word) bitmap_line::y#15 ) - (word) bitmap_line::dy#1 ← phi( bitmap_line::@15/(word) bitmap_line::dy#6 ) - (word) bitmap_line::dx#1 ← phi( bitmap_line::@15/(word) bitmap_line::dx#6 ) - (word) sgn_u16::return#6 ← phi( bitmap_line::@15/(word) sgn_u16::return#1 ) - (word~) bitmap_line::$7 ← (word) sgn_u16::return#6 - (word) bitmap_line::sy#0 ← (word~) bitmap_line::$7 - (bool~) bitmap_line::$8 ← (word) bitmap_line::dx#1 > (word) bitmap_line::dy#1 - if((bool~) bitmap_line::$8) goto bitmap_line::@1 - to:bitmap_line::@3 -bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@16 - (word) bitmap_line::sy#9 ← phi( bitmap_line::@16/(word) bitmap_line::sy#0 ) - (word) bitmap_line::x2#8 ← phi( bitmap_line::@16/(word) bitmap_line::x2#9 ) - (word) bitmap_line::dx#11 ← phi( bitmap_line::@16/(word) bitmap_line::dx#1 ) - (word) bitmap_line::sx#6 ← phi( bitmap_line::@16/(word) bitmap_line::sx#8 ) - (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#14 ) - (word) bitmap_line::y#12 ← phi( bitmap_line::@16/(word) bitmap_line::y#14 ) - (word) bitmap_line::dy#2 ← phi( bitmap_line::@16/(word) bitmap_line::dy#1 ) - (number~) bitmap_line::$17 ← (word) bitmap_line::dy#2 / (number) 2 - (word) bitmap_line::e1#0 ← (number~) bitmap_line::$17 - to:bitmap_line::@9 -bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@16 - (word) bitmap_line::sx#9 ← phi( bitmap_line::@16/(word) bitmap_line::sx#8 ) - (word) bitmap_line::y2#9 ← phi( bitmap_line::@16/(word) bitmap_line::y2#10 ) - (word) bitmap_line::dy#9 ← phi( bitmap_line::@16/(word) bitmap_line::dy#1 ) - (word) bitmap_line::sy#5 ← phi( bitmap_line::@16/(word) bitmap_line::sy#0 ) - (word) bitmap_line::x#9 ← phi( bitmap_line::@16/(word) bitmap_line::x#14 ) - (word) bitmap_line::y#9 ← phi( bitmap_line::@16/(word) bitmap_line::y#14 ) - (word) bitmap_line::dx#2 ← phi( bitmap_line::@16/(word) bitmap_line::dx#1 ) - (number~) bitmap_line::$11 ← (word) bitmap_line::dx#2 / (number) 2 - (word) bitmap_line::e#0 ← (number~) bitmap_line::$11 - to:bitmap_line::@4 -bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@5 - (word) bitmap_line::sx#5 ← phi( bitmap_line::@3/(word) bitmap_line::sx#9 bitmap_line::@5/(word) bitmap_line::sx#10 ) - (word) bitmap_line::y2#8 ← phi( bitmap_line::@3/(word) bitmap_line::y2#9 bitmap_line::@5/(word) bitmap_line::y2#3 ) - (word) bitmap_line::dy#7 ← phi( bitmap_line::@3/(word) bitmap_line::dy#9 bitmap_line::@5/(word) bitmap_line::dy#10 ) - (word) bitmap_line::dx#7 ← phi( bitmap_line::@3/(word) bitmap_line::dx#2 bitmap_line::@5/(word) bitmap_line::dx#10 ) - (word) bitmap_line::e#5 ← phi( bitmap_line::@3/(word) bitmap_line::e#0 bitmap_line::@5/(word) bitmap_line::e#6 ) - (word) bitmap_line::sy#3 ← phi( bitmap_line::@3/(word) bitmap_line::sy#5 bitmap_line::@5/(word) bitmap_line::sy#6 ) - (word) bitmap_line::x#3 ← phi( bitmap_line::@3/(word) bitmap_line::x#9 bitmap_line::@5/(word) bitmap_line::x#10 ) - (word) bitmap_line::y#3 ← phi( bitmap_line::@3/(word) bitmap_line::y#9 bitmap_line::@5/(word) bitmap_line::y#5 ) - (byte~) bitmap_line::$12 ← ((byte)) (word) bitmap_line::y#3 - (word) bitmap_plot::x#0 ← (word) bitmap_line::x#3 - (byte) bitmap_plot::y#0 ← (byte~) bitmap_line::$12 - call bitmap_plot - to:bitmap_line::@17 -bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@4 - (word) bitmap_line::sx#3 ← phi( bitmap_line::@4/(word) bitmap_line::sx#5 ) - (word) bitmap_line::x#11 ← phi( bitmap_line::@4/(word) bitmap_line::x#3 ) - (word) bitmap_line::y2#6 ← phi( bitmap_line::@4/(word) bitmap_line::y2#8 ) - (word) bitmap_line::dy#3 ← phi( bitmap_line::@4/(word) bitmap_line::dy#7 ) - (word) bitmap_line::dx#3 ← phi( bitmap_line::@4/(word) bitmap_line::dx#7 ) - (word) bitmap_line::e#3 ← phi( bitmap_line::@4/(word) bitmap_line::e#5 ) - (word) bitmap_line::sy#1 ← phi( bitmap_line::@4/(word) bitmap_line::sy#3 ) - (word) bitmap_line::y#4 ← phi( bitmap_line::@4/(word) bitmap_line::y#3 ) - (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#1 - (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#3 - (bool~) bitmap_line::$14 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 - (bool~) bitmap_line::$15 ← ! (bool~) bitmap_line::$14 - if((bool~) bitmap_line::$15) goto bitmap_line::@5 - to:bitmap_line::@6 -bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@17 bitmap_line::@6 - (word) bitmap_line::sx#10 ← phi( bitmap_line::@17/(word) bitmap_line::sx#3 bitmap_line::@6/(word) bitmap_line::sx#1 ) - (word) bitmap_line::dy#10 ← phi( bitmap_line::@17/(word) bitmap_line::dy#3 bitmap_line::@6/(word) bitmap_line::dy#4 ) - (word) bitmap_line::dx#10 ← phi( bitmap_line::@17/(word) bitmap_line::dx#3 bitmap_line::@6/(word) bitmap_line::dx#13 ) - (word) bitmap_line::e#6 ← phi( bitmap_line::@17/(word) bitmap_line::e#1 bitmap_line::@6/(word) bitmap_line::e#2 ) - (word) bitmap_line::sy#6 ← phi( bitmap_line::@17/(word) bitmap_line::sy#1 bitmap_line::@6/(word) bitmap_line::sy#8 ) - (word) bitmap_line::x#10 ← phi( bitmap_line::@17/(word) bitmap_line::x#11 bitmap_line::@6/(word) bitmap_line::x#1 ) - (word) bitmap_line::y2#3 ← phi( bitmap_line::@17/(word) bitmap_line::y2#6 bitmap_line::@6/(word) bitmap_line::y2#7 ) - (word) bitmap_line::y#5 ← phi( bitmap_line::@17/(word) bitmap_line::y#1 bitmap_line::@6/(word) bitmap_line::y#10 ) - (bool~) bitmap_line::$16 ← (word) bitmap_line::y#5 != (word) bitmap_line::y2#3 - if((bool~) bitmap_line::$16) goto bitmap_line::@4 - to:bitmap_line::@2 -bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@17 - (word) bitmap_line::dx#13 ← phi( bitmap_line::@17/(word) bitmap_line::dx#3 ) - (word) bitmap_line::sy#8 ← phi( bitmap_line::@17/(word) bitmap_line::sy#1 ) - (word) bitmap_line::y2#7 ← phi( bitmap_line::@17/(word) bitmap_line::y2#6 ) - (word) bitmap_line::y#10 ← phi( bitmap_line::@17/(word) bitmap_line::y#1 ) - (word) bitmap_line::dy#4 ← phi( bitmap_line::@17/(word) bitmap_line::dy#3 ) - (word) bitmap_line::e#4 ← phi( bitmap_line::@17/(word) bitmap_line::e#1 ) - (word) bitmap_line::sx#1 ← phi( bitmap_line::@17/(word) bitmap_line::sx#3 ) - (word) bitmap_line::x#4 ← phi( bitmap_line::@17/(word) bitmap_line::x#11 ) - (word) bitmap_line::x#1 ← (word) bitmap_line::x#4 + (word) bitmap_line::sx#1 - (word) bitmap_line::e#2 ← (word) bitmap_line::e#4 - (word) bitmap_line::dy#4 - to:bitmap_line::@5 -bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@5 - (word) bitmap_line::x#5 ← phi( bitmap_line::@10/(word) bitmap_line::x#8 bitmap_line::@5/(word) bitmap_line::x#10 ) - (word) bitmap_line::y#6 ← phi( bitmap_line::@10/(word) bitmap_line::y#11 bitmap_line::@5/(word) bitmap_line::y#5 ) - (byte~) bitmap_line::$9 ← ((byte)) (word) bitmap_line::y#6 - (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 - (byte) bitmap_plot::y#1 ← (byte~) bitmap_line::$9 - call bitmap_plot - to:bitmap_line::@18 -bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@2 - to:bitmap_line::@return -bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@1 bitmap_line::@10 - (word) bitmap_line::sy#7 ← phi( bitmap_line::@1/(word) bitmap_line::sy#9 bitmap_line::@10/(word) bitmap_line::sy#10 ) - (word) bitmap_line::x2#7 ← phi( bitmap_line::@1/(word) bitmap_line::x2#8 bitmap_line::@10/(word) bitmap_line::x2#3 ) - (word) bitmap_line::dx#8 ← phi( bitmap_line::@1/(word) bitmap_line::dx#11 bitmap_line::@10/(word) bitmap_line::dx#12 ) - (word) bitmap_line::dy#8 ← phi( bitmap_line::@1/(word) bitmap_line::dy#2 bitmap_line::@10/(word) bitmap_line::dy#11 ) - (word) bitmap_line::e1#5 ← phi( bitmap_line::@1/(word) bitmap_line::e1#0 bitmap_line::@10/(word) bitmap_line::e1#6 ) - (word) bitmap_line::sx#4 ← phi( bitmap_line::@1/(word) bitmap_line::sx#6 bitmap_line::@10/(word) bitmap_line::sx#7 ) - (word) bitmap_line::x#6 ← phi( bitmap_line::@1/(word) bitmap_line::x#12 bitmap_line::@10/(word) bitmap_line::x#8 ) - (word) bitmap_line::y#7 ← phi( bitmap_line::@1/(word) bitmap_line::y#12 bitmap_line::@10/(word) bitmap_line::y#11 ) - (byte~) bitmap_line::$18 ← ((byte)) (word) bitmap_line::y#7 - (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - (byte) bitmap_plot::y#2 ← (byte~) bitmap_line::$18 - call bitmap_plot to:bitmap_line::@19 -bitmap_line::@19: scope:[bitmap_line] from bitmap_line::@9 - (word) bitmap_line::sy#4 ← phi( bitmap_line::@9/(word) bitmap_line::sy#7 ) - (word) bitmap_line::y#13 ← phi( bitmap_line::@9/(word) bitmap_line::y#7 ) - (word) bitmap_line::x2#6 ← phi( bitmap_line::@9/(word) bitmap_line::x2#7 ) - (word) bitmap_line::dx#4 ← phi( bitmap_line::@9/(word) bitmap_line::dx#8 ) - (word) bitmap_line::dy#5 ← phi( bitmap_line::@9/(word) bitmap_line::dy#8 ) - (word) bitmap_line::e1#3 ← phi( bitmap_line::@9/(word) bitmap_line::e1#5 ) - (word) bitmap_line::sx#2 ← phi( bitmap_line::@9/(word) bitmap_line::sx#4 ) - (word) bitmap_line::x#7 ← phi( bitmap_line::@9/(word) bitmap_line::x#6 ) - (word) bitmap_line::x#2 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#2 - (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#5 - (bool~) bitmap_line::$20 ← (word) bitmap_line::dx#4 < (word) bitmap_line::e1#1 - (bool~) bitmap_line::$21 ← ! (bool~) bitmap_line::$20 - if((bool~) bitmap_line::$21) goto bitmap_line::@10 - to:bitmap_line::@11 -bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@19 - (word) bitmap_line::sy#10 ← phi( bitmap_line::@11/(word) bitmap_line::sy#2 bitmap_line::@19/(word) bitmap_line::sy#4 ) - (word) bitmap_line::dx#12 ← phi( bitmap_line::@11/(word) bitmap_line::dx#5 bitmap_line::@19/(word) bitmap_line::dx#4 ) - (word) bitmap_line::dy#11 ← phi( bitmap_line::@11/(word) bitmap_line::dy#12 bitmap_line::@19/(word) bitmap_line::dy#5 ) - (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@19/(word) bitmap_line::e1#1 ) - (word) bitmap_line::sx#7 ← phi( bitmap_line::@11/(word) bitmap_line::sx#11 bitmap_line::@19/(word) bitmap_line::sx#2 ) - (word) bitmap_line::y#11 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@19/(word) bitmap_line::y#13 ) - (word) bitmap_line::x2#3 ← phi( bitmap_line::@11/(word) bitmap_line::x2#5 bitmap_line::@19/(word) bitmap_line::x2#6 ) - (word) bitmap_line::x#8 ← phi( bitmap_line::@11/(word) bitmap_line::x#13 bitmap_line::@19/(word) bitmap_line::x#2 ) - (bool~) bitmap_line::$22 ← (word) bitmap_line::x#8 != (word) bitmap_line::x2#3 - if((bool~) bitmap_line::$22) goto bitmap_line::@9 - to:bitmap_line::@2 -bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@19 - (word) bitmap_line::dy#12 ← phi( bitmap_line::@19/(word) bitmap_line::dy#5 ) - (word) bitmap_line::sx#11 ← phi( bitmap_line::@19/(word) bitmap_line::sx#2 ) - (word) bitmap_line::x2#5 ← phi( bitmap_line::@19/(word) bitmap_line::x2#6 ) - (word) bitmap_line::x#13 ← phi( bitmap_line::@19/(word) bitmap_line::x#2 ) - (word) bitmap_line::dx#5 ← phi( bitmap_line::@19/(word) bitmap_line::dx#4 ) - (word) bitmap_line::e1#4 ← phi( bitmap_line::@19/(word) bitmap_line::e1#1 ) - (word) bitmap_line::sy#2 ← phi( bitmap_line::@19/(word) bitmap_line::sy#4 ) - (word) bitmap_line::y#8 ← phi( bitmap_line::@19/(word) bitmap_line::y#13 ) - (word) bitmap_line::y#2 ← (word) bitmap_line::y#8 + (word) bitmap_line::sy#2 - (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#4 - (word) bitmap_line::dx#5 - to:bitmap_line::@10 -bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@18 +bitmap_line::@19: scope:[bitmap_line] from bitmap_line::@18 + (word) bitmap_line::y2#11 ← phi( bitmap_line::@18/(word) bitmap_line::y2#2 ) + (word) bitmap_line::x2#10 ← phi( bitmap_line::@18/(word) bitmap_line::x2#11 ) + (word) bitmap_line::sx#8 ← phi( bitmap_line::@18/(word) bitmap_line::sx#0 ) + (word) bitmap_line::x#17 ← phi( bitmap_line::@18/(word) bitmap_line::x#18 ) + (word) bitmap_line::y#17 ← phi( bitmap_line::@18/(word) bitmap_line::y#18 ) + (word) bitmap_line::dy#1 ← phi( bitmap_line::@18/(word) bitmap_line::dy#6 ) + (word) bitmap_line::dx#2 ← phi( bitmap_line::@18/(word) bitmap_line::dx#7 ) + (word) sgn_u16::return#6 ← phi( bitmap_line::@18/(word) sgn_u16::return#1 ) + (word~) bitmap_line::$11 ← (word) sgn_u16::return#6 + (word) bitmap_line::sy#0 ← (word~) bitmap_line::$11 + (bool~) bitmap_line::$12 ← (word) bitmap_line::dx#2 > (word) bitmap_line::dy#1 + if((bool~) bitmap_line::$12) goto bitmap_line::@2 + to:bitmap_line::@6 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@17 + (word) bitmap_line::x#3 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 ) + (word) bitmap_line::y#3 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 ) + (byte~) bitmap_line::$15 ← ((byte)) (word) bitmap_line::y#3 + (word) bitmap_plot::x#0 ← (word) bitmap_line::x#3 + (byte) bitmap_plot::y#0 ← (byte~) bitmap_line::$15 + call bitmap_plot + to:bitmap_line::@20 +bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@4 + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@20 bitmap_line::@22 return to:@return -abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@13 - (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@13/(word) abs_u16::w#1 ) +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@19 + (word) bitmap_line::sy#10 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 ) + (word) bitmap_line::x2#9 ← phi( bitmap_line::@19/(word) bitmap_line::x2#10 ) + (word) bitmap_line::dx#13 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 ) + (word) bitmap_line::sx#7 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 ) + (word) bitmap_line::x#14 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 ) + (word) bitmap_line::y#14 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 ) + (word) bitmap_line::dy#2 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 ) + (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2 + (word) bitmap_line::e1#0 ← (number~) bitmap_line::$23 + to:bitmap_line::@12 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@19 + (word) bitmap_line::sx#9 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 ) + (word) bitmap_line::y2#10 ← phi( bitmap_line::@19/(word) bitmap_line::y2#11 ) + (word) bitmap_line::dy#10 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 ) + (word) bitmap_line::sy#5 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 ) + (word) bitmap_line::x#11 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 ) + (word) bitmap_line::y#11 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 ) + (word) bitmap_line::dx#3 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 ) + (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2 + (word) bitmap_line::e#0 ← (number~) bitmap_line::$17 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@6 bitmap_line::@8 + (word) bitmap_line::sx#5 ← phi( bitmap_line::@6/(word) bitmap_line::sx#9 bitmap_line::@8/(word) bitmap_line::sx#10 ) + (word) bitmap_line::y2#9 ← phi( bitmap_line::@6/(word) bitmap_line::y2#10 bitmap_line::@8/(word) bitmap_line::y2#3 ) + (word) bitmap_line::dy#7 ← phi( bitmap_line::@6/(word) bitmap_line::dy#10 bitmap_line::@8/(word) bitmap_line::dy#11 ) + (word) bitmap_line::dx#8 ← phi( bitmap_line::@6/(word) bitmap_line::dx#3 bitmap_line::@8/(word) bitmap_line::dx#11 ) + (word) bitmap_line::e#5 ← phi( bitmap_line::@6/(word) bitmap_line::e#0 bitmap_line::@8/(word) bitmap_line::e#6 ) + (word) bitmap_line::sy#3 ← phi( bitmap_line::@6/(word) bitmap_line::sy#5 bitmap_line::@8/(word) bitmap_line::sy#6 ) + (word) bitmap_line::x#4 ← phi( bitmap_line::@6/(word) bitmap_line::x#11 bitmap_line::@8/(word) bitmap_line::x#12 ) + (word) bitmap_line::y#4 ← phi( bitmap_line::@6/(word) bitmap_line::y#11 bitmap_line::@8/(word) bitmap_line::y#6 ) + (byte~) bitmap_line::$18 ← ((byte)) (word) bitmap_line::y#4 + (word) bitmap_plot::x#1 ← (word) bitmap_line::x#4 + (byte) bitmap_plot::y#1 ← (byte~) bitmap_line::$18 + call bitmap_plot + to:bitmap_line::@21 +bitmap_line::@21: scope:[bitmap_line] from bitmap_line::@7 + (word) bitmap_line::sx#3 ← phi( bitmap_line::@7/(word) bitmap_line::sx#5 ) + (word) bitmap_line::x#13 ← phi( bitmap_line::@7/(word) bitmap_line::x#4 ) + (word) bitmap_line::y2#6 ← phi( bitmap_line::@7/(word) bitmap_line::y2#9 ) + (word) bitmap_line::dy#3 ← phi( bitmap_line::@7/(word) bitmap_line::dy#7 ) + (word) bitmap_line::dx#4 ← phi( bitmap_line::@7/(word) bitmap_line::dx#8 ) + (word) bitmap_line::e#3 ← phi( bitmap_line::@7/(word) bitmap_line::e#5 ) + (word) bitmap_line::sy#1 ← phi( bitmap_line::@7/(word) bitmap_line::sy#3 ) + (word) bitmap_line::y#5 ← phi( bitmap_line::@7/(word) bitmap_line::y#4 ) + (word) bitmap_line::y#1 ← (word) bitmap_line::y#5 + (word) bitmap_line::sy#1 + (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#4 + (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 + (bool~) bitmap_line::$21 ← ! (bool~) bitmap_line::$20 + if((bool~) bitmap_line::$21) goto bitmap_line::@8 + to:bitmap_line::@9 +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@21 bitmap_line::@9 + (word) bitmap_line::sx#10 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 bitmap_line::@9/(word) bitmap_line::sx#1 ) + (word) bitmap_line::dy#11 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 bitmap_line::@9/(word) bitmap_line::dy#4 ) + (word) bitmap_line::dx#11 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 bitmap_line::@9/(word) bitmap_line::dx#14 ) + (word) bitmap_line::e#6 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 bitmap_line::@9/(word) bitmap_line::e#2 ) + (word) bitmap_line::sy#6 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 bitmap_line::@9/(word) bitmap_line::sy#8 ) + (word) bitmap_line::x#12 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 bitmap_line::@9/(word) bitmap_line::x#1 ) + (word) bitmap_line::y2#3 ← phi( bitmap_line::@21/(word) bitmap_line::y2#6 bitmap_line::@9/(word) bitmap_line::y2#7 ) + (word) bitmap_line::y#6 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 bitmap_line::@9/(word) bitmap_line::y#12 ) + (bool~) bitmap_line::$22 ← (word) bitmap_line::y#6 != (word) bitmap_line::y2#3 + if((bool~) bitmap_line::$22) goto bitmap_line::@7 + to:bitmap_line::@3 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@21 + (word) bitmap_line::dx#14 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 ) + (word) bitmap_line::sy#8 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 ) + (word) bitmap_line::y2#7 ← phi( bitmap_line::@21/(word) bitmap_line::y2#6 ) + (word) bitmap_line::y#12 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 ) + (word) bitmap_line::dy#4 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 ) + (word) bitmap_line::e#4 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 ) + (word) bitmap_line::sx#1 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 ) + (word) bitmap_line::x#5 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 ) + (word) bitmap_line::x#1 ← (word) bitmap_line::x#5 + (word) bitmap_line::sx#1 + (word) bitmap_line::e#2 ← (word) bitmap_line::e#4 - (word) bitmap_line::dy#4 + to:bitmap_line::@8 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@8 + (word) bitmap_line::x#6 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@8/(word) bitmap_line::x#12 ) + (word) bitmap_line::y#7 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@8/(word) bitmap_line::y#6 ) + (byte~) bitmap_line::$13 ← ((byte)) (word) bitmap_line::y#7 + (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + (byte) bitmap_plot::y#2 ← (byte~) bitmap_line::$13 + call bitmap_plot + to:bitmap_line::@22 +bitmap_line::@22: scope:[bitmap_line] from bitmap_line::@3 + to:bitmap_line::@return +bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@2 + (word) bitmap_line::sy#7 ← phi( bitmap_line::@13/(word) bitmap_line::sy#9 bitmap_line::@2/(word) bitmap_line::sy#10 ) + (word) bitmap_line::x2#8 ← phi( bitmap_line::@13/(word) bitmap_line::x2#3 bitmap_line::@2/(word) bitmap_line::x2#9 ) + (word) bitmap_line::dx#9 ← phi( bitmap_line::@13/(word) bitmap_line::dx#12 bitmap_line::@2/(word) bitmap_line::dx#13 ) + (word) bitmap_line::dy#8 ← phi( bitmap_line::@13/(word) bitmap_line::dy#12 bitmap_line::@2/(word) bitmap_line::dy#2 ) + (word) bitmap_line::e1#5 ← phi( bitmap_line::@13/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + (word) bitmap_line::sx#4 ← phi( bitmap_line::@13/(word) bitmap_line::sx#6 bitmap_line::@2/(word) bitmap_line::sx#7 ) + (word) bitmap_line::x#7 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@2/(word) bitmap_line::x#14 ) + (word) bitmap_line::y#8 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#14 ) + (byte~) bitmap_line::$24 ← ((byte)) (word) bitmap_line::y#8 + (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + (byte) bitmap_plot::y#3 ← (byte~) bitmap_line::$24 + call bitmap_plot + to:bitmap_line::@23 +bitmap_line::@23: scope:[bitmap_line] from bitmap_line::@12 + (word) bitmap_line::sy#4 ← phi( bitmap_line::@12/(word) bitmap_line::sy#7 ) + (word) bitmap_line::y#15 ← phi( bitmap_line::@12/(word) bitmap_line::y#8 ) + (word) bitmap_line::x2#6 ← phi( bitmap_line::@12/(word) bitmap_line::x2#8 ) + (word) bitmap_line::dx#5 ← phi( bitmap_line::@12/(word) bitmap_line::dx#9 ) + (word) bitmap_line::dy#5 ← phi( bitmap_line::@12/(word) bitmap_line::dy#8 ) + (word) bitmap_line::e1#3 ← phi( bitmap_line::@12/(word) bitmap_line::e1#5 ) + (word) bitmap_line::sx#2 ← phi( bitmap_line::@12/(word) bitmap_line::sx#4 ) + (word) bitmap_line::x#8 ← phi( bitmap_line::@12/(word) bitmap_line::x#7 ) + (word) bitmap_line::x#2 ← (word) bitmap_line::x#8 + (word) bitmap_line::sx#2 + (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#5 + (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 + (bool~) bitmap_line::$27 ← ! (bool~) bitmap_line::$26 + if((bool~) bitmap_line::$27) goto bitmap_line::@13 + to:bitmap_line::@14 +bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@14 bitmap_line::@23 + (word) bitmap_line::sy#9 ← phi( bitmap_line::@14/(word) bitmap_line::sy#2 bitmap_line::@23/(word) bitmap_line::sy#4 ) + (word) bitmap_line::dx#12 ← phi( bitmap_line::@14/(word) bitmap_line::dx#6 bitmap_line::@23/(word) bitmap_line::dx#5 ) + (word) bitmap_line::dy#12 ← phi( bitmap_line::@14/(word) bitmap_line::dy#13 bitmap_line::@23/(word) bitmap_line::dy#5 ) + (word) bitmap_line::e1#6 ← phi( bitmap_line::@14/(word) bitmap_line::e1#2 bitmap_line::@23/(word) bitmap_line::e1#1 ) + (word) bitmap_line::sx#6 ← phi( bitmap_line::@14/(word) bitmap_line::sx#11 bitmap_line::@23/(word) bitmap_line::sx#2 ) + (word) bitmap_line::y#13 ← phi( bitmap_line::@14/(word) bitmap_line::y#2 bitmap_line::@23/(word) bitmap_line::y#15 ) + (word) bitmap_line::x2#3 ← phi( bitmap_line::@14/(word) bitmap_line::x2#5 bitmap_line::@23/(word) bitmap_line::x2#6 ) + (word) bitmap_line::x#9 ← phi( bitmap_line::@14/(word) bitmap_line::x#15 bitmap_line::@23/(word) bitmap_line::x#2 ) + (bool~) bitmap_line::$28 ← (word) bitmap_line::x#9 != (word) bitmap_line::x2#3 + if((bool~) bitmap_line::$28) goto bitmap_line::@12 + to:bitmap_line::@3 +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@23 + (word) bitmap_line::dy#13 ← phi( bitmap_line::@23/(word) bitmap_line::dy#5 ) + (word) bitmap_line::sx#11 ← phi( bitmap_line::@23/(word) bitmap_line::sx#2 ) + (word) bitmap_line::x2#5 ← phi( bitmap_line::@23/(word) bitmap_line::x2#6 ) + (word) bitmap_line::x#15 ← phi( bitmap_line::@23/(word) bitmap_line::x#2 ) + (word) bitmap_line::dx#6 ← phi( bitmap_line::@23/(word) bitmap_line::dx#5 ) + (word) bitmap_line::e1#4 ← phi( bitmap_line::@23/(word) bitmap_line::e1#1 ) + (word) bitmap_line::sy#2 ← phi( bitmap_line::@23/(word) bitmap_line::sy#4 ) + (word) bitmap_line::y#9 ← phi( bitmap_line::@23/(word) bitmap_line::y#15 ) + (word) bitmap_line::y#2 ← (word) bitmap_line::y#9 + (word) bitmap_line::sy#2 + (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#4 - (word) bitmap_line::dx#6 + to:bitmap_line::@13 +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@16 + (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@16/(word) abs_u16::w#1 ) (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80 (bool~) abs_u16::$3 ← (number) 0 != (number~) abs_u16::$1 @@ -471,8 +497,8 @@ abs_u16::@return: scope:[abs_u16] from abs_u16::@1 abs_u16::@3 (word) abs_u16::return#4 ← (word) abs_u16::return#7 return to:@return -sgn_u16: scope:[sgn_u16] from bitmap_line::@14 bitmap_line::@15 - (word) sgn_u16::w#2 ← phi( bitmap_line::@14/(word) sgn_u16::w#0 bitmap_line::@15/(word) sgn_u16::w#1 ) +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@18 + (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@18/(word) sgn_u16::w#1 ) (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (number) $80 (bool~) sgn_u16::$2 ← (number) 0 != (number~) sgn_u16::$1 @@ -789,39 +815,47 @@ SYMBOL TABLE SSA (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (word~) bitmap_line::$0 (word~) bitmap_line::$1 -(number~) bitmap_line::$11 -(byte~) bitmap_line::$12 -(bool~) bitmap_line::$14 -(bool~) bitmap_line::$15 -(bool~) bitmap_line::$16 +(word~) bitmap_line::$10 +(word~) bitmap_line::$11 +(bool~) bitmap_line::$12 +(byte~) bitmap_line::$13 +(byte~) bitmap_line::$15 (number~) bitmap_line::$17 (byte~) bitmap_line::$18 (word~) bitmap_line::$2 (bool~) bitmap_line::$20 (bool~) bitmap_line::$21 (bool~) bitmap_line::$22 +(number~) bitmap_line::$23 +(byte~) bitmap_line::$24 +(bool~) bitmap_line::$26 +(bool~) bitmap_line::$27 +(bool~) bitmap_line::$28 (word~) bitmap_line::$3 -(word~) bitmap_line::$4 -(word~) bitmap_line::$5 -(word~) bitmap_line::$6 -(word~) bitmap_line::$7 -(bool~) bitmap_line::$8 -(byte~) bitmap_line::$9 +(bool~) bitmap_line::$4 +(bool~) bitmap_line::$5 +(bool~) bitmap_line::$6 +(bool~) bitmap_line::$7 +(word~) bitmap_line::$8 +(word~) bitmap_line::$9 (label) bitmap_line::@1 -(label) bitmap_line::@10 -(label) bitmap_line::@11 +(label) bitmap_line::@12 (label) bitmap_line::@13 (label) bitmap_line::@14 -(label) bitmap_line::@15 (label) bitmap_line::@16 (label) bitmap_line::@17 (label) bitmap_line::@18 (label) bitmap_line::@19 (label) bitmap_line::@2 +(label) bitmap_line::@20 +(label) bitmap_line::@21 +(label) bitmap_line::@22 +(label) bitmap_line::@23 (label) bitmap_line::@3 (label) bitmap_line::@4 -(label) bitmap_line::@5 (label) bitmap_line::@6 +(label) bitmap_line::@7 +(label) bitmap_line::@8 (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx @@ -831,6 +865,7 @@ SYMBOL TABLE SSA (word) bitmap_line::dx#11 (word) bitmap_line::dx#12 (word) bitmap_line::dx#13 +(word) bitmap_line::dx#14 (word) bitmap_line::dx#2 (word) bitmap_line::dx#3 (word) bitmap_line::dx#4 @@ -845,6 +880,7 @@ SYMBOL TABLE SSA (word) bitmap_line::dy#10 (word) bitmap_line::dy#11 (word) bitmap_line::dy#12 +(word) bitmap_line::dy#13 (word) bitmap_line::dy#2 (word) bitmap_line::dy#3 (word) bitmap_line::dy#4 @@ -905,6 +941,8 @@ SYMBOL TABLE SSA (word) bitmap_line::x#15 (word) bitmap_line::x#16 (word) bitmap_line::x#17 +(word) bitmap_line::x#18 +(word) bitmap_line::x#19 (word) bitmap_line::x#2 (word) bitmap_line::x#3 (word) bitmap_line::x#4 @@ -918,10 +956,12 @@ SYMBOL TABLE SSA (word) bitmap_line::x1#1 (word) bitmap_line::x1#2 (word) bitmap_line::x1#3 +(word) bitmap_line::x1#4 (word) bitmap_line::x2 (word) bitmap_line::x2#0 (word) bitmap_line::x2#1 (word) bitmap_line::x2#10 +(word) bitmap_line::x2#11 (word) bitmap_line::x2#2 (word) bitmap_line::x2#3 (word) bitmap_line::x2#4 @@ -941,6 +981,8 @@ SYMBOL TABLE SSA (word) bitmap_line::y#15 (word) bitmap_line::y#16 (word) bitmap_line::y#17 +(word) bitmap_line::y#18 +(word) bitmap_line::y#19 (word) bitmap_line::y#2 (word) bitmap_line::y#3 (word) bitmap_line::y#4 @@ -955,10 +997,12 @@ SYMBOL TABLE SSA (word) bitmap_line::y1#2 (word) bitmap_line::y1#3 (word) bitmap_line::y1#4 +(word) bitmap_line::y1#5 (word) bitmap_line::y2 (word) bitmap_line::y2#0 (word) bitmap_line::y2#1 (word) bitmap_line::y2#10 +(word) bitmap_line::y2#11 (word) bitmap_line::y2#2 (word) bitmap_line::y2#3 (word) bitmap_line::y2#4 @@ -980,11 +1024,13 @@ SYMBOL TABLE SSA (word) bitmap_plot::x#1 (word) bitmap_plot::x#2 (word) bitmap_plot::x#3 +(word) bitmap_plot::x#4 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#2 (byte) bitmap_plot::y#3 +(byte) bitmap_plot::y#4 (byte[$100]) bitmap_plot_bit (byte[$100]) bitmap_plot_bit#0 (byte[$100]) bitmap_plot_yhi @@ -1147,7 +1193,7 @@ SYMBOL TABLE SSA (word) sgn_u16::w#1 (word) sgn_u16::w#2 -Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi#0 + bitmap_plot::y#3) w= (byte)*(bitmap_plot_ylo#0 + bitmap_plot::y#3) +Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi#0 + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo#0 + bitmap_plot::y#4) Successful SSA optimization Pass2FixInlineConstructorsNew Adding number conversion cast (unumber) $20 in (byte) VIC_BMM#0 ← (number) $20 Adding number conversion cast (unumber) $10 in (byte) VIC_DEN#0 ← (number) $10 @@ -1170,12 +1216,14 @@ Adding number conversion cast (unumber) $10 in (number~) bitmap_clear::$0 ← (b Adding number conversion cast (unumber) bitmap_clear::$0 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (unumber)(number) $10 Adding number conversion cast (unumber) bitmap_clear::$1 in (number~) bitmap_clear::$1 ← (unumber~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0 -Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (number) $fff8 -Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (unumber)(number) $fff8 -Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$17 ← (word) bitmap_line::dy#2 / (number) 2 -Adding number conversion cast (unumber) bitmap_line::$17 in (number~) bitmap_line::$17 ← (word) bitmap_line::dy#2 / (unumber)(number) 2 -Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$11 ← (word) bitmap_line::dx#2 / (number) 2 -Adding number conversion cast (unumber) bitmap_line::$11 in (number~) bitmap_line::$11 ← (word) bitmap_line::dx#2 / (unumber)(number) 2 +Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8 +Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (unumber)(number) $fff8 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0 +Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2 +Adding number conversion cast (unumber) bitmap_line::$23 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (unumber)(number) 2 +Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2 +Adding number conversion cast (unumber) bitmap_line::$17 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (unumber)(number) 2 Adding number conversion cast (unumber) $80 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80 Adding number conversion cast (unumber) abs_u16::$1 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (unumber)(number) $80 Adding number conversion cast (unumber) 0 in (bool~) abs_u16::$3 ← (number) 0 != (unumber~) abs_u16::$1 @@ -1223,9 +1271,10 @@ Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80 Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 Inlining cast (byte) memset::c#1 ← (unumber)(number) 0 -Inlining cast (byte~) bitmap_line::$12 ← (byte)(word) bitmap_line::y#3 -Inlining cast (byte~) bitmap_line::$9 ← (byte)(word) bitmap_line::y#6 -Inlining cast (byte~) bitmap_line::$18 ← (byte)(word) bitmap_line::y#7 +Inlining cast (byte~) bitmap_line::$15 ← (byte)(word) bitmap_line::y#3 +Inlining cast (byte~) bitmap_line::$18 ← (byte)(word) bitmap_line::y#4 +Inlining cast (byte~) bitmap_line::$13 ← (byte)(word) bitmap_line::y#7 +Inlining cast (byte~) bitmap_line::$24 ← (byte)(word) bitmap_line::y#8 Inlining cast (word) sgn_u16::return#2 ← (unumber)(number) -1 Inlining cast (word) sgn_u16::return#3 ← (unumber)(number) 1 Inlining cast (byte*) BITMAP#0 ← (byte*)(number) $2000 @@ -1256,9 +1305,11 @@ Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast $10 Simplifying constant integer cast 0 -Simplifying constant integer cast *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) -Simplifying constant integer cast *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) +Simplifying constant integer cast *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) +Simplifying constant integer cast *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) Simplifying constant integer cast $fff8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 2 Simplifying constant integer cast $80 @@ -1301,6 +1352,8 @@ Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) 0 Finalized unsigned number type (word) $fff8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) $80 @@ -1330,9 +1383,9 @@ Inferred type updated to byte in (unumber~) bitmap_init::$5 ← (byte~) bitmap_i Inferred type updated to byte in (unumber~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (byte) $10 Inferred type updated to byte in (unumber~) bitmap_clear::$1 ← (byte~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 -Inferred type updated to word in (unumber~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 -Inferred type updated to word in (unumber~) bitmap_line::$17 ← (word) bitmap_line::dy#2 / (byte) 2 -Inferred type updated to word in (unumber~) bitmap_line::$11 ← (word) bitmap_line::dx#2 / (byte) 2 +Inferred type updated to word in (unumber~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 +Inferred type updated to word in (unumber~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (byte) 2 +Inferred type updated to word in (unumber~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (byte) 2 Inferred type updated to byte in (unumber~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 Inferred type updated to byte in (unumber~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 Inferred type updated to byte in (unumber~) main::$4 ← (byte~) main::$3 | (byte) 3 @@ -1351,8 +1404,8 @@ Successful SSA optimization PassNAddTypeConversionAssignment Inversing boolean not [9] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [8] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 Inversing boolean not [40] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [39] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 Inversing boolean not [60] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [59] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 -Inversing boolean not [146] (bool~) bitmap_line::$15 ← (word) bitmap_line::dy#3 >= (word) bitmap_line::e#1 from [145] (bool~) bitmap_line::$14 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 -Inversing boolean not [168] (bool~) bitmap_line::$21 ← (word) bitmap_line::dx#4 >= (word) bitmap_line::e1#1 from [167] (bool~) bitmap_line::$20 ← (word) bitmap_line::dx#4 < (word) bitmap_line::e1#1 +Inversing boolean not [158] (bool~) bitmap_line::$21 ← (word) bitmap_line::dy#3 >= (word) bitmap_line::e#1 from [157] (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 +Inversing boolean not [180] (bool~) bitmap_line::$27 ← (word) bitmap_line::dx#5 >= (word) bitmap_line::e1#1 from [179] (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 Alias (void*) memset::str#3 = (void*) memset::str#4 @@ -1376,47 +1429,48 @@ Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 -Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 (word) bitmap_line::x1#3 (word) bitmap_line::x#17 (word) bitmap_line::x1#2 (word) bitmap_line::x#16 (word) bitmap_line::x#15 (word) bitmap_line::x#14 (word) bitmap_line::x#12 (word) bitmap_line::x#9 -Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 (word) bitmap_line::y1#2 (word) bitmap_line::y#17 (word) bitmap_line::y1#4 (word) bitmap_line::y#16 (word) bitmap_line::y1#3 (word) bitmap_line::y#15 (word) bitmap_line::y#14 (word) bitmap_line::y#12 (word) bitmap_line::y#9 +Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 (word) bitmap_line::x1#4 (word) bitmap_line::x#16 (word) bitmap_line::x1#3 (word) bitmap_line::x#10 (word) bitmap_line::x1#2 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 +Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 (word) bitmap_line::y1#2 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#5 (word) bitmap_line::y1#4 (word) bitmap_line::y#19 (word) bitmap_line::y1#3 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 -Alias (word) bitmap_line::y2#1 = (word) bitmap_line::y2#4 (word) bitmap_line::y2#5 (word) bitmap_line::y2#2 (word) bitmap_line::y2#10 (word) bitmap_line::y2#9 -Alias (word) bitmap_line::x2#1 = (word) bitmap_line::x2#4 (word) bitmap_line::x2#2 (word) bitmap_line::x2#10 (word) bitmap_line::x2#9 (word) bitmap_line::x2#8 -Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 (word) bitmap_line::dx#1 (word) bitmap_line::dx#11 (word) bitmap_line::dx#2 +Alias (word) bitmap_line::y2#1 = (word) bitmap_line::y2#4 (word) bitmap_line::y2#8 (word) bitmap_line::y2#5 (word) bitmap_line::y2#2 (word) bitmap_line::y2#11 (word) bitmap_line::y2#10 +Alias (word) bitmap_line::x2#1 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#4 (word) bitmap_line::x2#2 (word) bitmap_line::x2#11 (word) bitmap_line::x2#10 (word) bitmap_line::x2#9 +Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 -Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#9 -Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$4 +Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 +Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 -Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$5 (word) bitmap_line::sx#8 (word) bitmap_line::sx#6 (word) bitmap_line::sx#9 -Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$6 +Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 +Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 -Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$7 (word) bitmap_line::sy#9 (word) bitmap_line::sy#5 -Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$17 -Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$11 -Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$12 -Alias (word) bitmap_line::y#3 = (word) bitmap_line::y#4 +Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 +Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 +Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 +Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 +Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 +Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 -Alias (word) bitmap_line::dx#13 = (word) bitmap_line::dx#3 (word) bitmap_line::dx#7 +Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 -Alias (word) bitmap_line::y2#6 = (word) bitmap_line::y2#8 (word) bitmap_line::y2#7 -Alias (word) bitmap_line::x#11 = (word) bitmap_line::x#3 (word) bitmap_line::x#4 +Alias (word) bitmap_line::y2#6 = (word) bitmap_line::y2#9 (word) bitmap_line::y2#7 +Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#10 -Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$9 -Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$18 -Alias (word) bitmap_line::x#6 = (word) bitmap_line::x#7 +Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 +Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 +Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 +Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 -Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 -Alias (word) bitmap_line::dx#4 = (word) bitmap_line::dx#8 (word) bitmap_line::dx#5 -Alias (word) bitmap_line::x2#5 = (word) bitmap_line::x2#6 (word) bitmap_line::x2#7 -Alias (word) bitmap_line::y#13 = (word) bitmap_line::y#7 (word) bitmap_line::y#8 +Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 +Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 +Alias (word) bitmap_line::x2#5 = (word) bitmap_line::x2#6 (word) bitmap_line::x2#8 +Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 -Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#2 +Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 @@ -1451,18 +1505,18 @@ Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#24 Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 -Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#5 +Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 Alias (word) bitmap_line::y2#3 = (word) bitmap_line::y2#6 Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 -Alias (word) bitmap_line::dx#10 = (word) bitmap_line::dx#13 -Alias (word) bitmap_line::dy#10 = (word) bitmap_line::dy#3 +Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 +Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 -Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#8 +Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 Alias (word) bitmap_line::x2#3 = (word) bitmap_line::x2#5 -Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#7 -Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#12 -Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#4 -Alias (word) bitmap_line::sy#10 = (word) bitmap_line::sy#2 +Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 +Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 +Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 +Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) memset::c#2 Self Phi Eliminated (byte*) memset::end#1 @@ -1473,15 +1527,15 @@ Self Phi Eliminated (byte*) bitmap_screen#20 Self Phi Eliminated (byte*) bitmap_gfx#11 Self Phi Eliminated (byte*) bitmap_screen#11 Self Phi Eliminated (word) bitmap_line::sy#1 -Self Phi Eliminated (word) bitmap_line::dx#10 -Self Phi Eliminated (word) bitmap_line::dy#10 +Self Phi Eliminated (word) bitmap_line::dx#11 +Self Phi Eliminated (word) bitmap_line::dy#11 Self Phi Eliminated (word) bitmap_line::y2#3 Self Phi Eliminated (word) bitmap_line::sx#1 Self Phi Eliminated (word) bitmap_line::sx#11 -Self Phi Eliminated (word) bitmap_line::dy#11 +Self Phi Eliminated (word) bitmap_line::dy#12 Self Phi Eliminated (word) bitmap_line::dx#12 Self Phi Eliminated (word) bitmap_line::x2#3 -Self Phi Eliminated (word) bitmap_line::sy#10 +Self Phi Eliminated (word) bitmap_line::sy#2 Self Phi Eliminated (byte*) COSTAB#1 Self Phi Eliminated (byte*) bitmap_gfx#18 Self Phi Eliminated (byte*) bitmap_screen#17 @@ -1507,15 +1561,15 @@ Identical Phi Values (word) bitmap_line::y#0 (word) bitmap_line::y1#0 Identical Phi Values (word) bitmap_line::x2#1 (word) bitmap_line::x2#0 Identical Phi Values (word) bitmap_line::y2#1 (word) bitmap_line::y2#0 Identical Phi Values (word) bitmap_line::sy#1 (word) bitmap_line::sy#0 -Identical Phi Values (word) bitmap_line::dx#10 (word) bitmap_line::dx#0 -Identical Phi Values (word) bitmap_line::dy#10 (word) bitmap_line::dy#0 +Identical Phi Values (word) bitmap_line::dx#11 (word) bitmap_line::dx#0 +Identical Phi Values (word) bitmap_line::dy#11 (word) bitmap_line::dy#0 Identical Phi Values (word) bitmap_line::y2#3 (word) bitmap_line::y2#1 Identical Phi Values (word) bitmap_line::sx#1 (word) bitmap_line::sx#0 Identical Phi Values (word) bitmap_line::sx#11 (word) bitmap_line::sx#0 -Identical Phi Values (word) bitmap_line::dy#11 (word) bitmap_line::dy#0 +Identical Phi Values (word) bitmap_line::dy#12 (word) bitmap_line::dy#0 Identical Phi Values (word) bitmap_line::dx#12 (word) bitmap_line::dx#0 Identical Phi Values (word) bitmap_line::x2#3 (word) bitmap_line::x2#1 -Identical Phi Values (word) bitmap_line::sy#10 (word) bitmap_line::sy#0 +Identical Phi Values (word) bitmap_line::sy#2 (word) bitmap_line::sy#0 Identical Phi Values (byte*) bitmap_gfx#13 (byte*) bitmap_gfx#0 Identical Phi Values (byte*) bitmap_screen#12 (byte*) bitmap_screen#0 Identical Phi Values (byte*) COSTAB#3 (byte*) COSTAB#0 @@ -1539,15 +1593,19 @@ Simple Condition (bool~) bitmap_init::$1 [41] if((byte) bitmap_init::bits#1!=(by Simple Condition (bool~) bitmap_init::$2 [45] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 Simple Condition (bool~) bitmap_init::$9 [61] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 Simple Condition (bool~) bitmap_init::$11 [65] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) bitmap_line::$8 [130] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 -Simple Condition (bool~) bitmap_line::$15 [147] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 -Simple Condition (bool~) bitmap_line::$16 [150] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 -Simple Condition (bool~) bitmap_line::$21 [169] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -Simple Condition (bool~) bitmap_line::$22 [172] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -Simple Condition (bool~) abs_u16::$3 [181] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -Simple Condition (bool~) sgn_u16::$2 [194] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -Simple Condition (bool~) main::$15 [259] if((byte) main::i#1!=(byte) 8) goto main::@1 +Simple Condition (bool~) bitmap_line::$12 [136] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 +Simple Condition (bool~) bitmap_line::$21 [159] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@8 +Simple Condition (bool~) bitmap_line::$22 [162] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@7 +Simple Condition (bool~) bitmap_line::$27 [181] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@13 +Simple Condition (bool~) bitmap_line::$28 [184] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@12 +Simple Condition (bool~) abs_u16::$3 [192] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 +Simple Condition (bool~) sgn_u16::$2 [205] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 +Simple Condition (bool~) main::$15 [270] if((byte) main::i#1!=(byte) 8) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Rewriting ! if()-condition to reversed if() [118] (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Rewriting && if()-condition to two if()s [117] (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5 +Successful SSA optimization Pass2ConditionalAndOrRewriting Constant right-side identified [28] (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } Constant right-side identified [29] (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) } Constant right-side identified [30] (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) } @@ -1591,10 +1649,10 @@ Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified (void*)bitmap_screen#1 in [77] (void*) memset::str#0 ← (void*)(const byte*) bitmap_screen#1 Constant value identified (void*)bitmap_gfx#1 in [83] (void*) memset::str#1 ← (void*)(const byte*) bitmap_gfx#1 -Constant value identified (word)main::toD0181_screen#0 in [224] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 -Constant value identified (word)main::toD0181_gfx#0 in [228] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 +Constant value identified (word)main::toD0181_screen#0 in [235] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 +Constant value identified (word)main::toD0181_gfx#0 in [239] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [261] if(true) goto main::@4 +if() condition always true - replacing block destination [272] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [43] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ Resolved ranged comparison value [45] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 @@ -1626,10 +1684,15 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 Successful SSA optimization Pass2AliasElimination +Simple Condition (bool~) bitmap_line::$4 [57] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24 +Simple Condition (bool~) bitmap_line::$5 [145] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 +Successful SSA optimization Pass2ConditionalJumpSimplification +Negating conditional jump and destination [57] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 +Successful SSA optimization Pass2ConditionalJumpSequenceImprovement Constant right-side identified [31] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10 -Constant right-side identified [106] (byte*) COSTAB#0 ← (const byte[$180]) SINTAB#0 + (byte) $40 -Constant right-side identified [109] (byte~) main::$2 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 -Constant right-side identified [136] (byte*~) main::$18 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [112] (byte*) COSTAB#0 ← (const byte[$180]) SINTAB#0 + (byte) $40 +Constant right-side identified [115] (byte~) main::$2 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 +Constant right-side identified [142] (byte*~) main::$18 ← (const byte*) SCREEN#0 + (word) $3e7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10 Constant (const void*) memset::str#0 = (void*)bitmap_screen#1 @@ -1642,29 +1705,29 @@ Constant (const byte*) main::$18 = SCREEN#0+$3e7 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) memset::c#0 = bitmap_clear::col#0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [102] (byte~) main::$3 ← (const byte) main::$2 | (const byte) VIC_RSEL#0 -Constant right-side identified [105] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff -Constant right-side identified [108] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 +Constant right-side identified [106] (byte~) main::$3 ← (const byte) main::$2 | (const byte) VIC_RSEL#0 +Constant right-side identified [109] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff +Constant right-side identified [112] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$3 = main::$2|VIC_RSEL#0 Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [102] (byte~) main::$4 ← (const byte) main::$3 | (byte) 3 -Constant right-side identified [104] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 -Constant right-side identified [106] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 +Constant right-side identified [106] (byte~) main::$4 ← (const byte) main::$3 | (byte) 3 +Constant right-side identified [108] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 +Constant right-side identified [110] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$4 = main::$3|3 Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0*4 Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0/4 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [103] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 -Constant right-side identified [104] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f +Constant right-side identified [107] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 +Constant right-side identified [108] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [103] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 +Constant right-side identified [107] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification @@ -1673,8 +1736,8 @@ Inlining Noop Cast [4] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 ke Successful SSA optimization Pass2NopCastInlining Inlining Noop Cast [35] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 keeping bitmap_plot::plotter#0 Successful SSA optimization Pass2NopCastInlining -Rewriting division to use shift [58] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 / (byte) 2 -Rewriting division to use shift [59] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 / (byte) 2 +Rewriting division to use shift [63] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 / (byte) 2 +Rewriting division to use shift [64] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 / (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const word) memset::num#0 Inlining constant with var siblings (const byte) memset::c#1 @@ -1734,12 +1797,12 @@ Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and b Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) Added new block during phi lifting bitmap_init::@11(between bitmap_init::@6 and bitmap_init::@5) Added new block during phi lifting bitmap_init::@12(between bitmap_init::@5 and bitmap_init::@6) -Added new block during phi lifting bitmap_line::@20(between bitmap_line::@5 and bitmap_line::@4) -Added new block during phi lifting bitmap_line::@21(between bitmap_line::@17 and bitmap_line::@5) -Added new block during phi lifting bitmap_line::@22(between bitmap_line::@10 and bitmap_line::@2) -Added new block during phi lifting bitmap_line::@23(between bitmap_line::@5 and bitmap_line::@2) -Added new block during phi lifting bitmap_line::@24(between bitmap_line::@10 and bitmap_line::@9) -Added new block during phi lifting bitmap_line::@25(between bitmap_line::@19 and bitmap_line::@10) +Added new block during phi lifting bitmap_line::@25(between bitmap_line::@8 and bitmap_line::@7) +Added new block during phi lifting bitmap_line::@26(between bitmap_line::@21 and bitmap_line::@8) +Added new block during phi lifting bitmap_line::@27(between bitmap_line::@13 and bitmap_line::@3) +Added new block during phi lifting bitmap_line::@28(between bitmap_line::@8 and bitmap_line::@3) +Added new block during phi lifting bitmap_line::@29(between bitmap_line::@13 and bitmap_line::@12) +Added new block during phi lifting bitmap_line::@30(between bitmap_line::@23 and bitmap_line::@13) Added new block during phi lifting main::@13(between main::@12 and main::@1) Adding NOP phi() at start of @begin Adding NOP phi() at start of @8 @@ -1752,7 +1815,8 @@ Adding NOP phi() at start of main::@10 Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::toD0181_@return Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of bitmap_line::@18 +Adding NOP phi() at start of bitmap_line::@22 +Adding NOP phi() at start of bitmap_line::@20 Adding NOP phi() at start of sgn_u16::@3 Adding NOP phi() at start of sgn_u16::@1 Adding NOP phi() at start of bitmap_clear @@ -1765,56 +1829,58 @@ Adding NOP phi() at start of bitmap_init::@4 CALL GRAPH Calls in [] to main:4 Calls in [main] to bitmap_init:8 bitmap_clear:10 bitmap_line:22 -Calls in [bitmap_line] to abs_u16:32 abs_u16:37 sgn_u16:42 sgn_u16:47 bitmap_plot:60 bitmap_plot:77 bitmap_plot:94 -Calls in [bitmap_clear] to memset:136 memset:138 +Calls in [bitmap_line] to abs_u16:32 abs_u16:37 sgn_u16:44 sgn_u16:49 bitmap_plot:62 bitmap_plot:79 bitmap_plot:96 bitmap_plot:117 +Calls in [bitmap_clear] to memset:144 memset:146 Created 30 initial phi equivalence classes Coalesced [28] main::a#4 ← main::a#1 Coalesced [29] main::i#4 ← main::i#1 Coalesced [31] abs_u16::w#5 ← abs_u16::w#0 Coalesced [36] abs_u16::w#6 ← abs_u16::w#1 -Coalesced [41] sgn_u16::w#3 ← sgn_u16::w#0 -Coalesced [46] sgn_u16::w#4 ← sgn_u16::w#1 -Coalesced [52] bitmap_line::y#18 ← bitmap_line::y1#0 -Coalesced [53] bitmap_line::x#18 ← bitmap_line::x1#0 -Coalesced [54] bitmap_line::e#7 ← bitmap_line::e#0 -Coalesced [58] bitmap_plot::y#5 ← bitmap_plot::y#0 -Coalesced [59] bitmap_plot::x#5 ← bitmap_plot::x#0 -Coalesced [66] bitmap_line::x#21 ← bitmap_line::x#1 -Coalesced [67] bitmap_line::e#10 ← bitmap_line::e#2 -Coalesced [70] bitmap_line::y#21 ← bitmap_line::y#1 -Coalesced [71] bitmap_line::x#23 ← bitmap_line::x#10 -Coalesced [75] bitmap_plot::y#4 ← bitmap_plot::y#1 -Coalesced [76] bitmap_plot::x#4 ← bitmap_plot::x#1 -Coalesced [80] bitmap_line::y#19 ← bitmap_line::y#1 -Coalesced [81] bitmap_line::x#19 ← bitmap_line::x#10 -Coalesced [82] bitmap_line::e#8 ← bitmap_line::e#6 -Coalesced (already) [83] bitmap_line::x#20 ← bitmap_line::x#11 -Coalesced [84] bitmap_line::e#9 ← bitmap_line::e#1 -Coalesced [86] bitmap_line::y#22 ← bitmap_line::y1#0 -Coalesced [87] bitmap_line::x#24 ← bitmap_line::x1#0 -Coalesced [88] bitmap_line::e1#7 ← bitmap_line::e1#0 -Coalesced [92] bitmap_plot::y#6 ← bitmap_plot::y#2 -Coalesced [93] bitmap_plot::x#6 ← bitmap_plot::x#2 -Coalesced [100] bitmap_line::y#24 ← bitmap_line::y#2 -Coalesced [101] bitmap_line::e1#9 ← bitmap_line::e1#2 -Coalesced [104] bitmap_line::y#20 ← bitmap_line::y#11 -Coalesced [105] bitmap_line::x#22 ← bitmap_line::x#13 -Coalesced (already) [106] bitmap_line::y#23 ← bitmap_line::y#11 -Coalesced (already) [107] bitmap_line::x#25 ← bitmap_line::x#13 -Coalesced [108] bitmap_line::e1#8 ← bitmap_line::e1#6 -Coalesced (already) [109] bitmap_line::y#25 ← bitmap_line::y#13 -Coalesced [110] bitmap_line::e1#10 ← bitmap_line::e1#1 -Coalesced [130] abs_u16::return#9 ← abs_u16::w#2 -Coalesced [134] abs_u16::return#8 ← abs_u16::return#2 -Coalesced [151] memset::dst#4 ← memset::dst#1 -Coalesced [171] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [176] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [177] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [178] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [179] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [180] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [181] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [43] sgn_u16::w#3 ← sgn_u16::w#0 +Coalesced [48] sgn_u16::w#4 ← sgn_u16::w#1 +Coalesced [54] bitmap_line::y#20 ← bitmap_line::y1#0 +Coalesced [55] bitmap_line::x#20 ← bitmap_line::x1#0 +Coalesced [56] bitmap_line::e#7 ← bitmap_line::e#0 +Coalesced [60] bitmap_plot::y#8 ← bitmap_plot::y#1 +Coalesced [61] bitmap_plot::x#8 ← bitmap_plot::x#1 +Coalesced [68] bitmap_line::x#23 ← bitmap_line::x#1 +Coalesced [69] bitmap_line::e#10 ← bitmap_line::e#2 +Coalesced [72] bitmap_line::y#23 ← bitmap_line::y#1 +Coalesced [73] bitmap_line::x#25 ← bitmap_line::x#12 +Coalesced [77] bitmap_plot::y#6 ← bitmap_plot::y#2 +Coalesced [78] bitmap_plot::x#6 ← bitmap_plot::x#2 +Coalesced [82] bitmap_line::y#21 ← bitmap_line::y#1 +Coalesced [83] bitmap_line::x#21 ← bitmap_line::x#12 +Coalesced [84] bitmap_line::e#8 ← bitmap_line::e#6 +Coalesced (already) [85] bitmap_line::x#22 ← bitmap_line::x#13 +Coalesced [86] bitmap_line::e#9 ← bitmap_line::e#1 +Coalesced [88] bitmap_line::y#25 ← bitmap_line::y1#0 +Coalesced [89] bitmap_line::x#27 ← bitmap_line::x1#0 +Coalesced [90] bitmap_line::e1#8 ← bitmap_line::e1#0 +Coalesced [94] bitmap_plot::y#5 ← bitmap_plot::y#3 +Coalesced [95] bitmap_plot::x#5 ← bitmap_plot::x#3 +Coalesced [102] bitmap_line::y#26 ← bitmap_line::y#2 +Coalesced [103] bitmap_line::e1#9 ← bitmap_line::e1#2 +Coalesced [106] bitmap_line::y#22 ← bitmap_line::y#13 +Coalesced [107] bitmap_line::x#24 ← bitmap_line::x#15 +Coalesced (already) [108] bitmap_line::y#24 ← bitmap_line::y#13 +Coalesced (already) [109] bitmap_line::x#26 ← bitmap_line::x#15 +Coalesced [110] bitmap_line::e1#7 ← bitmap_line::e1#6 +Coalesced (already) [111] bitmap_line::y#27 ← bitmap_line::y#15 +Coalesced [112] bitmap_line::e1#10 ← bitmap_line::e1#1 +Coalesced [115] bitmap_plot::y#7 ← bitmap_plot::y#0 +Coalesced [116] bitmap_plot::x#7 ← bitmap_plot::x#0 +Coalesced [138] abs_u16::return#9 ← abs_u16::w#2 +Coalesced [142] abs_u16::return#8 ← abs_u16::return#2 +Coalesced [159] memset::dst#4 ← memset::dst#1 +Coalesced [179] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [184] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [185] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [186] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [187] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [188] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [189] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced down to 19 phi equivalence classes Culled Empty Block (label) @8 Culled Empty Block (label) @35 @@ -1822,13 +1888,14 @@ Culled Empty Block (label) @37 Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@13 -Culled Empty Block (label) bitmap_line::@23 -Culled Empty Block (label) bitmap_line::@18 -Culled Empty Block (label) bitmap_line::@20 -Culled Empty Block (label) bitmap_line::@21 +Culled Empty Block (label) bitmap_line::@28 Culled Empty Block (label) bitmap_line::@22 -Culled Empty Block (label) bitmap_line::@24 Culled Empty Block (label) bitmap_line::@25 +Culled Empty Block (label) bitmap_line::@26 +Culled Empty Block (label) bitmap_line::@27 +Culled Empty Block (label) bitmap_line::@29 +Culled Empty Block (label) bitmap_line::@30 +Culled Empty Block (label) bitmap_line::@20 Culled Empty Block (label) sgn_u16::@3 Culled Empty Block (label) abs_u16::@3 Culled Empty Block (label) bitmap_clear::@2 @@ -1846,15 +1913,20 @@ Renumbering block bitmap_init::@5 to bitmap_init::@3 Renumbering block bitmap_init::@6 to bitmap_init::@4 Renumbering block bitmap_init::@7 to bitmap_init::@5 Renumbering block bitmap_init::@10 to bitmap_init::@6 -Renumbering block bitmap_line::@9 to bitmap_line::@7 -Renumbering block bitmap_line::@10 to bitmap_line::@8 -Renumbering block bitmap_line::@11 to bitmap_line::@9 +Renumbering block bitmap_line::@6 to bitmap_line::@5 +Renumbering block bitmap_line::@7 to bitmap_line::@6 +Renumbering block bitmap_line::@8 to bitmap_line::@7 +Renumbering block bitmap_line::@9 to bitmap_line::@8 +Renumbering block bitmap_line::@12 to bitmap_line::@9 Renumbering block bitmap_line::@13 to bitmap_line::@10 Renumbering block bitmap_line::@14 to bitmap_line::@11 -Renumbering block bitmap_line::@15 to bitmap_line::@12 -Renumbering block bitmap_line::@16 to bitmap_line::@13 -Renumbering block bitmap_line::@17 to bitmap_line::@14 +Renumbering block bitmap_line::@16 to bitmap_line::@12 +Renumbering block bitmap_line::@17 to bitmap_line::@13 +Renumbering block bitmap_line::@18 to bitmap_line::@14 Renumbering block bitmap_line::@19 to bitmap_line::@15 +Renumbering block bitmap_line::@21 to bitmap_line::@16 +Renumbering block bitmap_line::@23 to bitmap_line::@17 +Renumbering block bitmap_line::@24 to bitmap_line::@18 Renumbering block main::@4 to main::@2 Renumbering block main::@9 to main::@3 Renumbering block main::@10 to main::@4 @@ -1922,196 +1994,207 @@ bitmap_line: scope:[bitmap_line] from main::@1 [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [24] call abs_u16 [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 - to:bitmap_line::@10 -bitmap_line::@10: scope:[bitmap_line] from bitmap_line + to:bitmap_line::@12 +bitmap_line::@12: scope:[bitmap_line] from bitmap_line [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [28] call abs_u16 [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 - to:bitmap_line::@11 -bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@10 - [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 - [32] call sgn_u16 - [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 - to:bitmap_line::@12 -bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@11 - [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 - [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 - [36] call sgn_u16 - [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 - [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 - to:bitmap_line::@3 -bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@13 - [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 - to:bitmap_line::@4 -bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@5 - [41] (word) bitmap_line::e#3 ← phi( bitmap_line::@3/(word) bitmap_line::e#0 bitmap_line::@5/(word) bitmap_line::e#6 ) - [41] (word) bitmap_line::x#11 ← phi( bitmap_line::@3/(word) bitmap_line::x1#0 bitmap_line::@5/(word) bitmap_line::x#10 ) - [41] (word) bitmap_line::y#3 ← phi( bitmap_line::@3/(word) bitmap_line::y1#0 bitmap_line::@5/(word) bitmap_line::y#1 ) - [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 - [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 - [44] call bitmap_plot + [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 + [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + to:bitmap_line::@1 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 + [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 + [34] call sgn_u16 + [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 to:bitmap_line::@14 -bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@4 - [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 - [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 - [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 - to:bitmap_line::@6 -bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@14 - [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 - [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 - to:bitmap_line::@5 -bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@14 bitmap_line::@6 - [50] (word) bitmap_line::e#6 ← phi( bitmap_line::@14/(word) bitmap_line::e#1 bitmap_line::@6/(word) bitmap_line::e#2 ) - [50] (word) bitmap_line::x#10 ← phi( bitmap_line::@14/(word) bitmap_line::x#11 bitmap_line::@6/(word) bitmap_line::x#1 ) - [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 - to:bitmap_line::@2 -bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@8 - [52] (word) bitmap_line::x#5 ← phi( bitmap_line::@8/(word) bitmap_line::x#13 bitmap_line::@5/(word) bitmap_line::x#10 ) - [52] (word) bitmap_line::y#6 ← phi( bitmap_line::@8/(word) bitmap_line::y#11 bitmap_line::@5/(word) bitmap_line::y#1 ) - [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 - [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 - [55] call bitmap_plot - to:bitmap_line::@return -bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@2 - [56] return - to:@return -bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 - [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 - to:bitmap_line::@7 -bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@1 bitmap_line::@8 - [58] (word) bitmap_line::e1#3 ← phi( bitmap_line::@1/(word) bitmap_line::e1#0 bitmap_line::@8/(word) bitmap_line::e1#6 ) - [58] (word) bitmap_line::x#6 ← phi( bitmap_line::@1/(word) bitmap_line::x1#0 bitmap_line::@8/(word) bitmap_line::x#13 ) - [58] (word) bitmap_line::y#13 ← phi( bitmap_line::@1/(word) bitmap_line::y1#0 bitmap_line::@8/(word) bitmap_line::y#11 ) - [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 - [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - [61] call bitmap_plot +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 + [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 + [38] call sgn_u16 + [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@15 -bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@7 - [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 - [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 - [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 - to:bitmap_line::@9 -bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@15 - [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 - [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 +bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 + [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + to:bitmap_line::@5 +bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 + [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + to:bitmap_line::@6 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 + [43] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [43] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x1#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [43] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y1#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [46] call bitmap_plot + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 + [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 to:bitmap_line::@8 -bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@15 bitmap_line::@9 - [67] (word) bitmap_line::e1#6 ← phi( bitmap_line::@9/(word) bitmap_line::e1#2 bitmap_line::@15/(word) bitmap_line::e1#1 ) - [67] (word) bitmap_line::y#11 ← phi( bitmap_line::@9/(word) bitmap_line::y#2 bitmap_line::@15/(word) bitmap_line::y#13 ) - [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 - to:bitmap_line::@2 -bitmap_plot: scope:[bitmap_plot] from bitmap_line::@2 bitmap_line::@4 bitmap_line::@7 - [69] (word) bitmap_plot::x#3 ← phi( bitmap_line::@2/(word) bitmap_plot::x#1 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@7/(word) bitmap_plot::x#2 ) - [69] (byte) bitmap_plot::y#3 ← phi( bitmap_line::@2/(byte) bitmap_plot::y#1 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@7/(byte) bitmap_plot::y#2 ) - [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) - [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 - [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 - [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 - [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 + [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 + [52] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [52] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 + to:bitmap_line::@3 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 + [54] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [54] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [57] call bitmap_plot + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 + [58] return + to:@return +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 + [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + to:bitmap_line::@9 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 + [60] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [60] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x1#0 ) + [60] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y1#0 ) + [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [63] call bitmap_plot + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 + [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + to:bitmap_line::@11 +bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 + [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + to:bitmap_line::@10 +bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 + [69] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [69] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 + to:bitmap_line::@3 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 + [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 + [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 + [73] call bitmap_plot + to:bitmap_line::@return +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 + [74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 ) + [74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 ) + [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 + [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 + [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [75] return + [80] return to:@return -sgn_u16: scope:[sgn_u16] from bitmap_line::@11 bitmap_line::@12 - [76] (word) sgn_u16::w#2 ← phi( bitmap_line::@11/(word) sgn_u16::w#0 bitmap_line::@12/(word) sgn_u16::w#1 ) - [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 - [78] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 - [79] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 + [81] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 to:sgn_u16::@return sgn_u16::@1: scope:[sgn_u16] from sgn_u16 - [80] phi() + [85] phi() to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 - [81] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) - [82] return + [86] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [87] return to:@return -abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@10 - [83] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@10/(word) abs_u16::w#1 ) - [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 - [85] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 - [86] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 + [88] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 to:abs_u16::@return abs_u16::@1: scope:[abs_u16] from abs_u16 - [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 - [88] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) - [89] return - to:@return -bitmap_clear: scope:[bitmap_clear] from main::@4 - [90] phi() - [91] call memset - to:bitmap_clear::@1 -bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear - [92] phi() - [93] call memset - to:bitmap_clear::@return -bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [93] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) [94] return to:@return +bitmap_clear: scope:[bitmap_clear] from main::@4 + [95] phi() + [96] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [97] phi() + [98] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [99] return + to:@return memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [95] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [95] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) - [95] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [96] if((word) memset::num#2<=(byte) 0) goto memset::@return + [100] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [100] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) + [100] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [101] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@2 - [99] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) - [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 - [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 - [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + [104] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [103] return + [108] return to:@return bitmap_init: scope:[bitmap_init] from main - [104] phi() + [109] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [105] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [105] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [106] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [107] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 - [108] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + [110] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [110] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [109] phi() + [114] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [110] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) - [111] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [112] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + [115] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [113] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [113] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 - [115] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [116] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 - [117] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [118] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [119] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [120] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + [118] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [118] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [122] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [122] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [123] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [124] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + [127] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [125] return + [130] return to:@return @@ -2167,9 +2250,9 @@ VARIABLE REGISTER WEIGHTS (byte*) bitmap_init::yoffs#4 11.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (word) bitmap_line::dx -(word) bitmap_line::dx#0 8.131578947368421 +(word) bitmap_line::dx#0 7.775 (word) bitmap_line::dy -(word) bitmap_line::dy#0 9.088235294117647 +(word) bitmap_line::dy#0 8.638888888888888 (word) bitmap_line::e (word) bitmap_line::e#0 4.0 (word) bitmap_line::e#1 134.66666666666666 @@ -2188,26 +2271,26 @@ VARIABLE REGISTER WEIGHTS (word) bitmap_line::sy#0 7.846153846153847 (word) bitmap_line::x (word) bitmap_line::x#1 101.0 -(word) bitmap_line::x#10 202.0 -(word) bitmap_line::x#11 58.00000000000001 -(word) bitmap_line::x#13 57.714285714285715 -(word) bitmap_line::x#5 102.0 -(word) bitmap_line::x#6 76.25 +(word) bitmap_line::x#12 202.0 +(word) bitmap_line::x#13 58.00000000000001 +(word) bitmap_line::x#15 57.714285714285715 +(word) bitmap_line::x#6 102.0 +(word) bitmap_line::x#7 76.25 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 0.7916666666666667 +(word) bitmap_line::x1#0 0.7777777777777778 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 3.741935483870968 +(word) bitmap_line::x2#0 3.515151515151515 (word) bitmap_line::y (word) bitmap_line::y#1 57.714285714285715 -(word) bitmap_line::y#11 202.0 -(word) bitmap_line::y#13 43.57142857142858 +(word) bitmap_line::y#13 202.0 +(word) bitmap_line::y#15 43.57142857142858 (word) bitmap_line::y#2 101.0 -(word) bitmap_line::y#3 51.0 -(word) bitmap_line::y#6 202.0 +(word) bitmap_line::y#4 51.0 +(word) bitmap_line::y#7 202.0 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 0.826086956521739 +(word) bitmap_line::y1#0 0.7599999999999999 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 3.8666666666666667 +(word) bitmap_line::y2#0 3.625 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) (word~) bitmap_plot::$1 4.0 (byte~) bitmap_plot::$2 4.0 @@ -2215,15 +2298,17 @@ VARIABLE REGISTER WEIGHTS (word) bitmap_plot::plotter#0 1.0 (byte*) bitmap_plot::plotter#1 3.0 (word) bitmap_plot::x -(word) bitmap_plot::x#0 202.0 -(word) bitmap_plot::x#1 4.0 -(word) bitmap_plot::x#2 202.0 -(word) bitmap_plot::x#3 52.0 +(word) bitmap_plot::x#0 4.0 +(word) bitmap_plot::x#1 202.0 +(word) bitmap_plot::x#2 4.0 +(word) bitmap_plot::x#3 202.0 +(word) bitmap_plot::x#4 52.5 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 101.0 -(byte) bitmap_plot::y#1 2.0 -(byte) bitmap_plot::y#2 101.0 -(byte) bitmap_plot::y#3 208.0 +(byte) bitmap_plot::y#0 2.0 +(byte) bitmap_plot::y#1 101.0 +(byte) bitmap_plot::y#2 2.0 +(byte) bitmap_plot::y#3 101.0 +(byte) bitmap_plot::y#4 210.0 (byte[$100]) bitmap_plot_bit (byte[$100]) bitmap_plot_yhi (byte[$100]) bitmap_plot_ylo @@ -2279,11 +2364,11 @@ Initial phi equivalence classes [ main::a#2 main::a#1 ] [ main::i#2 main::i#1 ] [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] -[ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] -[ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] -[ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] -[ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] -[ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] +[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] [ sgn_u16::return#4 ] [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] @@ -2324,11 +2409,11 @@ Complete equivalence classes [ main::a#2 main::a#1 ] [ main::i#2 main::i#1 ] [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] -[ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] -[ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] -[ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] -[ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] -[ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] +[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] [ sgn_u16::return#4 ] [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] @@ -2368,11 +2453,11 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::a#2 main::a#1 ] Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] -Allocated zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] -Allocated zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] -Allocated zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] -Allocated zp ZP_BYTE:12 [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] -Allocated zp ZP_WORD:13 [ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] +Allocated zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +Allocated zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +Allocated zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +Allocated zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +Allocated zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] Allocated zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] Allocated zp ZP_WORD:17 [ sgn_u16::return#4 ] Allocated zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] @@ -2452,7 +2537,7 @@ main: { .label a = 2 .label i = 3 // [5] call bitmap_init - // [104] phi from main to bitmap_init [phi:main->bitmap_init] + // [109] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [6] phi from main to main::@4 [phi:main->main::@4] @@ -2461,7 +2546,7 @@ main: { // main::@4 b4: // [7] call bitmap_clear - // [90] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + // [95] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] bitmap_clear_from_b4: jsr bitmap_clear jmp b5 @@ -2584,18 +2669,18 @@ bitmap_line: { sbc x1+1 sta abs_u16.w+1 // [24] call abs_u16 - // [83] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] abs_u16_from_bitmap_line: - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 lda abs_u16.return_4 sta abs_u16.return lda abs_u16.return_4+1 sta abs_u16.return+1 - jmp b10 - // bitmap_line::@10 - b10: + jmp b12 + // bitmap_line::@12 + b12: // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda abs_u16.return sta dx @@ -2610,24 +2695,41 @@ bitmap_line: { sbc y1+1 sta abs_u16.w+1 // [28] call abs_u16 - // [83] phi from bitmap_line::@10 to abs_u16 [phi:bitmap_line::@10->abs_u16] - abs_u16_from_b10: - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@10->abs_u16#0] -- register_copy + // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + abs_u16_from_b12: + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 lda abs_u16.return_4 sta abs_u16.return_1 lda abs_u16.return_4+1 sta abs_u16.return_1+1 - jmp b11 - // bitmap_line::@11 - b11: + jmp b13 + // bitmap_line::@13 + b13: // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 -- vwuz1=vwuz2 lda abs_u16.return_1 sta dy lda abs_u16.return_1+1 sta dy+1 - // [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + jmp b18 + // bitmap_line::@18 + b18: + // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + beq b4 + !: + jmp b1 + // bitmap_line::@1 + b1: + // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda x2 sec sbc x1 @@ -2635,25 +2737,25 @@ bitmap_line: { lda x2+1 sbc x1+1 sta sgn_u16.w+1 - // [32] call sgn_u16 - // [76] phi from bitmap_line::@11 to sgn_u16 [phi:bitmap_line::@11->sgn_u16] - sgn_u16_from_b11: - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@11->sgn_u16#0] -- register_copy + // [34] call sgn_u16 + // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + sgn_u16_from_b1: + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 - // [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 lda sgn_u16.return_4 sta sgn_u16.return lda sgn_u16.return_4+1 sta sgn_u16.return+1 - jmp b12 - // bitmap_line::@12 - b12: - // [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + jmp b14 + // bitmap_line::@14 + b14: + // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda sgn_u16.return sta sx lda sgn_u16.return+1 sta sx+1 - // [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda y2 sec sbc y1 @@ -2661,70 +2763,70 @@ bitmap_line: { lda y2+1 sbc y1+1 sta sgn_u16.w+1 - // [36] call sgn_u16 - // [76] phi from bitmap_line::@12 to sgn_u16 [phi:bitmap_line::@12->sgn_u16] - sgn_u16_from_b12: - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@12->sgn_u16#0] -- register_copy + // [38] call sgn_u16 + // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + sgn_u16_from_b14: + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 - // [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 lda sgn_u16.return_4 sta sgn_u16.return_1 lda sgn_u16.return_4+1 sta sgn_u16.return_1+1 - jmp b13 - // bitmap_line::@13 - b13: - // [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 + jmp b15 + // bitmap_line::@15 + b15: + // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 lda sgn_u16.return_1 sta sy lda sgn_u16.return_1+1 sta sy+1 - // [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 -- vwuz1_gt_vwuz2_then_la1 + // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda dy+1 cmp dx+1 - bcc b1 + bcc b2 bne !+ lda dy cmp dx - bcc b1 + bcc b2 !: - jmp b3 - // bitmap_line::@3 - b3: - // [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + jmp b5 + // bitmap_line::@5 + b5: + // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dx+1 lsr sta e+1 lda dx ror sta e - // [41] phi from bitmap_line::@3 bitmap_line::@5 to bitmap_line::@4 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4] - b4_from_b3: - b4_from_b5: - // [41] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#0] -- register_copy - // [41] phi (word) bitmap_line::x#11 = (word) bitmap_line::x1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#1] -- register_copy - // [41] phi (word) bitmap_line::y#3 = (word) bitmap_line::y1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#2] -- register_copy - jmp b4 - // bitmap_line::@4 - b4: - // [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 -- vbuz1=_byte_vwuz2 + // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + b6_from_b5: + b6_from_b7: + // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + jmp b6 + // bitmap_line::@6 + b6: + // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuz1=_byte_vwuz2 lda y sta bitmap_plot.y - // [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 -- vwuz1=vwuz2 + // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 -- vwuz1=vwuz2 lda x sta bitmap_plot.x lda x+1 sta bitmap_plot.x+1 - // [44] call bitmap_plot - // [69] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] - bitmap_plot_from_b4: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [46] call bitmap_plot + // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + bitmap_plot_from_b6: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot - jmp b14 - // bitmap_line::@14 - b14: - // [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + jmp b16 + // bitmap_line::@16 + b16: + // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -2732,7 +2834,7 @@ bitmap_line: { lda y+1 adc sy+1 sta y+1 - // [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda e clc adc dx @@ -2740,19 +2842,19 @@ bitmap_line: { lda e+1 adc dx+1 sta e+1 - // [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 -- vwuz1_ge_vwuz2_then_la1 + // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 lda e+1 cmp dy+1 bne !+ lda e cmp dy - beq b5_from_b14 + beq b7_from_b16 !: - bcc b5_from_b14 - jmp b6 - // bitmap_line::@6 - b6: - // [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + bcc b7_from_b16 + jmp b8 + // bitmap_line::@8 + b8: + // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -2760,7 +2862,7 @@ bitmap_line: { lda x+1 adc sx+1 sta x+1 - // [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda e sec sbc dy @@ -2768,84 +2870,84 @@ bitmap_line: { lda e+1 sbc dy+1 sta e+1 - // [50] phi from bitmap_line::@14 bitmap_line::@6 to bitmap_line::@5 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5] - b5_from_b14: - b5_from_b6: - // [50] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#0] -- register_copy - // [50] phi (word) bitmap_line::x#10 = (word) bitmap_line::x#11 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#1] -- register_copy - jmp b5 - // bitmap_line::@5 - b5: - // [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 -- vwuz1_neq_vwuz2_then_la1 + // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + b7_from_b16: + b7_from_b8: + // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + jmp b7 + // bitmap_line::@7 + b7: + // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda y+1 cmp y2+1 - bne b4_from_b5 + bne b6_from_b7 lda y cmp y2 - bne b4_from_b5 - // [52] phi from bitmap_line::@5 bitmap_line::@8 to bitmap_line::@2 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2] - b2_from_b5: - b2_from_b8: - // [52] phi (word) bitmap_line::x#5 = (word) bitmap_line::x#10 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#0] -- register_copy - // [52] phi (word) bitmap_line::y#6 = (word) bitmap_line::y#1 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#1] -- register_copy - jmp b2 - // bitmap_line::@2 - b2: - // [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 -- vbuz1=_byte_vwuz2 + bne b6_from_b7 + // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + b3_from_b10: + b3_from_b7: + // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + jmp b3 + // bitmap_line::@3 + b3: + // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuz1=_byte_vwuz2 lda y sta bitmap_plot.y - // [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 -- vwuz1=vwuz2 + // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 lda x sta bitmap_plot.x lda x+1 sta bitmap_plot.x+1 - // [55] call bitmap_plot - // [69] phi from bitmap_line::@2 to bitmap_plot [phi:bitmap_line::@2->bitmap_plot] - bitmap_plot_from_b2: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#1 [phi:bitmap_line::@2->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@2->bitmap_plot#1] -- register_copy + // [57] call bitmap_plot + // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + bitmap_plot_from_b3: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp breturn // bitmap_line::@return breturn: - // [56] return + // [58] return rts - // bitmap_line::@1 - b1: - // [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // bitmap_line::@2 + b2: + // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dy+1 lsr sta e1+1 lda dy ror sta e1 - // [58] phi from bitmap_line::@1 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7] - b7_from_b1: - b7_from_b8: - // [58] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [58] phi (word) bitmap_line::x#6 = (word) bitmap_line::x1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#1] -- register_copy - // [58] phi (word) bitmap_line::y#13 = (word) bitmap_line::y1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#2] -- register_copy - jmp b7 - // bitmap_line::@7 - b7: - // [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 -- vbuz1=_byte_vwuz2 + // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + b9_from_b10: + b9_from_b2: + // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + jmp b9 + // bitmap_line::@9 + b9: + // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuz1=_byte_vwuz2 lda y sta bitmap_plot.y - // [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 + // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 -- vwuz1=vwuz2 lda x sta bitmap_plot.x lda x+1 sta bitmap_plot.x+1 - // [61] call bitmap_plot - // [69] phi from bitmap_line::@7 to bitmap_plot [phi:bitmap_line::@7->bitmap_plot] - bitmap_plot_from_b7: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#2 [phi:bitmap_line::@7->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@7->bitmap_plot#1] -- register_copy + // [63] call bitmap_plot + // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + bitmap_plot_from_b9: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot - jmp b15 - // bitmap_line::@15 - b15: - // [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + jmp b17 + // bitmap_line::@17 + b17: + // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -2853,7 +2955,7 @@ bitmap_line: { lda x+1 adc sx+1 sta x+1 - // [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda e1 clc adc dy @@ -2861,19 +2963,19 @@ bitmap_line: { lda e1+1 adc dy+1 sta e1+1 - // [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 -- vwuz1_ge_vwuz2_then_la1 + // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 lda e1+1 cmp dx+1 bne !+ lda e1 cmp dx - beq b8_from_b15 + beq b10_from_b17 !: - bcc b8_from_b15 - jmp b9 - // bitmap_line::@9 - b9: - // [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + bcc b10_from_b17 + jmp b11 + // bitmap_line::@11 + b11: + // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -2881,7 +2983,7 @@ bitmap_line: { lda y+1 adc sy+1 sta y+1 - // [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda e1 sec sbc dx @@ -2889,22 +2991,39 @@ bitmap_line: { lda e1+1 sbc dx+1 sta e1+1 - // [67] phi from bitmap_line::@15 bitmap_line::@9 to bitmap_line::@8 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8] - b8_from_b15: - b8_from_b9: - // [67] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#1 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#0] -- register_copy - // [67] phi (word) bitmap_line::y#11 = (word) bitmap_line::y#13 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#1] -- register_copy - jmp b8 - // bitmap_line::@8 - b8: - // [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 -- vwuz1_neq_vwuz2_then_la1 + // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + b10_from_b11: + b10_from_b17: + // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + jmp b10 + // bitmap_line::@10 + b10: + // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda x+1 cmp x2+1 - bne b7_from_b8 + bne b9_from_b10 lda x cmp x2 - bne b7_from_b8 - jmp b2_from_b8 + bne b9_from_b10 + jmp b3_from_b10 + // bitmap_line::@4 + b4: + // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuz1=_byte_vwuz2 + lda y1 + sta bitmap_plot.y + // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 -- vwuz1=vwuz2 + lda x1 + sta bitmap_plot.x + lda x1+1 + sta bitmap_plot.x+1 + // [73] call bitmap_plot + // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + bitmap_plot_from_b4: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn } // bitmap_plot // Plot a single dot in the bitmap @@ -2916,20 +3035,20 @@ bitmap_plot: { .label plotter_1 = $3d .label x = $d .label y = $c - // [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + // [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy y lda bitmap_plot_yhi,y sta plotter+1 lda bitmap_plot_ylo,y sta plotter - // [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - // [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 lda plotter clc adc _1 @@ -2937,10 +3056,10 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter_1+1 - // [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 -- vbuz1=_lo_vwuz2 + // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuz1=_lo_vwuz2 lda x sta _2 - // [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter_1),y ldy _2 @@ -2950,7 +3069,7 @@ bitmap_plot: { jmp breturn // bitmap_plot::@return breturn: - // [75] return + // [80] return rts } // sgn_u16 @@ -2964,33 +3083,33 @@ sgn_u16: { .label return = $31 .label return_1 = $35 .label return_4 = $11 - // [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 + // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta _0 - // [78] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _0 sta _1 - // [79] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp _1 bne b1_from_sgn_u16 - // [81] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] breturn_from_sgn_u16: - // [81] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta return_4 lda #>1 sta return_4+1 jmp breturn - // [80] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] b1_from_sgn_u16: jmp b1 // sgn_u16::@1 b1: - // [81] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] breturn_from_b1: - // [81] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta return_4 lda #>-1 @@ -2998,7 +3117,7 @@ sgn_u16: { jmp breturn // sgn_u16::@return breturn: - // [82] return + // [87] return rts } // abs_u16 @@ -3012,25 +3131,25 @@ abs_u16: { .label return_1 = $2d .label return_2 = $13 .label return_4 = $13 - // [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 + // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta _0 - // [85] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _0 sta _1 - // [86] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp _1 bne b1 - // [88] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] breturn_from_abs_u16: breturn_from_b1: - // [88] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy jmp breturn // abs_u16::@1 b1: - // [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc return_2 @@ -3041,7 +3160,7 @@ abs_u16: { jmp breturn_from_b1 // abs_u16::@return breturn: - // [89] return + // [94] return rts } // bitmap_clear @@ -3050,40 +3169,40 @@ abs_u16: { // fgcol - the foreground color to fill the screen with bitmap_clear: { .const col = WHITE*$10 - // [91] call memset - // [95] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [96] call memset + // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [95] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + // [100] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 lda #col sta memset.c - // [95] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 jsr memset - // [92] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: jmp b1 // bitmap_clear::@1 b1: - // [93] call memset - // [95] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [98] call memset + // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from_b1: - // [95] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + // [100] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 lda #0 sta memset.c - // [95] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 @@ -3092,7 +3211,7 @@ bitmap_clear: { jmp breturn // bitmap_clear::@return breturn: - // [94] return + // [99] return rts } // memset @@ -3104,7 +3223,7 @@ memset: { .label num = $15 .label str = $17 .label c = $19 - // [96] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda num beq breturn lda num+1 @@ -3112,7 +3231,7 @@ memset: { jmp b1 // memset::@1 b1: - // [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 lda str clc adc num @@ -3120,28 +3239,28 @@ memset: { lda str+1 adc num+1 sta end+1 - // [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + // [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 lda str sta dst lda str+1 sta dst+1 - // [99] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + // [104] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] b2_from_b1: b2_from_b2: - // [99] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + // [104] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy jmp b2 // memset::@2 b2: - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 + // [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (dst),y - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - // [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + // [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b2_from_b2 @@ -3151,7 +3270,7 @@ memset: { jmp breturn // memset::@return breturn: - // [103] return + // [108] return rts } // bitmap_init @@ -3165,103 +3284,103 @@ bitmap_init: { .label x = $1d .label y = $1e .label yoffs = $1f - // [105] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - // [105] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - // [105] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - // [105] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - // [105] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - // [105] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 // bitmap_init::@1 b1: - // [106] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + // [111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - // [107] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr bits - // [108] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 + // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b6_from_b1 - // [110] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - // [110] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - // [109] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 // bitmap_init::@6 b6: - // [110] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - // [110] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 // bitmap_init::@2 b2: - // [111] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - // [112] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - // [113] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - // [113] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - // [113] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - // [113] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - // [113] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - // [113] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 // bitmap_init::@3 b3: - // [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - // [115] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + // [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - // [116] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + // [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _7 ora _4 sta _5 - // [117] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + // [122] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - // [118] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - // [119] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + // [124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - // [120] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4_from_b3 jmp b5 // bitmap_init::@5 b5: - // [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -3269,23 +3388,23 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - // [122] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - // [122] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 // bitmap_init::@4 b4: - // [123] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - // [124] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn // bitmap_init::@return breturn: - // [125] return + // [130] return rts } // File Data @@ -3316,52 +3435,56 @@ Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_li Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] -Statement [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 [ bitmap_line::x#5 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#5 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 [ bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) [ bitmap_plot::x#3 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 [ bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#3 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 ] ) always clobbers reg byte a reg byte y +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::a#2 main::a#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::i#2 main::i#1 ] -Statement [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:32 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:36 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [96] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:93 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:34 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:38 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a +Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ memset::c#3 ] -Statement [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:91 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:93 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a -Statement [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a -Statement [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ memset::c#3 ] -Statement [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a -Statement [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ bitmap_init::y#2 bitmap_init::y#1 ] Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -3380,48 +3503,52 @@ Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_li Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 [ bitmap_line::x#5 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#5 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 [ bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) [ bitmap_plot::x#3 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 [ bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#3 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 ] ) always clobbers reg byte a reg byte y -Statement [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:32 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:36 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [96] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:93 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a -Statement [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:91 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:93 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a -Statement [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a -Statement [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a -Statement [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:34 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:38 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a +Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] (word~) main::$6 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#2) [ main::a#2 main::i#2 main::$6 ] ( main:2 [ main::a#2 main::i#2 main::$6 ] ) always clobbers reg byte a @@ -3438,56 +3565,60 @@ Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_li Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a -Statement [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a -Statement [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a -Statement [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a -Statement [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a -Statement [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a -Statement [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a -Statement [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a -Statement [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 ] ) always clobbers reg byte a -Statement [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a -Statement [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#11 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a -Statement [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a -Statement [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a -Statement [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#10 bitmap_line::e#6 ] ) always clobbers reg byte a -Statement [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 [ bitmap_line::x#5 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#5 bitmap_plot::y#1 ] ) always clobbers reg byte a -Statement [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 [ bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a -Statement [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 ] ) always clobbers reg byte a -Statement [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a -Statement [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#3 ] ) always clobbers reg byte a -Statement [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#13 bitmap_line::e1#1 ] ) always clobbers reg byte a -Statement [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a -Statement [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a -Statement [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#11 bitmap_line::x#13 bitmap_line::e1#6 ] ) always clobbers reg byte a -Statement [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) [ bitmap_plot::x#3 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 [ bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#3 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::x#3 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:44 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#3 bitmap_line::x#11 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:55 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:61 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#6 bitmap_line::e1#3 ] ) always clobbers reg byte a reg byte y -Statement [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:32 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:36 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a -Statement [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a -Statement [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a -Statement [96] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:93 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a -Statement [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:91 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:93 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a -Statement [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a -Statement [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:91 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:93 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a -Statement [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a +Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a +Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a +Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a +Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a +Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a +Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a +Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a +Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a +Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a +Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a +Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a +Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a +Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a +Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a +Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a +Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a +Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a +Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a +Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a +Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:18 [ main::a#2 main::i#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::a#2 main::i#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:18::bitmap_plot:57 [ main::a#2 main::i#2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::a#2 main::i#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:18::bitmap_plot:73 [ main::a#2 main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:34 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:18::sgn_u16:38 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a +Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a +Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:18::abs_u16:24 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::a#2 main::i#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a +Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:98 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::a#2 main::a#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , Potential registers zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp ZP_WORD:6 , -Potential registers zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] : zp ZP_WORD:8 , -Potential registers zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp ZP_WORD:10 , -Potential registers zp ZP_BYTE:12 [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:13 [ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp ZP_WORD:6 , +Potential registers zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp ZP_WORD:8 , +Potential registers zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp ZP_WORD:10 , +Potential registers zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] : zp ZP_WORD:13 , Potential registers zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp ZP_WORD:15 , Potential registers zp ZP_WORD:17 [ sgn_u16::return#4 ] : zp ZP_WORD:17 , Potential registers zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp ZP_WORD:19 , @@ -3526,8 +3657,8 @@ Potential registers zp ZP_BYTE:72 [ bitmap_init::$5 ] : zp ZP_BYTE:72 , reg byte Potential registers zp ZP_BYTE:73 [ bitmap_init::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_line] 658.11: zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 597.76: zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] 532.97: zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] 9.09: zp ZP_WORD:47 [ bitmap_line::dy#0 ] 8.13: zp ZP_WORD:43 [ bitmap_line::dx#0 ] 7.85: zp ZP_WORD:55 [ bitmap_line::sy#0 ] 6.8: zp ZP_WORD:51 [ bitmap_line::sx#0 ] 3.87: zp ZP_WORD:39 [ bitmap_line::y2#0 ] 3.74: zp ZP_WORD:37 [ bitmap_line::x2#0 ] -Uplift Scope [bitmap_plot] 460: zp ZP_WORD:13 [ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] 412: zp ZP_BYTE:12 [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] 4: zp ZP_WORD:59 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:63 [ bitmap_plot::$2 ] 3: zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line] 658.05: zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 597.74: zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 532.97: zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8.64: zp ZP_WORD:47 [ bitmap_line::dy#0 ] 7.85: zp ZP_WORD:55 [ bitmap_line::sy#0 ] 7.78: zp ZP_WORD:43 [ bitmap_line::dx#0 ] 6.8: zp ZP_WORD:51 [ bitmap_line::sx#0 ] 3.62: zp ZP_WORD:39 [ bitmap_line::y2#0 ] 3.52: zp ZP_WORD:37 [ bitmap_line::x2#0 ] +Uplift Scope [bitmap_plot] 464.5: zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 416: zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 4: zp ZP_WORD:59 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:63 [ bitmap_plot::$2 ] 3: zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] Uplift Scope [bitmap_init] 39.88: zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp ZP_BYTE:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:71 [ bitmap_init::$4 ] 22: zp ZP_BYTE:72 [ bitmap_init::$5 ] 22: zp ZP_BYTE:73 [ bitmap_init::$6 ] 5.5: zp ZP_BYTE:70 [ bitmap_init::$7 ] Uplift Scope [main] 22: zp ZP_WORD:33 [ main::$6 ] 22: zp ZP_WORD:35 [ main::$10 ] 18.94: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] 10.08: zp ZP_BYTE:2 [ main::a#2 main::a#1 ] Uplift Scope [memset] 38: zp ZP_WORD:26 [ memset::dst#2 memset::dst#3 memset::dst#1 ] 2.17: zp ZP_WORD:68 [ memset::end#0 ] 2: zp ZP_WORD:21 [ memset::num#2 ] 1.38: zp ZP_BYTE:25 [ memset::c#3 ] 0: zp ZP_WORD:23 [ memset::str#3 ] @@ -3536,28 +3667,28 @@ Uplift Scope [sgn_u16] 14: zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w# Uplift Scope [bitmap_clear] Uplift Scope [] -Uplifting [bitmap_line] best 33596 combination zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] zp ZP_WORD:47 [ bitmap_line::dy#0 ] zp ZP_WORD:43 [ bitmap_line::dx#0 ] zp ZP_WORD:55 [ bitmap_line::sy#0 ] zp ZP_WORD:51 [ bitmap_line::sx#0 ] zp ZP_WORD:39 [ bitmap_line::y2#0 ] zp ZP_WORD:37 [ bitmap_line::x2#0 ] -Uplifting [bitmap_plot] best 33388 combination zp ZP_WORD:13 [ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] reg byte x [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] zp ZP_WORD:59 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] -Uplifting [bitmap_init] best 32878 combination zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:72 [ bitmap_init::$5 ] zp ZP_BYTE:73 [ bitmap_init::$6 ] zp ZP_BYTE:70 [ bitmap_init::$7 ] +Uplifting [bitmap_line] best 33651 combination zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp ZP_WORD:47 [ bitmap_line::dy#0 ] zp ZP_WORD:55 [ bitmap_line::sy#0 ] zp ZP_WORD:43 [ bitmap_line::dx#0 ] zp ZP_WORD:51 [ bitmap_line::sx#0 ] zp ZP_WORD:39 [ bitmap_line::y2#0 ] zp ZP_WORD:37 [ bitmap_line::x2#0 ] +Uplifting [bitmap_plot] best 33442 combination zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:59 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_init] best 32932 combination zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:72 [ bitmap_init::$5 ] zp ZP_BYTE:73 [ bitmap_init::$6 ] zp ZP_BYTE:70 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [main] best 32878 combination zp ZP_WORD:33 [ main::$6 ] zp ZP_WORD:35 [ main::$10 ] zp ZP_BYTE:3 [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ main::a#2 main::a#1 ] -Uplifting [memset] best 32862 combination zp ZP_WORD:26 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:68 [ memset::end#0 ] zp ZP_WORD:21 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:23 [ memset::str#3 ] -Uplifting [abs_u16] best 32850 combination zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp ZP_WORD:41 [ abs_u16::return#0 ] zp ZP_WORD:45 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] -Uplifting [sgn_u16] best 32838 combination zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:49 [ sgn_u16::return#0 ] zp ZP_WORD:53 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp ZP_WORD:17 [ sgn_u16::return#4 ] -Uplifting [bitmap_clear] best 32838 combination -Uplifting [] best 32838 combination +Uplifting [main] best 32932 combination zp ZP_WORD:33 [ main::$6 ] zp ZP_WORD:35 [ main::$10 ] zp ZP_BYTE:3 [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ main::a#2 main::a#1 ] +Uplifting [memset] best 32916 combination zp ZP_WORD:26 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:68 [ memset::end#0 ] zp ZP_WORD:21 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:23 [ memset::str#3 ] +Uplifting [abs_u16] best 32904 combination zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp ZP_WORD:41 [ abs_u16::return#0 ] zp ZP_WORD:45 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] +Uplifting [sgn_u16] best 32892 combination zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:49 [ sgn_u16::return#0 ] zp ZP_WORD:53 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp ZP_WORD:17 [ sgn_u16::return#4 ] +Uplifting [bitmap_clear] best 32892 combination +Uplifting [] best 32892 combination Attempting to uplift remaining variables inzp ZP_BYTE:72 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 32778 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 32832 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 32718 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 32772 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::i#2 main::i#1 ] -Uplifting [main] best 32718 combination zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Uplifting [main] best 32772 combination zp ZP_BYTE:3 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::a#2 main::a#1 ] -Uplifting [main] best 32718 combination zp ZP_BYTE:2 [ main::a#2 main::a#1 ] +Uplifting [main] best 32772 combination zp ZP_BYTE:2 [ main::a#2 main::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 32718 combination zp ZP_BYTE:70 [ bitmap_init::$7 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 ] ] with [ zp ZP_WORD:13 [ bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] ] - score: 3 -Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 ] ] with [ zp ZP_WORD:33 [ main::$6 ] ] - score: 1 +Uplifting [bitmap_init] best 32772 combination zp ZP_BYTE:70 [ bitmap_init::$7 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 4 +Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp ZP_WORD:33 [ main::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ sgn_u16::return#4 ] ] with [ zp ZP_WORD:49 [ sgn_u16::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp ZP_WORD:53 [ sgn_u16::return#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp ZP_WORD:41 [ abs_u16::return#0 ] ] - score: 1 @@ -3624,7 +3755,7 @@ main: { .label a = 2 .label i = 3 // [5] call bitmap_init - // [104] phi from main to bitmap_init [phi:main->bitmap_init] + // [109] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [6] phi from main to main::@4 [phi:main->main::@4] @@ -3633,7 +3764,7 @@ main: { // main::@4 b4: // [7] call bitmap_clear - // [90] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + // [95] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] bitmap_clear_from_b4: jsr bitmap_clear jmp b5 @@ -3756,14 +3887,14 @@ bitmap_line: { sbc x1+1 sta abs_u16.w+1 // [24] call abs_u16 - // [83] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] abs_u16_from_bitmap_line: - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 - jmp b10 - // bitmap_line::@10 - b10: + jmp b12 + // bitmap_line::@12 + b12: // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda abs_u16.return sta dx @@ -3778,16 +3909,33 @@ bitmap_line: { sbc y1+1 sta abs_u16.w+1 // [28] call abs_u16 - // [83] phi from bitmap_line::@10 to abs_u16 [phi:bitmap_line::@10->abs_u16] - abs_u16_from_b10: - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@10->abs_u16#0] -- register_copy + // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + abs_u16_from_b12: + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 - jmp b11 - // bitmap_line::@11 - b11: + jmp b13 + // bitmap_line::@13 + b13: // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - // [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + jmp b18 + // bitmap_line::@18 + b18: + // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + beq b4 + !: + jmp b1 + // bitmap_line::@1 + b1: + // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda x2 sec sbc x1 @@ -3795,21 +3943,21 @@ bitmap_line: { lda x2+1 sbc x1+1 sta sgn_u16.w+1 - // [32] call sgn_u16 - // [76] phi from bitmap_line::@11 to sgn_u16 [phi:bitmap_line::@11->sgn_u16] - sgn_u16_from_b11: - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@11->sgn_u16#0] -- register_copy + // [34] call sgn_u16 + // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + sgn_u16_from_b1: + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 - // [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 - jmp b12 - // bitmap_line::@12 - b12: - // [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + jmp b14 + // bitmap_line::@14 + b14: + // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda sgn_u16.return sta sx lda sgn_u16.return+1 sta sx+1 - // [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda y2 sec sbc y1 @@ -3817,58 +3965,58 @@ bitmap_line: { lda y2+1 sbc y1+1 sta sgn_u16.w+1 - // [36] call sgn_u16 - // [76] phi from bitmap_line::@12 to sgn_u16 [phi:bitmap_line::@12->sgn_u16] - sgn_u16_from_b12: - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@12->sgn_u16#0] -- register_copy + // [38] call sgn_u16 + // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + sgn_u16_from_b14: + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 - // [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 - jmp b13 - // bitmap_line::@13 - b13: - // [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - // [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 -- vwuz1_gt_vwuz2_then_la1 + // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + jmp b15 + // bitmap_line::@15 + b15: + // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda dy+1 cmp dx+1 - bcc b1 + bcc b2 bne !+ lda dy cmp dx - bcc b1 + bcc b2 !: - jmp b3 - // bitmap_line::@3 - b3: - // [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + jmp b5 + // bitmap_line::@5 + b5: + // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dx+1 lsr sta e+1 lda dx ror sta e - // [41] phi from bitmap_line::@3 bitmap_line::@5 to bitmap_line::@4 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4] - b4_from_b3: - b4_from_b5: - // [41] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#0] -- register_copy - // [41] phi (word) bitmap_line::x#11 = (word) bitmap_line::x1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#1] -- register_copy - // [41] phi (word) bitmap_line::y#3 = (word) bitmap_line::y1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#2] -- register_copy - jmp b4 - // bitmap_line::@4 - b4: - // [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 -- vbuxx=_byte_vwuz1 + // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + b6_from_b5: + b6_from_b7: + // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + jmp b6 + // bitmap_line::@6 + b6: + // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 lda y tax - // [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 - // [44] call bitmap_plot - // [69] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] - bitmap_plot_from_b4: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [46] call bitmap_plot + // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + bitmap_plot_from_b6: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot - jmp b14 - // bitmap_line::@14 - b14: - // [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + jmp b16 + // bitmap_line::@16 + b16: + // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -3876,7 +4024,7 @@ bitmap_line: { lda y+1 adc sy+1 sta y+1 - // [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda e clc adc dx @@ -3884,19 +4032,19 @@ bitmap_line: { lda e+1 adc dx+1 sta e+1 - // [47] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@5 -- vwuz1_ge_vwuz2_then_la1 + // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 lda e+1 cmp dy+1 bne !+ lda e cmp dy - beq b5_from_b14 + beq b7_from_b16 !: - bcc b5_from_b14 - jmp b6 - // bitmap_line::@6 - b6: - // [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + bcc b7_from_b16 + jmp b8 + // bitmap_line::@8 + b8: + // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -3904,7 +4052,7 @@ bitmap_line: { lda x+1 adc sx+1 sta x+1 - // [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda e sec sbc dy @@ -3912,76 +4060,76 @@ bitmap_line: { lda e+1 sbc dy+1 sta e+1 - // [50] phi from bitmap_line::@14 bitmap_line::@6 to bitmap_line::@5 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5] - b5_from_b14: - b5_from_b6: - // [50] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#0] -- register_copy - // [50] phi (word) bitmap_line::x#10 = (word) bitmap_line::x#11 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#1] -- register_copy - jmp b5 - // bitmap_line::@5 - b5: - // [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 -- vwuz1_neq_vwuz2_then_la1 + // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + b7_from_b16: + b7_from_b8: + // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + jmp b7 + // bitmap_line::@7 + b7: + // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda y+1 cmp y2+1 - bne b4_from_b5 + bne b6_from_b7 lda y cmp y2 - bne b4_from_b5 - // [52] phi from bitmap_line::@5 bitmap_line::@8 to bitmap_line::@2 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2] - b2_from_b5: - b2_from_b8: - // [52] phi (word) bitmap_line::x#5 = (word) bitmap_line::x#10 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#0] -- register_copy - // [52] phi (word) bitmap_line::y#6 = (word) bitmap_line::y#1 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#1] -- register_copy - jmp b2 - // bitmap_line::@2 - b2: - // [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 -- vbuxx=_byte_vwuz1 + bne b6_from_b7 + // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + b3_from_b10: + b3_from_b7: + // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + jmp b3 + // bitmap_line::@3 + b3: + // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 lda y tax - // [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 - // [55] call bitmap_plot - // [69] phi from bitmap_line::@2 to bitmap_plot [phi:bitmap_line::@2->bitmap_plot] - bitmap_plot_from_b2: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#1 [phi:bitmap_line::@2->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@2->bitmap_plot#1] -- register_copy + // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [57] call bitmap_plot + // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + bitmap_plot_from_b3: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp breturn // bitmap_line::@return breturn: - // [56] return + // [58] return rts - // bitmap_line::@1 - b1: - // [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // bitmap_line::@2 + b2: + // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dy+1 lsr sta e1+1 lda dy ror sta e1 - // [58] phi from bitmap_line::@1 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7] - b7_from_b1: - b7_from_b8: - // [58] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [58] phi (word) bitmap_line::x#6 = (word) bitmap_line::x1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#1] -- register_copy - // [58] phi (word) bitmap_line::y#13 = (word) bitmap_line::y1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#2] -- register_copy - jmp b7 - // bitmap_line::@7 - b7: - // [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 -- vbuxx=_byte_vwuz1 + // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + b9_from_b10: + b9_from_b2: + // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + jmp b9 + // bitmap_line::@9 + b9: + // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 lda y tax - // [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - // [61] call bitmap_plot - // [69] phi from bitmap_line::@7 to bitmap_plot [phi:bitmap_line::@7->bitmap_plot] - bitmap_plot_from_b7: - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#2 [phi:bitmap_line::@7->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@7->bitmap_plot#1] -- register_copy + // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [63] call bitmap_plot + // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + bitmap_plot_from_b9: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot - jmp b15 - // bitmap_line::@15 - b15: - // [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + jmp b17 + // bitmap_line::@17 + b17: + // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -3989,7 +4137,7 @@ bitmap_line: { lda x+1 adc sx+1 sta x+1 - // [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda e1 clc adc dy @@ -3997,19 +4145,19 @@ bitmap_line: { lda e1+1 adc dy+1 sta e1+1 - // [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 -- vwuz1_ge_vwuz2_then_la1 + // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 lda e1+1 cmp dx+1 bne !+ lda e1 cmp dx - beq b8_from_b15 + beq b10_from_b17 !: - bcc b8_from_b15 - jmp b9 - // bitmap_line::@9 - b9: - // [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + bcc b10_from_b17 + jmp b11 + // bitmap_line::@11 + b11: + // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -4017,7 +4165,7 @@ bitmap_line: { lda y+1 adc sy+1 sta y+1 - // [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda e1 sec sbc dx @@ -4025,22 +4173,35 @@ bitmap_line: { lda e1+1 sbc dx+1 sta e1+1 - // [67] phi from bitmap_line::@15 bitmap_line::@9 to bitmap_line::@8 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8] - b8_from_b15: - b8_from_b9: - // [67] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#1 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#0] -- register_copy - // [67] phi (word) bitmap_line::y#11 = (word) bitmap_line::y#13 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#1] -- register_copy - jmp b8 - // bitmap_line::@8 - b8: - // [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 -- vwuz1_neq_vwuz2_then_la1 + // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + b10_from_b11: + b10_from_b17: + // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + jmp b10 + // bitmap_line::@10 + b10: + // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda x+1 cmp x2+1 - bne b7_from_b8 + bne b9_from_b10 lda x cmp x2 - bne b7_from_b8 - jmp b2_from_b8 + bne b9_from_b10 + jmp b3_from_b10 + // bitmap_line::@4 + b4: + // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 + lda y1 + tax + // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 + // [73] call bitmap_plot + // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + bitmap_plot_from_b4: + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn } // bitmap_plot // Plot a single dot in the bitmap @@ -4049,19 +4210,19 @@ bitmap_plot: { .label _1 = $22 .label plotter = $20 .label x = 8 - // [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta plotter+1 lda bitmap_plot_ylo,x sta plotter - // [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - // [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -4069,9 +4230,9 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - // [73] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#3 -- vbuaa=_lo_vwuz1 + // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 lda x - // [74] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa tay lda bitmap_plot_bit,y ldy #0 @@ -4081,7 +4242,7 @@ bitmap_plot: { jmp breturn // bitmap_plot::@return breturn: - // [75] return + // [80] return rts } // sgn_u16 @@ -4091,29 +4252,29 @@ bitmap_plot: { sgn_u16: { .label w = $c .label return = $e - // [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 lda w+1 - // [78] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [79] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne b1_from_sgn_u16 - // [81] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] breturn_from_sgn_u16: - // [81] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta return lda #>1 sta return+1 jmp breturn - // [80] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] b1_from_sgn_u16: jmp b1 // sgn_u16::@1 b1: - // [81] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] breturn_from_b1: - // [81] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta return lda #>-1 @@ -4121,7 +4282,7 @@ sgn_u16: { jmp breturn // sgn_u16::@return breturn: - // [82] return + // [87] return rts } // abs_u16 @@ -4130,21 +4291,21 @@ sgn_u16: { abs_u16: { .label w = $10 .label return = $10 - // [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 lda w+1 - // [85] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [86] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne b1 - // [88] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] breturn_from_abs_u16: breturn_from_b1: - // [88] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy jmp breturn // abs_u16::@1 b1: - // [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc return @@ -4155,7 +4316,7 @@ abs_u16: { jmp breturn_from_b1 // abs_u16::@return breturn: - // [89] return + // [94] return rts } // bitmap_clear @@ -4164,38 +4325,38 @@ abs_u16: { // fgcol - the foreground color to fill the screen with bitmap_clear: { .const col = WHITE*$10 - // [91] call memset - // [95] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [96] call memset + // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [95] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [100] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [95] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 jsr memset - // [92] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: jmp b1 // bitmap_clear::@1 b1: - // [93] call memset - // [95] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [98] call memset + // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from_b1: - // [95] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [100] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [95] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 @@ -4204,7 +4365,7 @@ bitmap_clear: { jmp breturn // bitmap_clear::@return breturn: - // [94] return + // [99] return rts } // memset @@ -4215,7 +4376,7 @@ memset: { .label dst = $14 .label num = $12 .label str = $14 - // [96] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda num beq breturn lda num+1 @@ -4223,7 +4384,7 @@ memset: { jmp b1 // memset::@1 b1: - // [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc str @@ -4231,24 +4392,24 @@ memset: { lda end+1 adc str+1 sta end+1 - // [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 - // [99] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + // [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [104] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] b2_from_b1: b2_from_b2: - // [99] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + // [104] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy jmp b2 // memset::@2 b2: - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + // [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - // [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + // [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b2_from_b2 @@ -4258,7 +4419,7 @@ memset: { jmp breturn // memset::@return breturn: - // [103] return + // [108] return rts } // bitmap_init @@ -4266,86 +4427,86 @@ memset: { bitmap_init: { .label _7 = $24 .label yoffs = $16 - // [105] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - // [105] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - // [105] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - // [105] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - // [105] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - // [105] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 // bitmap_init::@1 b1: - // [106] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + // [111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - // [107] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 lsr - // [108] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b6_from_b1 - // [110] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - // [110] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - // [109] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 // bitmap_init::@6 b6: - // [110] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - // [110] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 // bitmap_init::@2 b2: - // [111] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - // [112] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - // [113] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - // [113] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - // [113] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - // [113] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - // [113] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - // [113] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 // bitmap_init::@3 b3: - // [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _7 - // [115] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + // [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - // [116] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + // [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _7 - // [117] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + // [122] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - // [118] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - // [119] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + // [124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - // [120] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4_from_b3 jmp b5 // bitmap_init::@5 b5: - // [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -4353,22 +4514,22 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - // [122] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - // [122] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 // bitmap_init::@4 b4: - // [123] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - // [124] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn // bitmap_init::@return breturn: - // [125] return + // [130] return rts } // File Data @@ -4390,21 +4551,23 @@ Removing instruction jmp b3 Removing instruction jmp b1 Removing instruction jmp b6 Removing instruction jmp b2 -Removing instruction jmp b10 -Removing instruction jmp b11 Removing instruction jmp b12 Removing instruction jmp b13 -Removing instruction jmp b3 -Removing instruction jmp b4 +Removing instruction jmp b18 +Removing instruction jmp b1 Removing instruction jmp b14 -Removing instruction jmp b6 -Removing instruction jmp b5 -Removing instruction jmp b2 -Removing instruction jmp breturn -Removing instruction jmp b7 Removing instruction jmp b15 -Removing instruction jmp b9 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b16 Removing instruction jmp b8 +Removing instruction jmp b7 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b9 +Removing instruction jmp b17 +Removing instruction jmp b11 +Removing instruction jmp b10 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -4428,15 +4591,15 @@ Removing instruction lda e1+1 Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b6 with b1 -Replacing label b5_from_b14 with b5 -Replacing label b5_from_b14 with b5 -Replacing label b4_from_b5 with b4 -Replacing label b4_from_b5 with b4 -Replacing label b8_from_b15 with b8 -Replacing label b8_from_b15 with b8 -Replacing label b7_from_b8 with b7 -Replacing label b7_from_b8 with b7 -Replacing label b2_from_b8 with b2 +Replacing label b7_from_b16 with b7 +Replacing label b7_from_b16 with b7 +Replacing label b6_from_b7 with b6 +Replacing label b6_from_b7 with b6 +Replacing label b10_from_b17 with b10 +Replacing label b10_from_b17 with b10 +Replacing label b9_from_b10 with b9 +Replacing label b9_from_b10 with b9 +Replacing label b3_from_b10 with b3 Replacing label b1_from_sgn_u16 with b1 Replacing label b2_from_b2 with b2 Replacing label b2_from_b2 with b2 @@ -4453,16 +4616,16 @@ Removing instruction bitmap_clear_from_b4: Removing instruction toD0181_from_b5: Removing instruction toD0181: Removing instruction b1_from_b6: -Removing instruction b4_from_b3: -Removing instruction b4_from_b5: -Removing instruction b5_from_b14: -Removing instruction b5_from_b6: -Removing instruction b2_from_b5: -Removing instruction b2_from_b8: -Removing instruction b7_from_b1: +Removing instruction b6_from_b5: +Removing instruction b6_from_b7: +Removing instruction b7_from_b16: Removing instruction b7_from_b8: -Removing instruction b8_from_b15: -Removing instruction b8_from_b9: +Removing instruction b3_from_b10: +Removing instruction b3_from_b7: +Removing instruction b9_from_b10: +Removing instruction b9_from_b2: +Removing instruction b10_from_b11: +Removing instruction b10_from_b17: Removing instruction b1_from_sgn_u16: Removing instruction breturn_from_b1: Removing instruction breturn_from_abs_u16: @@ -4486,22 +4649,23 @@ Removing instruction b3: Removing instruction b1_from_b3: Removing instruction b6: Removing instruction abs_u16_from_bitmap_line: -Removing instruction b10: -Removing instruction abs_u16_from_b10: -Removing instruction b11: -Removing instruction sgn_u16_from_b11: Removing instruction b12: -Removing instruction sgn_u16_from_b12: +Removing instruction abs_u16_from_b12: Removing instruction b13: -Removing instruction b3: -Removing instruction bitmap_plot_from_b4: +Removing instruction b18: +Removing instruction sgn_u16_from_b1: Removing instruction b14: -Removing instruction b6: -Removing instruction bitmap_plot_from_b2: -Removing instruction breturn: -Removing instruction bitmap_plot_from_b7: +Removing instruction sgn_u16_from_b14: Removing instruction b15: -Removing instruction b9: +Removing instruction b5: +Removing instruction bitmap_plot_from_b6: +Removing instruction b16: +Removing instruction b8: +Removing instruction bitmap_plot_from_b3: +Removing instruction bitmap_plot_from_b9: +Removing instruction b17: +Removing instruction b11: +Removing instruction bitmap_plot_from_b4: Removing instruction breturn: Removing instruction breturn_from_sgn_u16: Removing instruction memset_from_bitmap_clear: @@ -4519,6 +4683,7 @@ Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Replacing jump to rts with rts in jmp breturn Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn Skipping double jump to breturn in jmp breturn_from_b1 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label breturn_from_b1 to b2 @@ -4531,9 +4696,11 @@ Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Removing instruction breturn: +Removing instruction breturn: Removing instruction b2: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination +Fixing long branch [117] beq b4 to bne FINAL SYMBOL TABLE (label) @1 @@ -4618,6 +4785,9 @@ FINAL SYMBOL TABLE (label) bitmap_line::@13 (label) bitmap_line::@14 (label) bitmap_line::@15 +(label) bitmap_line::@16 +(label) bitmap_line::@17 +(label) bitmap_line::@18 (label) bitmap_line::@2 (label) bitmap_line::@3 (label) bitmap_line::@4 @@ -4628,9 +4798,9 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx -(word) bitmap_line::dx#0 dx zp ZP_WORD:28 8.131578947368421 +(word) bitmap_line::dx#0 dx zp ZP_WORD:28 7.775 (word) bitmap_line::dy -(word) bitmap_line::dy#0 dy zp ZP_WORD:16 9.088235294117647 +(word) bitmap_line::dy#0 dy zp ZP_WORD:16 8.638888888888888 (word) bitmap_line::e (word) bitmap_line::e#0 e zp ZP_WORD:4 4.0 (word) bitmap_line::e#1 e zp ZP_WORD:4 134.66666666666666 @@ -4649,26 +4819,26 @@ FINAL SYMBOL TABLE (word) bitmap_line::sy#0 sy zp ZP_WORD:14 7.846153846153847 (word) bitmap_line::x (word) bitmap_line::x#1 x zp ZP_WORD:8 101.0 -(word) bitmap_line::x#10 x zp ZP_WORD:8 202.0 -(word) bitmap_line::x#11 x zp ZP_WORD:8 58.00000000000001 -(word) bitmap_line::x#13 x zp ZP_WORD:8 57.714285714285715 -(word) bitmap_line::x#5 x zp ZP_WORD:8 102.0 -(word) bitmap_line::x#6 x zp ZP_WORD:8 76.25 +(word) bitmap_line::x#12 x zp ZP_WORD:8 202.0 +(word) bitmap_line::x#13 x zp ZP_WORD:8 58.00000000000001 +(word) bitmap_line::x#15 x zp ZP_WORD:8 57.714285714285715 +(word) bitmap_line::x#6 x zp ZP_WORD:8 102.0 +(word) bitmap_line::x#7 x zp ZP_WORD:8 76.25 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 x1 zp ZP_WORD:8 0.7916666666666667 +(word) bitmap_line::x1#0 x1 zp ZP_WORD:8 0.7777777777777778 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp ZP_WORD:24 3.741935483870968 +(word) bitmap_line::x2#0 x2 zp ZP_WORD:24 3.515151515151515 (word) bitmap_line::y (word) bitmap_line::y#1 y zp ZP_WORD:6 57.714285714285715 -(word) bitmap_line::y#11 y zp ZP_WORD:6 202.0 -(word) bitmap_line::y#13 y zp ZP_WORD:6 43.57142857142858 +(word) bitmap_line::y#13 y zp ZP_WORD:6 202.0 +(word) bitmap_line::y#15 y zp ZP_WORD:6 43.57142857142858 (word) bitmap_line::y#2 y zp ZP_WORD:6 101.0 -(word) bitmap_line::y#3 y zp ZP_WORD:6 51.0 -(word) bitmap_line::y#6 y zp ZP_WORD:6 202.0 +(word) bitmap_line::y#4 y zp ZP_WORD:6 51.0 +(word) bitmap_line::y#7 y zp ZP_WORD:6 202.0 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 y1 zp ZP_WORD:6 0.826086956521739 +(word) bitmap_line::y1#0 y1 zp ZP_WORD:6 0.7599999999999999 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 y2 zp ZP_WORD:26 3.8666666666666667 +(word) bitmap_line::y2#0 y2 zp ZP_WORD:26 3.625 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) (word~) bitmap_plot::$1 $1 zp ZP_WORD:34 4.0 (byte~) bitmap_plot::$2 reg byte a 4.0 @@ -4677,15 +4847,17 @@ FINAL SYMBOL TABLE (word) bitmap_plot::plotter#0 plotter zp ZP_WORD:32 1.0 (byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:32 3.0 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp ZP_WORD:8 202.0 -(word) bitmap_plot::x#1 x zp ZP_WORD:8 4.0 -(word) bitmap_plot::x#2 x zp ZP_WORD:8 202.0 -(word) bitmap_plot::x#3 x zp ZP_WORD:8 52.0 +(word) bitmap_plot::x#0 x zp ZP_WORD:8 4.0 +(word) bitmap_plot::x#1 x zp ZP_WORD:8 202.0 +(word) bitmap_plot::x#2 x zp ZP_WORD:8 4.0 +(word) bitmap_plot::x#3 x zp ZP_WORD:8 202.0 +(word) bitmap_plot::x#4 x zp ZP_WORD:8 52.5 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 101.0 -(byte) bitmap_plot::y#1 reg byte x 2.0 -(byte) bitmap_plot::y#2 reg byte x 101.0 -(byte) bitmap_plot::y#3 reg byte x 208.0 +(byte) bitmap_plot::y#0 reg byte x 2.0 +(byte) bitmap_plot::y#1 reg byte x 101.0 +(byte) bitmap_plot::y#2 reg byte x 2.0 +(byte) bitmap_plot::y#3 reg byte x 101.0 +(byte) bitmap_plot::y#4 reg byte x 210.0 (byte[$100]) bitmap_plot_bit (const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi @@ -4756,10 +4928,10 @@ FINAL SYMBOL TABLE zp ZP_BYTE:2 [ main::a#2 main::a#1 ] zp ZP_BYTE:3 [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] -zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] -zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 main::$6 ] -zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] -reg byte x [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] +zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$6 ] +zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:12 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] zp ZP_WORD:16 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] @@ -4788,7 +4960,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 27187 +Score: 27229 // File Comments // Tests the simple bitmap plotter @@ -4823,13 +4995,13 @@ main: { .label i = 3 // bitmap_init(BITMAP, SCREEN) // [5] call bitmap_init - // [104] phi from main to bitmap_init [phi:main->bitmap_init] + // [109] phi from main to bitmap_init [phi:main->bitmap_init] jsr bitmap_init // [6] phi from main to main::@4 [phi:main->main::@4] // main::@4 // bitmap_clear(BLACK, WHITE) // [7] call bitmap_clear - // [90] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + // [95] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] jsr bitmap_clear // main::@5 // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 @@ -4945,12 +5117,12 @@ bitmap_line: { sbc x1+1 sta abs_u16.w+1 // [24] call abs_u16 - // [83] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // abs_u16(x2-x1) // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 - // bitmap_line::@10 + // bitmap_line::@12 // dx = abs_u16(x2-x1) // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda abs_u16.return @@ -4967,16 +5139,33 @@ bitmap_line: { sbc y1+1 sta abs_u16.w+1 // [28] call abs_u16 - // [83] phi from bitmap_line::@10 to abs_u16 [phi:bitmap_line::@10->abs_u16] - // [83] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@10->abs_u16#0] -- register_copy + // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // abs_u16(y2-y1) // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 - // bitmap_line::@11 + // bitmap_line::@13 // dy = abs_u16(y2-y1) // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + // if(dx==0 && dy==0) + // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + // bitmap_line::@18 + // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + bne !b4+ + jmp b4 + !b4: + !: + // bitmap_line::@1 + b1: // sgn_u16(x2-x1) - // [31] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda x2 sec sbc x1 @@ -4984,21 +5173,21 @@ bitmap_line: { lda x2+1 sbc x1+1 sta sgn_u16.w+1 - // [32] call sgn_u16 - // [76] phi from bitmap_line::@11 to sgn_u16 [phi:bitmap_line::@11->sgn_u16] - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@11->sgn_u16#0] -- register_copy + // [34] call sgn_u16 + // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 // sgn_u16(x2-x1) - // [33] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 - // bitmap_line::@12 + // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + // bitmap_line::@14 // sx = sgn_u16(x2-x1) - // [34] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda sgn_u16.return sta sx lda sgn_u16.return+1 sta sx+1 // sgn_u16(y2-y1) - // [35] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 + // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda y2 sec sbc y1 @@ -5006,53 +5195,53 @@ bitmap_line: { lda y2+1 sbc y1+1 sta sgn_u16.w+1 - // [36] call sgn_u16 - // [76] phi from bitmap_line::@12 to sgn_u16 [phi:bitmap_line::@12->sgn_u16] - // [76] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@12->sgn_u16#0] -- register_copy + // [38] call sgn_u16 + // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 // sgn_u16(y2-y1) - // [37] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 - // bitmap_line::@13 + // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + // bitmap_line::@15 // sy = sgn_u16(y2-y1) - // [38] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 // if(dx > dy) - // [39] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@1 -- vwuz1_gt_vwuz2_then_la1 + // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda dy+1 cmp dx+1 - bcc b1 + bcc b2 bne !+ lda dy cmp dx - bcc b1 + bcc b2 !: - // bitmap_line::@3 + // bitmap_line::@5 // e = dx/2 - // [40] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dx+1 lsr sta e+1 lda dx ror sta e - // [41] phi from bitmap_line::@3 bitmap_line::@5 to bitmap_line::@4 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4] - // [41] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#0] -- register_copy - // [41] phi (word) bitmap_line::x#11 = (word) bitmap_line::x1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#1] -- register_copy - // [41] phi (word) bitmap_line::y#3 = (word) bitmap_line::y1#0 [phi:bitmap_line::@3/bitmap_line::@5->bitmap_line::@4#2] -- register_copy - // bitmap_line::@4 - b4: + // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + // bitmap_line::@6 + b6: // bitmap_plot(x,(byte)y) - // [42] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#3 -- vbuxx=_byte_vwuz1 + // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 lda y tax - // [43] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#11 - // [44] call bitmap_plot - // [69] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [46] call bitmap_plot + // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot - // bitmap_line::@14 + // bitmap_line::@16 // y += sy - // [45] (word) bitmap_line::y#1 ← (word) bitmap_line::y#3 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -5061,7 +5250,7 @@ bitmap_line: { adc sy+1 sta y+1 // e += dx - // [46] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda e clc adc dx @@ -5070,17 +5259,17 @@ bitmap_line: { adc dx+1 sta e+1 // if(dy=(word) bitmap_line::e#1) goto bitmap_line::@5 -- vwuz1_ge_vwuz2_then_la1 + // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 cmp dy+1 bne !+ lda e cmp dy - beq b5 + beq b7 !: - bcc b5 - // bitmap_line::@6 + bcc b7 + // bitmap_line::@8 // x += sx - // [48] (word) bitmap_line::x#1 ← (word) bitmap_line::x#11 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -5089,7 +5278,7 @@ bitmap_line: { adc sx+1 sta x+1 // e -= dy - // [49] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda e sec sbc dy @@ -5097,67 +5286,67 @@ bitmap_line: { lda e+1 sbc dy+1 sta e+1 - // [50] phi from bitmap_line::@14 bitmap_line::@6 to bitmap_line::@5 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5] - // [50] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#0] -- register_copy - // [50] phi (word) bitmap_line::x#10 = (word) bitmap_line::x#11 [phi:bitmap_line::@14/bitmap_line::@6->bitmap_line::@5#1] -- register_copy - // bitmap_line::@5 - b5: + // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + // bitmap_line::@7 + b7: // while (y != y2) - // [51] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@4 -- vwuz1_neq_vwuz2_then_la1 + // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda y+1 cmp y2+1 - bne b4 + bne b6 lda y cmp y2 - bne b4 - // [52] phi from bitmap_line::@5 bitmap_line::@8 to bitmap_line::@2 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2] - // [52] phi (word) bitmap_line::x#5 = (word) bitmap_line::x#10 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#0] -- register_copy - // [52] phi (word) bitmap_line::y#6 = (word) bitmap_line::y#1 [phi:bitmap_line::@5/bitmap_line::@8->bitmap_line::@2#1] -- register_copy - // bitmap_line::@2 - b2: + bne b6 + // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + // bitmap_line::@3 + b3: // bitmap_plot(x,(byte)y) - // [53] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#6 -- vbuxx=_byte_vwuz1 + // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 lda y tax - // [54] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#5 - // [55] call bitmap_plot - // [69] phi from bitmap_line::@2 to bitmap_plot [phi:bitmap_line::@2->bitmap_plot] - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#1 [phi:bitmap_line::@2->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@2->bitmap_plot#1] -- register_copy + // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [57] call bitmap_plot + // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@return // } - // [56] return + // [58] return rts - // bitmap_line::@1 - b1: + // bitmap_line::@2 + b2: // e = dy/2 - // [57] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda dy+1 lsr sta e1+1 lda dy ror sta e1 - // [58] phi from bitmap_line::@1 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7] - // [58] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [58] phi (word) bitmap_line::x#6 = (word) bitmap_line::x1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#1] -- register_copy - // [58] phi (word) bitmap_line::y#13 = (word) bitmap_line::y1#0 [phi:bitmap_line::@1/bitmap_line::@8->bitmap_line::@7#2] -- register_copy - // bitmap_line::@7 - b7: + // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + // bitmap_line::@9 + b9: // bitmap_plot(x,(byte)y) - // [59] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#13 -- vbuxx=_byte_vwuz1 + // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 lda y tax - // [60] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - // [61] call bitmap_plot - // [69] phi from bitmap_line::@7 to bitmap_plot [phi:bitmap_line::@7->bitmap_plot] - // [69] phi (word) bitmap_plot::x#3 = (word) bitmap_plot::x#2 [phi:bitmap_line::@7->bitmap_plot#0] -- register_copy - // [69] phi (byte) bitmap_plot::y#3 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@7->bitmap_plot#1] -- register_copy + // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [63] call bitmap_plot + // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot - // bitmap_line::@15 + // bitmap_line::@17 // x += sx - // [62] (word) bitmap_line::x#13 ← (word) bitmap_line::x#6 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc sx @@ -5166,7 +5355,7 @@ bitmap_line: { adc sx+1 sta x+1 // e += dy - // [63] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda e1 clc adc dy @@ -5175,17 +5364,17 @@ bitmap_line: { adc dy+1 sta e1+1 // if(dx < e) - // [64] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@8 -- vwuz1_ge_vwuz2_then_la1 + // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 cmp dx+1 bne !+ lda e1 cmp dx - beq b8 + beq b10 !: - bcc b8 - // bitmap_line::@9 + bcc b10 + // bitmap_line::@11 // y += sy - // [65] (word) bitmap_line::y#2 ← (word) bitmap_line::y#13 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda y clc adc sy @@ -5194,7 +5383,7 @@ bitmap_line: { adc sy+1 sta y+1 // e -= dx - // [66] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda e1 sec sbc dx @@ -5202,20 +5391,33 @@ bitmap_line: { lda e1+1 sbc dx+1 sta e1+1 - // [67] phi from bitmap_line::@15 bitmap_line::@9 to bitmap_line::@8 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8] - // [67] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#1 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#0] -- register_copy - // [67] phi (word) bitmap_line::y#11 = (word) bitmap_line::y#13 [phi:bitmap_line::@15/bitmap_line::@9->bitmap_line::@8#1] -- register_copy - // bitmap_line::@8 - b8: + // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + // bitmap_line::@10 + b10: // while (x != x2) - // [68] if((word) bitmap_line::x#13!=(word) bitmap_line::x2#0) goto bitmap_line::@7 -- vwuz1_neq_vwuz2_then_la1 + // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda x+1 cmp x2+1 - bne b7 + bne b9 lda x cmp x2 - bne b7 - jmp b2 + bne b9 + jmp b3 + // bitmap_line::@4 + b4: + // bitmap_plot(x,(byte)y) + // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 + lda y1 + tax + // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 + // [73] call bitmap_plot + // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + rts } // bitmap_plot // Plot a single dot in the bitmap @@ -5225,13 +5427,13 @@ bitmap_plot: { .label plotter = $20 .label x = 8 // (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [70] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#3) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#3) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta plotter+1 lda bitmap_plot_ylo,x sta plotter // x & $fff8 - // [71] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#3 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 @@ -5239,7 +5441,7 @@ bitmap_plot: { and #>$fff8 sta _1+1 // plotter += ( x & $fff8 ) - // [72] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -5248,10 +5450,10 @@ bitmap_plot: { adc _1+1 sta plotter+1 // w - // [77] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 lda w+1 // >w&0x80 - // [78] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(>w&0x80) - // [79] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne b1 - // [81] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] - // [81] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta return lda #>1 sta return+1 rts - // [80] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] // sgn_u16::@1 b1: - // [81] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] - // [81] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta return lda #>-1 sta return+1 // sgn_u16::@return // } - // [82] return + // [87] return rts } // abs_u16 @@ -5307,22 +5509,22 @@ abs_u16: { .label w = $10 .label return = $10 // >w - // [84] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 lda w+1 // >w&0x80 - // [85] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(>w&0x80) - // [86] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne b1 - // [88] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] - // [88] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy rts // abs_u16::@1 b1: // return -w; - // [87] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc return @@ -5332,7 +5534,7 @@ abs_u16: { sta return+1 // abs_u16::@return // } - // [89] return + // [94] return rts } // bitmap_clear @@ -5342,34 +5544,34 @@ abs_u16: { bitmap_clear: { .const col = WHITE*$10 // memset(bitmap_screen, col, 1000uw) - // [91] call memset - // [95] phi from bitmap_clear to memset [phi:bitmap_clear->memset] - // [95] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [96] call memset + // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [100] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [95] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 jsr memset - // [92] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] // bitmap_clear::@1 // memset(bitmap_gfx, 0, 8000uw) - // [93] call memset - // [95] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] - // [95] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [98] call memset + // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [100] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [95] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 - // [95] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 @@ -5377,7 +5579,7 @@ bitmap_clear: { jsr memset // bitmap_clear::@return // } - // [94] return + // [99] return rts } // memset @@ -5389,14 +5591,14 @@ memset: { .label num = $12 .label str = $14 // if(num>0) - // [96] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda num beq breturn lda num+1 beq breturn // memset::@1 // end = (char*)str + num - // [97] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc str @@ -5404,23 +5606,23 @@ memset: { lda end+1 adc str+1 sta end+1 - // [98] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 - // [99] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] - // [99] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + // [103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [104] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + // [104] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy // memset::@2 b2: // *dst = c - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + // [105] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - // [102] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + // [107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b2 @@ -5430,7 +5632,7 @@ memset: { // memset::@return breturn: // } - // [103] return + // [108] return rts } // bitmap_init @@ -5438,81 +5640,81 @@ memset: { bitmap_init: { .label _7 = $24 .label yoffs = $16 - // [105] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - // [105] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - // [105] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - // [105] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - // [105] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - // [105] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy // bitmap_init::@1 b1: // bitmap_plot_bit[x] = bits - // [106] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + // [111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x // bits >>= 1 - // [107] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 lsr // if(bits==0) - // [108] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - // [110] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - // [110] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - // [109] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] // bitmap_init::@6 - // [110] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] - // [110] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy // bitmap_init::@2 b2: // for(byte x : 0..255) - // [111] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - // [112] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - // [113] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - // [113] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - // [113] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - // [113] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - // [113] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - // [113] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy // bitmap_init::@3 b3: // y&$7 - // [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _7 // yoffs - // [118] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 // bitmap_plot_yhi[y] = >yoffs - // [119] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + // [124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // if((y&$7)==7) - // [120] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4 // bitmap_init::@5 // yoffs = yoffs + 40*8 - // [121] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -5520,19 +5722,19 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - // [122] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] - // [122] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy // bitmap_init::@4 b4: // for(byte y : 0..255) - // [123] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - // [124] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 // bitmap_init::@return // } - // [125] return + // [130] return rts } // File Data diff --git a/src/test/ref/bitmap-plot-3.sym b/src/test/ref/bitmap-plot-3.sym index 46ecfa0b5..92f7338f7 100644 --- a/src/test/ref/bitmap-plot-3.sym +++ b/src/test/ref/bitmap-plot-3.sym @@ -80,6 +80,9 @@ (label) bitmap_line::@13 (label) bitmap_line::@14 (label) bitmap_line::@15 +(label) bitmap_line::@16 +(label) bitmap_line::@17 +(label) bitmap_line::@18 (label) bitmap_line::@2 (label) bitmap_line::@3 (label) bitmap_line::@4 @@ -90,9 +93,9 @@ (label) bitmap_line::@9 (label) bitmap_line::@return (word) bitmap_line::dx -(word) bitmap_line::dx#0 dx zp ZP_WORD:28 8.131578947368421 +(word) bitmap_line::dx#0 dx zp ZP_WORD:28 7.775 (word) bitmap_line::dy -(word) bitmap_line::dy#0 dy zp ZP_WORD:16 9.088235294117647 +(word) bitmap_line::dy#0 dy zp ZP_WORD:16 8.638888888888888 (word) bitmap_line::e (word) bitmap_line::e#0 e zp ZP_WORD:4 4.0 (word) bitmap_line::e#1 e zp ZP_WORD:4 134.66666666666666 @@ -111,26 +114,26 @@ (word) bitmap_line::sy#0 sy zp ZP_WORD:14 7.846153846153847 (word) bitmap_line::x (word) bitmap_line::x#1 x zp ZP_WORD:8 101.0 -(word) bitmap_line::x#10 x zp ZP_WORD:8 202.0 -(word) bitmap_line::x#11 x zp ZP_WORD:8 58.00000000000001 -(word) bitmap_line::x#13 x zp ZP_WORD:8 57.714285714285715 -(word) bitmap_line::x#5 x zp ZP_WORD:8 102.0 -(word) bitmap_line::x#6 x zp ZP_WORD:8 76.25 +(word) bitmap_line::x#12 x zp ZP_WORD:8 202.0 +(word) bitmap_line::x#13 x zp ZP_WORD:8 58.00000000000001 +(word) bitmap_line::x#15 x zp ZP_WORD:8 57.714285714285715 +(word) bitmap_line::x#6 x zp ZP_WORD:8 102.0 +(word) bitmap_line::x#7 x zp ZP_WORD:8 76.25 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 x1 zp ZP_WORD:8 0.7916666666666667 +(word) bitmap_line::x1#0 x1 zp ZP_WORD:8 0.7777777777777778 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp ZP_WORD:24 3.741935483870968 +(word) bitmap_line::x2#0 x2 zp ZP_WORD:24 3.515151515151515 (word) bitmap_line::y (word) bitmap_line::y#1 y zp ZP_WORD:6 57.714285714285715 -(word) bitmap_line::y#11 y zp ZP_WORD:6 202.0 -(word) bitmap_line::y#13 y zp ZP_WORD:6 43.57142857142858 +(word) bitmap_line::y#13 y zp ZP_WORD:6 202.0 +(word) bitmap_line::y#15 y zp ZP_WORD:6 43.57142857142858 (word) bitmap_line::y#2 y zp ZP_WORD:6 101.0 -(word) bitmap_line::y#3 y zp ZP_WORD:6 51.0 -(word) bitmap_line::y#6 y zp ZP_WORD:6 202.0 +(word) bitmap_line::y#4 y zp ZP_WORD:6 51.0 +(word) bitmap_line::y#7 y zp ZP_WORD:6 202.0 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 y1 zp ZP_WORD:6 0.826086956521739 +(word) bitmap_line::y1#0 y1 zp ZP_WORD:6 0.7599999999999999 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 y2 zp ZP_WORD:26 3.8666666666666667 +(word) bitmap_line::y2#0 y2 zp ZP_WORD:26 3.625 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) (word~) bitmap_plot::$1 $1 zp ZP_WORD:34 4.0 (byte~) bitmap_plot::$2 reg byte a 4.0 @@ -139,15 +142,17 @@ (word) bitmap_plot::plotter#0 plotter zp ZP_WORD:32 1.0 (byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:32 3.0 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp ZP_WORD:8 202.0 -(word) bitmap_plot::x#1 x zp ZP_WORD:8 4.0 -(word) bitmap_plot::x#2 x zp ZP_WORD:8 202.0 -(word) bitmap_plot::x#3 x zp ZP_WORD:8 52.0 +(word) bitmap_plot::x#0 x zp ZP_WORD:8 4.0 +(word) bitmap_plot::x#1 x zp ZP_WORD:8 202.0 +(word) bitmap_plot::x#2 x zp ZP_WORD:8 4.0 +(word) bitmap_plot::x#3 x zp ZP_WORD:8 202.0 +(word) bitmap_plot::x#4 x zp ZP_WORD:8 52.5 (byte) bitmap_plot::y -(byte) bitmap_plot::y#0 reg byte x 101.0 -(byte) bitmap_plot::y#1 reg byte x 2.0 -(byte) bitmap_plot::y#2 reg byte x 101.0 -(byte) bitmap_plot::y#3 reg byte x 208.0 +(byte) bitmap_plot::y#0 reg byte x 2.0 +(byte) bitmap_plot::y#1 reg byte x 101.0 +(byte) bitmap_plot::y#2 reg byte x 2.0 +(byte) bitmap_plot::y#3 reg byte x 101.0 +(byte) bitmap_plot::y#4 reg byte x 210.0 (byte[$100]) bitmap_plot_bit (const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi @@ -218,10 +223,10 @@ zp ZP_BYTE:2 [ main::a#2 main::a#1 ] zp ZP_BYTE:3 [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] -zp ZP_WORD:6 [ bitmap_line::y#13 bitmap_line::y#6 bitmap_line::y#11 bitmap_line::y#3 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] -zp ZP_WORD:8 [ bitmap_line::x#6 bitmap_line::x#5 bitmap_line::x#13 bitmap_line::x#11 bitmap_line::x1#0 bitmap_line::x#10 bitmap_line::x#1 bitmap_plot::x#3 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#2 main::$6 ] -zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#0 bitmap_line::e1#6 bitmap_line::e1#2 bitmap_line::e1#1 ] -reg byte x [ bitmap_plot::y#3 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#2 ] +zp ZP_WORD:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +zp ZP_WORD:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$6 ] +zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:12 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] zp ZP_WORD:16 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] diff --git a/src/test/ref/complex/splines/simple-splines.asm b/src/test/ref/complex/splines/simple-splines.asm new file mode 100644 index 000000000..0cdbe4969 --- /dev/null +++ b/src/test/ref/complex/splines/simple-splines.asm @@ -0,0 +1,1237 @@ +// Show a few simple splines using the splines library +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const MOVE_TO = 0 + .const SPLINE_TO = 1 + .const LINE_TO = 2 + .const SIZEOF_STRUCT_SEGMENT = 9 + .const SIZEOF_STRUCT_SPLINEVECTOR16 = 4 + .const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2 + .const OFFSET_STRUCT_SEGMENT_TO = 1 + .const OFFSET_STRUCT_SEGMENT_VIA = 5 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + .const WHITE = 1 + .label PRINT_SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 +main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label segment_via_x = $16 + .label segment_via_y = $18 + .label i = 2 + .label current_x = 3 + .label current_y = 5 + .label current_x_8 = $20 + .label current_y_8 = $22 + lda #MOVE_TO + sta letter_c + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + lda #SPLINE_TO + sta letter_c+1*SIZEOF_STRUCT_SEGMENT + lda #<$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT + lda #>$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT+1 + lda #<$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT+1 + lda #<$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+2*SIZEOF_STRUCT_SEGMENT + lda #<$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT + lda #>$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT+1 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT + lda #>$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT+1 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+3*SIZEOF_STRUCT_SEGMENT + lda #<$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT + lda #>$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT+1 + lda #<$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + lda #<$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT + lda #>$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT+1 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+4*SIZEOF_STRUCT_SEGMENT + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT+1 + lda #<$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT+1 + lda #<$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+5*SIZEOF_STRUCT_SEGMENT + lda #<$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT + lda #>$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT+1 + lda #<$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT+1 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+6*SIZEOF_STRUCT_SEGMENT + lda #<$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT + lda #>$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT+1 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + lda #<$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT + lda #>$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT+1 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+7*SIZEOF_STRUCT_SEGMENT + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT+1 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+8*SIZEOF_STRUCT_SEGMENT + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT+1 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT+1 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+9*SIZEOF_STRUCT_SEGMENT + lda #<$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT + lda #>$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT+1 + lda #<$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT+1 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$a*SIZEOF_STRUCT_SEGMENT + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT+1 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT+1 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$b*SIZEOF_STRUCT_SEGMENT + lda #<$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT + lda #>$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT+1 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + lda #<$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT + lda #>$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT+1 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$c*SIZEOF_STRUCT_SEGMENT + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT+1 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT+1 + lda #<$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$d*SIZEOF_STRUCT_SEGMENT + lda #<$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT + lda #>$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT+1 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT+1 + lda #<$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$e*SIZEOF_STRUCT_SEGMENT + lda #<$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT + lda #>$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$f*SIZEOF_STRUCT_SEGMENT + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT+1 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + lda #<$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT + lda #>$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT+1 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$10*SIZEOF_STRUCT_SEGMENT + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT+1 + lda #<$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT+1 + lda #<$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$11*SIZEOF_STRUCT_SEGMENT + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT+1 + lda #<$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT+1 + lda #<$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$12*SIZEOF_STRUCT_SEGMENT + lda #<$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT + lda #>$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT+1 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + lda #<$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT + lda #>$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT+1 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$13*SIZEOF_STRUCT_SEGMENT + lda #<$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT + lda #>$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT+1 + lda #<$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + lda #<$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT + lda #>$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT+1 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + lda #SPLINE_TO + sta letter_c+$14*SIZEOF_STRUCT_SEGMENT + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT+1 + lda #<$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT+1 + lda #<$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + lda #LINE_TO + sta letter_c+$15*SIZEOF_STRUCT_SEGMENT + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT+1 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT+1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + jsr bitmap_init + jsr bitmap_clear + lda #3 + sta CIA2_PORT_A_DDR + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + lda #toD0181_return + sta D018 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + lda #<0 + sta current_y + sta current_y+1 + sta current_x + sta current_x+1 + sta i + b1: + lda i + asl + asl + asl + clc + adc i + tay + ldx letter_c,y + lda letter_c+OFFSET_STRUCT_SEGMENT_TO,y + sta current_x_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,y + sta current_x_8+1 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta current_y_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta current_y_8+1 + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y + sta segment_via_x + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y + sta segment_via_x+1 + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta segment_via_y + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta segment_via_y+1 + cpx #MOVE_TO + beq b3 + cpx #SPLINE_TO + beq b2 + lda current_x_8 + sta bitmap_line.x2 + lda current_x_8+1 + sta bitmap_line.x2+1 + lda current_y_8 + sta bitmap_line.y2 + lda current_y_8+1 + sta bitmap_line.y2+1 + jsr bitmap_line + b3: + inc i + lda #$15*SIZEOF_STRUCT_SEGMENT/SIZEOF_STRUCT_SEGMENT+1 + cmp i + bne b10 + b6: + inc PRINT_SCREEN+$3e7 + jmp b6 + b10: + lda current_x_8 + sta current_x + lda current_x_8+1 + sta current_x+1 + lda current_y_8 + sta current_y + lda current_y_8+1 + sta current_y+1 + jmp b1 + b2: + jsr spline_8segB + jsr bitmap_plot_spline_8seg + jmp b3 +} +// Plot the spline in the SPLINE_8SEG array +bitmap_plot_spline_8seg: { + .label current_x = 3 + .label current_y = 5 + .label to_x = $24 + .label to_y = $26 + .label n = 7 + lda SPLINE_8SEG + sta current_x + lda SPLINE_8SEG+1 + sta current_x+1 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta current_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + sta current_y+1 + lda #1 + sta n + b1: + lda n + asl + asl + tax + lda SPLINE_8SEG,x + sta to_x + lda SPLINE_8SEG+1,x + sta to_x+1 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + sta to_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + sta to_y+1 + lda to_x + sta bitmap_line.x2 + lda to_x+1 + sta bitmap_line.x2+1 + lda to_y + sta bitmap_line.y2 + lda to_y+1 + sta bitmap_line.y2+1 + jsr bitmap_line + inc n + lda #9 + cmp n + bne b3 + rts + b3: + lda to_x + sta current_x + lda to_x+1 + sta current_x+1 + lda to_y + sta current_y + lda to_y+1 + sta current_y+1 + jmp b1 +} +// Draw a line on the bitmap using bresenhams algorithm +// bitmap_line(word zeropage(3) x1, word zeropage(5) y1, word zeropage(8) x2, word zeropage($a) y2) +bitmap_line: { + .label x = 3 + .label y = 5 + .label dx = $28 + .label dy = $14 + .label sx = $2a + .label sy = $12 + .label e1 = $e + .label e = $c + .label x1 = 3 + .label y1 = 5 + .label x2 = 8 + .label y2 = $a + lda x2 + sec + sbc x + sta abs_u16.w + lda x2+1 + sbc x+1 + sta abs_u16.w+1 + jsr abs_u16 + lda abs_u16.return + sta dx + lda abs_u16.return+1 + sta dx+1 + lda y2 + sec + sbc y + sta abs_u16.w + lda y2+1 + sbc y+1 + sta abs_u16.w+1 + jsr abs_u16 + lda dx + bne b1 + lda dx+1 + bne b1 + lda dy + bne !+ + lda dy+1 + bne !b4+ + jmp b4 + !b4: + !: + b1: + lda x2 + sec + sbc x + sta sgn_u16.w + lda x2+1 + sbc x+1 + sta sgn_u16.w+1 + jsr sgn_u16 + lda sgn_u16.return + sta sx + lda sgn_u16.return+1 + sta sx+1 + lda y2 + sec + sbc y + sta sgn_u16.w + lda y2+1 + sbc y+1 + sta sgn_u16.w+1 + jsr sgn_u16 + lda dy+1 + cmp dx+1 + bcc b2 + bne !+ + lda dy + cmp dx + bcc b2 + !: + lda dx+1 + lsr + sta e+1 + lda dx + ror + sta e + b6: + lda y + tax + jsr bitmap_plot + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + lda e + clc + adc dx + sta e + lda e+1 + adc dx+1 + sta e+1 + cmp dy+1 + bne !+ + lda e + cmp dy + beq b7 + !: + bcc b7 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + lda e + sec + sbc dy + sta e + lda e+1 + sbc dy+1 + sta e+1 + b7: + lda y+1 + cmp y2+1 + bne b6 + lda y + cmp y2 + bne b6 + b3: + lda y + tax + jsr bitmap_plot + rts + b2: + lda dy+1 + lsr + sta e1+1 + lda dy + ror + sta e1 + b9: + lda y + tax + jsr bitmap_plot + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + lda e1 + clc + adc dy + sta e1 + lda e1+1 + adc dy+1 + sta e1+1 + cmp dx+1 + bne !+ + lda e1 + cmp dx + beq b10 + !: + bcc b10 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + lda e1 + sec + sbc dx + sta e1 + lda e1+1 + sbc dx+1 + sta e1+1 + b10: + lda x+1 + cmp x2+1 + bne b9 + lda x + cmp x2 + bne b9 + jmp b3 + b4: + lda y + tax + jsr bitmap_plot + rts +} +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage(3) x, byte register(X) y) +bitmap_plot: { + .label _1 = $2e + .label plotter = $2c + .label x = 3 + lda bitmap_plot_yhi,x + sta plotter+1 + lda bitmap_plot_ylo,x + sta plotter + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + lda x + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + sta (plotter),y + rts +} +// Get the sign of a 16-bit unsigned number treated as a signed number. +// Returns unsigned -1 if the number is +// sgn_u16(word zeropage($10) w) +sgn_u16: { + .label w = $10 + .label return = $12 + lda w+1 + and #$80 + cmp #0 + bne b1 + lda #<1 + sta return + lda #>1 + sta return+1 + rts + b1: + lda #<-1 + sta return + lda #>-1 + sta return+1 + rts +} +// Get the absolute value of a 16-bit unsigned number treated as a signed number. +// abs_u16(word zeropage($14) w) +abs_u16: { + .label w = $14 + .label return = $14 + lda w+1 + and #$80 + cmp #0 + bne b1 + rts + b1: + sec + lda #0 + sbc return + sta return + lda #0 + sbc return+1 + sta return+1 + rts +} +// Generate a 8-segment quadratic spline using 16-bit fixed point 1/64-format math (6 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// Point values must be within [-200 ; 1ff] for the calculation to not overflow. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// spline_8segB(signed word zeropage(3) p0_x, signed word zeropage(5) p0_y, signed word zeropage($16) p1_x, signed word zeropage($18) p1_y, signed word zeropage($20) p2_x, signed word zeropage($22) p2_y) +spline_8segB: { + .label _0 = $30 + .label _1 = $30 + .label _3 = $32 + .label _4 = $32 + .label _6 = $16 + .label _8 = $18 + .label _10 = $16 + .label _12 = $18 + .label _18 = 3 + .label _19 = 3 + .label _20 = 5 + .label _21 = 5 + .label _22 = $34 + .label _23 = $34 + .label _24 = $36 + .label _25 = $36 + .label a_x = $30 + .label a_y = $32 + .label b_x = $16 + .label b_y = $18 + .label i_x = $16 + .label i_y = $18 + .label j_x = $30 + .label j_y = $32 + .label p_x = 3 + .label p_y = 5 + .label p0_x = 3 + .label p0_y = 5 + .label p1_x = $16 + .label p1_y = $18 + .label p2_x = $20 + .label p2_y = $22 + lda p1_x + asl + sta _0 + lda p1_x+1 + rol + sta _0+1 + lda p2_x + sec + sbc _1 + sta _1 + lda p2_x+1 + sbc _1+1 + sta _1+1 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + lda p1_y + asl + sta _3 + lda p1_y+1 + rol + sta _3+1 + lda p2_y + sec + sbc _4 + sta _4 + lda p2_y+1 + sbc _4+1 + sta _4+1 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + lda _6 + sec + sbc p0_x + sta _6 + lda _6+1 + sbc p0_x+1 + sta _6+1 + asl b_x + rol b_x+1 + lda _8 + sec + sbc p0_y + sta _8 + lda _8+1 + sbc p0_y+1 + sta _8+1 + asl b_y + rol b_y+1 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + lda i_x + clc + adc a_x + sta i_x + lda i_x+1 + adc a_x+1 + sta i_x+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + lda i_y + clc + adc a_y + sta i_y + lda i_y+1 + adc a_y+1 + sta i_y+1 + asl j_x + rol j_x+1 + asl j_y + rol j_y+1 + lda p_x+1 + sta $ff + lda p_x + sta p_x+1 + lda #0 + sta p_x + lsr $ff + ror p_x+1 + ror p_x + lsr $ff + ror p_x+1 + ror p_x + lda p_y+1 + sta $ff + lda p_y + sta p_y+1 + lda #0 + sta p_y + lsr $ff + ror p_y+1 + ror p_y + lsr $ff + ror p_y+1 + ror p_y + tay + b1: + lda p_x + clc + adc #<$20 + sta _22 + lda p_x+1 + adc #>$20 + sta _22+1 + lda _23 + sta $ff + lda _23+1 + sta _23 + lda #0 + bit _23+1 + bpl !+ + lda #$ff + !: + sta _23+1 + rol $ff + rol _23 + rol _23+1 + rol $ff + rol _23 + rol _23+1 + lda p_y + clc + adc #<$20 + sta _24 + lda p_y+1 + adc #>$20 + sta _24+1 + lda _25 + sta $ff + lda _25+1 + sta _25 + lda #0 + bit _25+1 + bpl !+ + lda #$ff + !: + sta _25+1 + rol $ff + rol _25 + rol _25+1 + rol $ff + rol _25 + rol _25+1 + tya + asl + asl + tax + lda _23 + sta SPLINE_8SEG,x + lda _23+1 + sta SPLINE_8SEG+1,x + lda _25 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + lda _25+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + iny + cpy #8 + beq !b1+ + jmp b1 + !b1: + lda _18 + clc + adc #<$20 + sta _18 + lda _18+1 + adc #>$20 + sta _18+1 + lda _19 + sta $ff + lda _19+1 + sta _19 + lda #0 + bit _19+1 + bpl !+ + lda #$ff + !: + sta _19+1 + rol $ff + rol _19 + rol _19+1 + rol $ff + rol _19 + rol _19+1 + lda _20 + clc + adc #<$20 + sta _20 + lda _20+1 + adc #>$20 + sta _20+1 + lda _21 + sta $ff + lda _21+1 + sta _21 + lda #0 + bit _21+1 + bpl !+ + lda #$ff + !: + sta _21+1 + rol $ff + rol _21 + rol _21+1 + rol $ff + rol _21 + rol _21+1 + lda _19 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _19+1 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + lda _21 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _21+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + rts +} +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + ldx #col + lda #BITMAP_SCREEN + sta memset.str+1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + ldx #0 + lda #BITMAP_GRAPHICS + sta memset.str+1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + rts +} +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($1c) str, byte register(X) c, word zeropage($1a) num) +memset: { + .label end = $1a + .label dst = $1c + .label num = $1a + .label str = $1c + lda num + beq breturn + lda num+1 + beq breturn + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + b2: + txa + ldy #0 + sta (dst),y + inc dst + bne !+ + inc dst+1 + !: + lda dst+1 + cmp end+1 + bne b2 + lda dst + cmp end + bne b2 + breturn: + rts +} +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $38 + .label yoffs = $1e + ldx #0 + lda #$80 + b1: + sta bitmap_plot_bit,x + lsr + cmp #0 + bne b2 + lda #$80 + b2: + inx + cpx #0 + bne b1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + ldx #0 + b3: + lda #7 + sax _7 + lda yoffs + ora _7 + sta bitmap_plot_ylo,x + lda yoffs+1 + sta bitmap_plot_yhi,x + lda #7 + cmp _7 + bne b4 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + b4: + inx + cpx #0 + bne b3 + rts +} + // Array filled with spline segment points by splinePlot_8() + SPLINE_8SEG: .fill 4*9, 0 + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + // True type letter a + letter_c: .fill 9*$15, 0 diff --git a/src/test/ref/complex/splines/simple-splines.cfg b/src/test/ref/complex/splines/simple-splines.cfg new file mode 100644 index 000000000..4c6f48b75 --- /dev/null +++ b/src/test/ref/complex/splines/simple-splines.cfg @@ -0,0 +1,478 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO + [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c + [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 + [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 + [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 + [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 + [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 + [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 + [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 + [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b + [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b + [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 + [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 + [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 + [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 + [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 + [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 + [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 + [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 + [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a + [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f + [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 + [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 + [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 + [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a + [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 + [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 + [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 + [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f + [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 + [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 + [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 + [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 + [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d + [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 + [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 + [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 + [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 + [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 + [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 + [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e + [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e + [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 + [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 + [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b + [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 + [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 + [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 + [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 + [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO + [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c + [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 + [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 + [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 + [114] call bitmap_init + to:main::@8 +main::@8: scope:[main] from main + [115] phi() + [116] call bitmap_clear + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@8 + [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [118] phi() + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [120] phi() + to:main::@7 +main::@7: scope:[main] from main::toD0181 + [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + to:main::@1 +main::@1: scope:[main] from main::@10 main::@7 + [123] (signed word) main::current_y#4 ← phi( main::@7/(signed byte) 0 main::@10/(signed word~) main::current_y#9 ) + [123] (signed word) main::current_x#4 ← phi( main::@7/(signed byte) 0 main::@10/(signed word~) main::current_x#9 ) + [123] (byte) main::i#10 ← phi( main::@7/(byte) 0 main::@10/(byte) main::i#1 ) + [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 + [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 + [126] (byte) main::segment_type#0 ← *((byte*)(const struct Segment[$15]) letter_c#0 + (byte~) main::$44) + [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) + [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) + [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) + [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) + [131] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@1 + [132] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 + [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 + [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 + [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 + [137] call bitmap_line + to:main::@3 +main::@3: scope:[main] from main::@1 main::@5 main::@9 + [138] (byte) main::i#1 ← ++ (byte) main::i#10 + [139] if((byte) main::i#1!=(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT+(byte) 1) goto main::@10 + to:main::@6 +main::@6: scope:[main] from main::@3 main::@6 + [140] *((const byte*) PRINT_SCREEN#0+(word) $3e7) ← ++ *((const byte*) PRINT_SCREEN#0+(word) $3e7) + to:main::@6 +main::@10: scope:[main] from main::@3 + [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 + [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 + to:main::@1 +main::@2: scope:[main] from main::@4 + [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 + [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 + [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 + [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 + [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 + [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 + [149] call spline_8segB + to:main::@9 +main::@9: scope:[main] from main::@2 + [150] phi() + [151] call bitmap_plot_spline_8seg + to:main::@3 +bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from main::@9 + [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) + [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) + to:bitmap_plot_spline_8seg::@1 +bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@3 + [154] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@3/(signed word~) bitmap_plot_spline_8seg::current_y#4 ) + [154] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@3/(signed word~) bitmap_plot_spline_8seg::current_x#4 ) + [154] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@3/(byte) bitmap_plot_spline_8seg::n#1 ) + [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 + [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) + [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) + [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 + [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 + [162] call bitmap_line + to:bitmap_plot_spline_8seg::@2 +bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1 + [163] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 + [164] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@3 + to:bitmap_plot_spline_8seg::@return +bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 + [165] return + to:@return +bitmap_plot_spline_8seg::@3: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 + [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 + [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 + to:bitmap_plot_spline_8seg::@1 +bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 main::@5 + [168] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#1 main::@5/(word) bitmap_line::y2#0 ) + [168] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#1 main::@5/(word) bitmap_line::x2#0 ) + [168] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 main::@5/(word) bitmap_line::y1#0 ) + [168] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 main::@5/(word) bitmap_line::x1#0 ) + [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [170] call abs_u16 + [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + to:bitmap_line::@12 +bitmap_line::@12: scope:[bitmap_line] from bitmap_line + [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 + [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [174] call abs_u16 + [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + to:bitmap_line::@13 +bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 + [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 + [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + to:bitmap_line::@1 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 + [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [180] call sgn_u16 + [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + to:bitmap_line::@14 +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 + [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [184] call sgn_u16 + [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + to:bitmap_line::@15 +bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 + [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + to:bitmap_line::@5 +bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 + [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + to:bitmap_line::@6 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 + [189] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [189] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [189] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [192] call bitmap_plot + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 + [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 + to:bitmap_line::@8 +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 + [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 + [198] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [198] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 + to:bitmap_line::@3 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 + [200] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [200] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [203] call bitmap_plot + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 + [204] return + to:@return +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 + [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + to:bitmap_line::@9 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 + [206] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [206] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) + [206] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) + [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [209] call bitmap_plot + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 + [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + to:bitmap_line::@11 +bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 + [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + to:bitmap_line::@10 +bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 + [215] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [215] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 + to:bitmap_line::@3 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 + [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 + [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + [219] call bitmap_plot + to:bitmap_line::@return +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 + [220] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 ) + [220] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 ) + [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 + [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 + [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [226] return + to:@return +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 + [227] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [229] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [230] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 + to:sgn_u16::@return +sgn_u16::@1: scope:[sgn_u16] from sgn_u16 + [231] phi() + to:sgn_u16::@return +sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 + [232] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [233] return + to:@return +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 + [234] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [236] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [237] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 + to:abs_u16::@return +abs_u16::@1: scope:[abs_u16] from abs_u16 + [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + to:abs_u16::@return +abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 + [239] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) + [240] return + to:@return +spline_8segB: scope:[spline_8segB] from main::@2 + [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 + [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 + [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 + [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 + [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 + [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 + [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 + [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 + [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 + [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 + [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 + [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 + [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 + [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 + [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 + [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 + [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 + [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 + to:spline_8segB::@1 +spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1 + [259] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) + [259] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) + [259] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) + [259] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + [259] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 + [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 + [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 + [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 + [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 + [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 + [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 + [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 + [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 + [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 + [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 + [271] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 + [272] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 + to:spline_8segB::@2 +spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1 + [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 + [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 + [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 + [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 + [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 + [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 + to:spline_8segB::@return +spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2 + [279] return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@8 + [280] phi() + [281] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [282] phi() + [283] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [284] return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + [285] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [285] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) BITMAP_SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP_GRAPHICS#0 ) + [285] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [286] if((word) memset::num#2<=(byte) 0) goto memset::@return + to:memset::@1 +memset::@1: scope:[memset] from memset + [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + to:memset::@2 +memset::@2: scope:[memset] from memset::@1 memset::@2 + [289] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [291] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + to:memset::@return +memset::@return: scope:[memset] from memset memset::@2 + [293] return + to:@return +bitmap_init: scope:[bitmap_init] from main + [294] phi() + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [295] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [295] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [296] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [297] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [298] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 + [299] phi() + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 + [300] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [301] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [302] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [303] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP_GRAPHICS#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [303] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [305] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [306] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [307] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [308] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [309] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [310] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 + [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 + [312] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [313] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [314] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [315] return + to:@return diff --git a/src/test/ref/complex/splines/simple-splines.log b/src/test/ref/complex/splines/simple-splines.log new file mode 100644 index 000000000..8dfce780d --- /dev/null +++ b/src/test/ref/complex/splines/simple-splines.log @@ -0,0 +1,13202 @@ +Fixing pointer array-indexing *((struct SplineVector16[$11]) SPLINE_16SEG + (byte) spline_16seg::n) +Fixing pointer array-indexing *((struct SplineVector16[$11]) SPLINE_16SEG + (number) $10) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (byte) spline_8seg::n) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (number) 8) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (byte) spline_8segB::n) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (number) 8) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 0) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 1) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 2) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 3) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 4) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 5) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 6) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 7) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 8) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) 9) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $a) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $b) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $c) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $d) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $e) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $f) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $10) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $11) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $12) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $13) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $14) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (number) $15) +Fixing pointer array-indexing *((struct Segment[$15]) letter_c + (byte) main::i) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (number) 0) +Fixing pointer array-indexing *((struct SplineVector16[9]) SPLINE_8SEG + (byte) bitmap_plot_spline_8seg::n) +Fixing pointer array-indexing *((struct SplineVector16[$11]) SPLINE_16SEG + (byte) bitmap_plot_spline_16seg::n) +Fixing pointer array-indexing *((struct SplineVector16[$11]) SPLINE_16SEG + (byte) bitmap_plot_spline_16seg::n) +Created struct value member variable (signed word) spline_16seg::p0_x +Created struct value member variable (signed word) spline_16seg::p0_y +Converted struct value to member variables (struct SplineVector16) spline_16seg::p0 +Created struct value member variable (signed word) spline_16seg::p1_x +Created struct value member variable (signed word) spline_16seg::p1_y +Converted struct value to member variables (struct SplineVector16) spline_16seg::p1 +Created struct value member variable (signed word) spline_16seg::p2_x +Created struct value member variable (signed word) spline_16seg::p2_y +Converted struct value to member variables (struct SplineVector16) spline_16seg::p2 +Created struct value member variable (signed word) spline_16seg::a_x +Created struct value member variable (signed word) spline_16seg::a_y +Converted struct value to member variables (struct SplineVector16) spline_16seg::a +Created struct value member variable (signed word) spline_16seg::b_x +Created struct value member variable (signed word) spline_16seg::b_y +Converted struct value to member variables (struct SplineVector16) spline_16seg::b +Created struct value member variable (signed dword) spline_16seg::i_x +Created struct value member variable (signed dword) spline_16seg::i_y +Converted struct value to member variables (struct SplineVector32) spline_16seg::i +Created struct value member variable (signed dword) spline_16seg::j_x +Created struct value member variable (signed dword) spline_16seg::j_y +Converted struct value to member variables (struct SplineVector32) spline_16seg::j +Created struct value member variable (signed dword) spline_16seg::p_x +Created struct value member variable (signed dword) spline_16seg::p_y +Converted struct value to member variables (struct SplineVector32) spline_16seg::p +Created struct value member variable (signed word) spline_8seg::p0_x +Created struct value member variable (signed word) spline_8seg::p0_y +Converted struct value to member variables (struct SplineVector16) spline_8seg::p0 +Created struct value member variable (signed word) spline_8seg::p1_x +Created struct value member variable (signed word) spline_8seg::p1_y +Converted struct value to member variables (struct SplineVector16) spline_8seg::p1 +Created struct value member variable (signed word) spline_8seg::p2_x +Created struct value member variable (signed word) spline_8seg::p2_y +Converted struct value to member variables (struct SplineVector16) spline_8seg::p2 +Created struct value member variable (signed word) spline_8seg::a_x +Created struct value member variable (signed word) spline_8seg::a_y +Converted struct value to member variables (struct SplineVector16) spline_8seg::a +Created struct value member variable (signed word) spline_8seg::b_x +Created struct value member variable (signed word) spline_8seg::b_y +Converted struct value to member variables (struct SplineVector16) spline_8seg::b +Created struct value member variable (signed dword) spline_8seg::i_x +Created struct value member variable (signed dword) spline_8seg::i_y +Converted struct value to member variables (struct SplineVector32) spline_8seg::i +Created struct value member variable (signed dword) spline_8seg::j_x +Created struct value member variable (signed dword) spline_8seg::j_y +Converted struct value to member variables (struct SplineVector32) spline_8seg::j +Created struct value member variable (signed dword) spline_8seg::p_x +Created struct value member variable (signed dword) spline_8seg::p_y +Converted struct value to member variables (struct SplineVector32) spline_8seg::p +Created struct value member variable (signed word) spline_8segB::p0_x +Created struct value member variable (signed word) spline_8segB::p0_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::p0 +Created struct value member variable (signed word) spline_8segB::p1_x +Created struct value member variable (signed word) spline_8segB::p1_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::p1 +Created struct value member variable (signed word) spline_8segB::p2_x +Created struct value member variable (signed word) spline_8segB::p2_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::p2 +Created struct value member variable (signed word) spline_8segB::a_x +Created struct value member variable (signed word) spline_8segB::a_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::a +Created struct value member variable (signed word) spline_8segB::b_x +Created struct value member variable (signed word) spline_8segB::b_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::b +Created struct value member variable (signed word) spline_8segB::i_x +Created struct value member variable (signed word) spline_8segB::i_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::i +Created struct value member variable (signed word) spline_8segB::j_x +Created struct value member variable (signed word) spline_8segB::j_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::j +Created struct value member variable (signed word) spline_8segB::p_x +Created struct value member variable (signed word) spline_8segB::p_y +Converted struct value to member variables (struct SplineVector16) spline_8segB::p +Created struct value member variable (signed word) main::current_x +Created struct value member variable (signed word) main::current_y +Converted struct value to member variables (struct SplineVector16) main::current +Created struct value member variable (byte) main::segment_type +Created struct value member variable (struct SplineVector16) main::segment_to +Created struct value member variable (struct SplineVector16) main::segment_via +Converted struct value to member variables (struct Segment) main::segment +Created struct value member variable (signed word) main::to_x +Created struct value member variable (signed word) main::to_y +Converted struct value to member variables (struct SplineVector16) main::to +Created struct value member variable (signed word) main::to1_x +Created struct value member variable (signed word) main::to1_y +Converted struct value to member variables (struct SplineVector16) main::to1 +Created struct value member variable (signed word) main::via_x +Created struct value member variable (signed word) main::via_y +Converted struct value to member variables (struct SplineVector16) main::via +Created struct value member variable (signed word) bitmap_plot_spline_8seg::current_x +Created struct value member variable (signed word) bitmap_plot_spline_8seg::current_y +Converted struct value to member variables (struct SplineVector16) bitmap_plot_spline_8seg::current +Created struct value member variable (signed word) bitmap_plot_spline_8seg::to_x +Created struct value member variable (signed word) bitmap_plot_spline_8seg::to_y +Converted struct value to member variables (struct SplineVector16) bitmap_plot_spline_8seg::to +Converted procedure struct value parameter to member variables (void()) spline_16seg((signed word) spline_16seg::p0_x , (signed word) spline_16seg::p0_y , (signed word) spline_16seg::p1_x , (signed word) spline_16seg::p1_y , (signed word) spline_16seg::p2_x , (signed word) spline_16seg::p2_y) +Converted procedure struct value parameter to member variables (void()) spline_8seg((signed word) spline_8seg::p0_x , (signed word) spline_8seg::p0_y , (signed word) spline_8seg::p1_x , (signed word) spline_8seg::p1_y , (signed word) spline_8seg::p2_x , (signed word) spline_8seg::p2_y) +Converted procedure struct value parameter to member variables (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) +Adding struct value list initializer (signed word) spline_16seg::a_x ← (number~) spline_16seg::$2 +Adding struct value list initializer (signed word) spline_16seg::a_y ← (number~) spline_16seg::$5 +Adding struct value list initializer (signed word) spline_16seg::b_x ← (number~) spline_16seg::$7 +Adding struct value list initializer (signed word) spline_16seg::b_y ← (number~) spline_16seg::$9 +Adding struct value list initializer (signed dword) spline_16seg::i_x ← (number~) spline_16seg::$15 +Adding struct value list initializer (signed dword) spline_16seg::i_y ← (number~) spline_16seg::$21 +Adding struct value list initializer (signed dword) spline_16seg::j_x ← (number~) spline_16seg::$24 +Adding struct value list initializer (signed dword) spline_16seg::j_y ← (number~) spline_16seg::$27 +Adding struct value list initializer (signed dword) spline_16seg::p_x ← (number~) spline_16seg::$29 +Adding struct value list initializer (signed dword) spline_16seg::p_y ← (number~) spline_16seg::$31 +Adding struct value list initializer *((signed word*) spline_16seg::$51 + (byte~) spline_16seg::$49) ← (signed word~) spline_16seg::$40 +Adding struct value list initializer *((signed word*) spline_16seg::$52 + (byte~) spline_16seg::$49) ← (signed word~) spline_16seg::$43 +Adding struct value list initializer (signed dword) spline_16seg::p_x ← (signed dword~) spline_16seg::$44 +Adding struct value list initializer (signed dword) spline_16seg::p_y ← (signed dword~) spline_16seg::$45 +Adding struct value list initializer (signed dword) spline_16seg::i_x ← (signed dword~) spline_16seg::$46 +Adding struct value list initializer (signed dword) spline_16seg::i_y ← (signed dword~) spline_16seg::$47 +Adding struct value list initializer *((signed word*) spline_16seg::$53 + (number~) spline_16seg::$50) ← (signed word~) spline_16seg::$34 +Adding struct value list initializer *((signed word*) spline_16seg::$54 + (number~) spline_16seg::$50) ← (signed word~) spline_16seg::$37 +Adding struct value list initializer (signed word) spline_8seg::a_x ← (number~) spline_8seg::$2 +Adding struct value list initializer (signed word) spline_8seg::a_y ← (number~) spline_8seg::$5 +Adding struct value list initializer (signed word) spline_8seg::b_x ← (number~) spline_8seg::$7 +Adding struct value list initializer (signed word) spline_8seg::b_y ← (number~) spline_8seg::$9 +Adding struct value list initializer (signed dword) spline_8seg::i_x ← (number~) spline_8seg::$16 +Adding struct value list initializer (signed dword) spline_8seg::i_y ← (number~) spline_8seg::$23 +Adding struct value list initializer (signed dword) spline_8seg::j_x ← (number~) spline_8seg::$26 +Adding struct value list initializer (signed dword) spline_8seg::j_y ← (number~) spline_8seg::$29 +Adding struct value list initializer (signed dword) spline_8seg::p_x ← (number~) spline_8seg::$31 +Adding struct value list initializer (signed dword) spline_8seg::p_y ← (number~) spline_8seg::$33 +Adding struct value list initializer *((signed word*) spline_8seg::$53 + (byte~) spline_8seg::$51) ← (signed word~) spline_8seg::$42 +Adding struct value list initializer *((signed word*) spline_8seg::$54 + (byte~) spline_8seg::$51) ← (signed word~) spline_8seg::$45 +Adding struct value list initializer (signed dword) spline_8seg::p_x ← (signed dword~) spline_8seg::$46 +Adding struct value list initializer (signed dword) spline_8seg::p_y ← (signed dword~) spline_8seg::$47 +Adding struct value list initializer (signed dword) spline_8seg::i_x ← (signed dword~) spline_8seg::$48 +Adding struct value list initializer (signed dword) spline_8seg::i_y ← (signed dword~) spline_8seg::$49 +Adding struct value list initializer *((signed word*) spline_8seg::$55 + (number~) spline_8seg::$52) ← (signed word~) spline_8seg::$36 +Adding struct value list initializer *((signed word*) spline_8seg::$56 + (number~) spline_8seg::$52) ← (signed word~) spline_8seg::$39 +Adding struct value list initializer (signed word) spline_8segB::a_x ← (number~) spline_8segB::$2 +Adding struct value list initializer (signed word) spline_8segB::a_y ← (number~) spline_8segB::$5 +Adding struct value list initializer (signed word) spline_8segB::b_x ← (number~) spline_8segB::$7 +Adding struct value list initializer (signed word) spline_8segB::b_y ← (number~) spline_8segB::$9 +Adding struct value list initializer (signed word) spline_8segB::i_x ← (number~) spline_8segB::$11 +Adding struct value list initializer (signed word) spline_8segB::i_y ← (number~) spline_8segB::$13 +Adding struct value list initializer (signed word) spline_8segB::j_x ← (number~) spline_8segB::$14 +Adding struct value list initializer (signed word) spline_8segB::j_y ← (number~) spline_8segB::$15 +Adding struct value list initializer (signed word) spline_8segB::p_x ← (number~) spline_8segB::$16 +Adding struct value list initializer (signed word) spline_8segB::p_y ← (number~) spline_8segB::$17 +Adding struct value list initializer *((signed word*) spline_8segB::$33 + (byte~) spline_8segB::$31) ← (number~) spline_8segB::$23 +Adding struct value list initializer *((signed word*) spline_8segB::$34 + (byte~) spline_8segB::$31) ← (number~) spline_8segB::$25 +Adding struct value list initializer (signed word) spline_8segB::p_x ← (signed word~) spline_8segB::$26 +Adding struct value list initializer (signed word) spline_8segB::p_y ← (signed word~) spline_8segB::$27 +Adding struct value list initializer (signed word) spline_8segB::i_x ← (signed word~) spline_8segB::$28 +Adding struct value list initializer (signed word) spline_8segB::i_y ← (signed word~) spline_8segB::$29 +Adding struct value list initializer *((signed word*) spline_8segB::$35 + (number~) spline_8segB::$32) ← (number~) spline_8segB::$19 +Adding struct value list initializer *((signed word*) spline_8segB::$36 + (number~) spline_8segB::$32) ← (number~) spline_8segB::$21 +Adding struct value list initializer *((byte*) main::$45 + (number~) main::$22) ← (const byte) MOVE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$46 + (number~) main::$22) ← { (number) $6c, (number) $92 } +Adding struct value list initializer *((struct SplineVector16*) main::$47 + (number~) main::$22) ← { (number) 0, (number) 0 } +Adding struct value list initializer *((byte*) main::$48 + (number~) main::$23) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$49 + (number~) main::$23) ← { (number) $59, (number) $b6 } +Adding struct value list initializer *((struct SplineVector16*) main::$50 + (number~) main::$23) ← { (number) $67, (number) $a9 } +Adding struct value list initializer *((byte*) main::$51 + (number~) main::$24) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$52 + (number~) main::$24) ← { (number) $3b, (number) $c3 } +Adding struct value list initializer *((struct SplineVector16*) main::$53 + (number~) main::$24) ← { (number) $4b, (number) $c3 } +Adding struct value list initializer *((byte*) main::$54 + (number~) main::$25) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$55 + (number~) main::$25) ← { (number) $17, (number) $b2 } +Adding struct value list initializer *((struct SplineVector16*) main::$56 + (number~) main::$25) ← { (number) $26, (number) $c3 } +Adding struct value list initializer *((byte*) main::$57 + (number~) main::$26) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$58 + (number~) main::$26) ← { (number) 9, (number) $84 } +Adding struct value list initializer *((struct SplineVector16*) main::$59 + (number~) main::$26) ← { (number) 9, (number) $a1 } +Adding struct value list initializer *((byte*) main::$60 + (number~) main::$27) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$61 + (number~) main::$27) ← { (number) $19, (number) $57 } +Adding struct value list initializer *((struct SplineVector16*) main::$62 + (number~) main::$27) ← { (number) 9, (number) $68 } +Adding struct value list initializer *((byte*) main::$63 + (number~) main::$28) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$64 + (number~) main::$28) ← { (number) $41, (number) $45 } +Adding struct value list initializer *((struct SplineVector16*) main::$65 + (number~) main::$28) ← { (number) $2a, (number) $45 } +Adding struct value list initializer *((byte*) main::$66 + (number~) main::$29) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$67 + (number~) main::$29) ← { (number) $5d, (number) $4f } +Adding struct value list initializer *((struct SplineVector16*) main::$68 + (number~) main::$29) ← { (number) $52, (number) $45 } +Adding struct value list initializer *((byte*) main::$69 + (number~) main::$30) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$70 + (number~) main::$30) ← { (number) $69, (number) $62 } +Adding struct value list initializer *((struct SplineVector16*) main::$71 + (number~) main::$30) ← { (number) $69, (number) $58 } +Adding struct value list initializer *((byte*) main::$72 + (number~) main::$31) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$73 + (number~) main::$31) ← { (number) $66, (number) $6a } +Adding struct value list initializer *((struct SplineVector16*) main::$74 + (number~) main::$31) ← { (number) $69, (number) $67 } +Adding struct value list initializer *((byte*) main::$75 + (number~) main::$32) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$76 + (number~) main::$32) ← { (number) $5d, (number) $6d } +Adding struct value list initializer *((struct SplineVector16*) main::$77 + (number~) main::$32) ← { (number) $62, (number) $6d } +Adding struct value list initializer *((byte*) main::$78 + (number~) main::$33) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$79 + (number~) main::$33) ← { (number) $51, (number) $68 } +Adding struct value list initializer *((struct SplineVector16*) main::$80 + (number~) main::$33) ← { (number) $55, (number) $6d } +Adding struct value list initializer *((byte*) main::$81 + (number~) main::$34) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$82 + (number~) main::$34) ← { (number) $4e, (number) $5d } +Adding struct value list initializer *((struct SplineVector16*) main::$83 + (number~) main::$34) ← { (number) $4f, (number) $65 } +Adding struct value list initializer *((byte*) main::$84 + (number~) main::$35) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$85 + (number~) main::$35) ← { (number) $49, (number) $52 } +Adding struct value list initializer *((struct SplineVector16*) main::$86 + (number~) main::$35) ← { (number) $4e, (number) $56 } +Adding struct value list initializer *((byte*) main::$87 + (number~) main::$36) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$88 + (number~) main::$36) ← { (number) $3d, (number) $4e } +Adding struct value list initializer *((struct SplineVector16*) main::$89 + (number~) main::$36) ← { (number) $45, (number) $4e } +Adding struct value list initializer *((byte*) main::$90 + (number~) main::$37) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$91 + (number~) main::$37) ← { (number) $28, (number) $58 } +Adding struct value list initializer *((struct SplineVector16*) main::$92 + (number~) main::$37) ← { (number) $30, (number) $4e } +Adding struct value list initializer *((byte*) main::$93 + (number~) main::$38) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$94 + (number~) main::$38) ← { (number) $1d, (number) $79 } +Adding struct value list initializer *((struct SplineVector16*) main::$95 + (number~) main::$38) ← { (number) $1d, (number) $64 } +Adding struct value list initializer *((byte*) main::$96 + (number~) main::$39) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$97 + (number~) main::$39) ← { (number) $28, (number) $9e } +Adding struct value list initializer *((struct SplineVector16*) main::$98 + (number~) main::$39) ← { (number) $1d, (number) $8e } +Adding struct value list initializer *((byte*) main::$99 + (number~) main::$40) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$100 + (number~) main::$40) ← { (number) $44, (number) $ae } +Adding struct value list initializer *((struct SplineVector16*) main::$101 + (number~) main::$40) ← { (number) $32, (number) $ae } +Adding struct value list initializer *((byte*) main::$102 + (number~) main::$41) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$103 + (number~) main::$41) ← { (number) $5b, (number) $a6 } +Adding struct value list initializer *((struct SplineVector16*) main::$104 + (number~) main::$41) ← { (number) $50, (number) $ae } +Adding struct value list initializer *((byte*) main::$105 + (number~) main::$42) ← (const byte) SPLINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$106 + (number~) main::$42) ← { (number) $68, (number) $90 } +Adding struct value list initializer *((struct SplineVector16*) main::$107 + (number~) main::$42) ← { (number) $62, (number) $a0 } +Adding struct value list initializer *((byte*) main::$108 + (number~) main::$43) ← (const byte) LINE_TO +Adding struct value list initializer *((struct SplineVector16*) main::$109 + (number~) main::$43) ← { (number) $6c, (number) $92 } +Adding struct value list initializer *((struct SplineVector16*) main::$110 + (number~) main::$43) ← { (number) 0, (number) 0 } +Adding struct value list initializer (signed word) main::current_x ← (number) 0 +Adding struct value list initializer (signed word) main::current_y ← (number) 0 +Adding struct value member variable copy (byte) main::segment_type ← *((byte*) main::$111 + (byte~) main::$44) +Adding struct value member variable copy (struct SplineVector16) main::segment_to ← *((struct SplineVector16*) main::$112 + (byte~) main::$44) +Adding struct value member variable copy (struct SplineVector16) main::segment_via ← *((struct SplineVector16*) main::$113 + (byte~) main::$44) +Converted procedure struct value parameter to member variables in call (void~) main::$16 ← call spline_8segB (signed word) main::current_x (signed word) main::current_y (signed word) main::via_x (signed word) main::via_y (signed word) main::to1_x (signed word) main::to1_y +Adding struct value member variable copy (signed word) main::current_x ← (signed word) main::to1_x +Adding struct value member variable copy (signed word) main::current_y ← (signed word) main::to1_y +Adding struct value member variable copy (signed word) main::current_x ← (signed word) main::to_x +Adding struct value member variable copy (signed word) main::current_y ← (signed word) main::to_y +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_x ← *((signed word*) bitmap_plot_spline_8seg::$8 + (number~) bitmap_plot_spline_8seg::$6) +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_y ← *((signed word*) bitmap_plot_spline_8seg::$9 + (number~) bitmap_plot_spline_8seg::$6) +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::to_x ← *((signed word*) bitmap_plot_spline_8seg::$10 + (byte~) bitmap_plot_spline_8seg::$7) +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::to_y ← *((signed word*) bitmap_plot_spline_8seg::$11 + (byte~) bitmap_plot_spline_8seg::$7) +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_x ← (signed word) bitmap_plot_spline_8seg::to_x +Adding struct value member variable copy (signed word) bitmap_plot_spline_8seg::current_y ← (signed word) bitmap_plot_spline_8seg::to_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member variable reference (signed word) spline_16seg::p1_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p2.x with member variable reference (signed word) spline_16seg::p2_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member variable reference (signed word) spline_16seg::p1_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p2.y with member variable reference (signed word) spline_16seg::p2_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p1.x with member variable reference (signed word) spline_16seg::p1_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p1.y with member variable reference (signed word) spline_16seg::p1_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y +Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member variable reference (signed word) spline_16seg::a_x +Replacing struct member reference (struct SplineVector16) spline_16seg::b.x with member variable reference (signed word) spline_16seg::b_x +Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member variable reference (signed word) spline_16seg::a_y +Replacing struct member reference (struct SplineVector16) spline_16seg::b.y with member variable reference (signed word) spline_16seg::b_y +Replacing struct member reference (struct SplineVector16) spline_16seg::a.x with member variable reference (signed word) spline_16seg::a_x +Replacing struct member reference (struct SplineVector16) spline_16seg::a.y with member variable reference (signed word) spline_16seg::a_y +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.x with member variable reference (signed word) spline_16seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_16seg::p0.y with member variable reference (signed word) spline_16seg::p0_y +Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x +Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y +Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x +Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member variable reference (signed dword) spline_16seg::i_x +Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y +Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member variable reference (signed dword) spline_16seg::i_y +Replacing struct member reference (struct SplineVector32) spline_16seg::i.x with member variable reference (signed dword) spline_16seg::i_x +Replacing struct member reference (struct SplineVector32) spline_16seg::j.x with member variable reference (signed dword) spline_16seg::j_x +Replacing struct member reference (struct SplineVector32) spline_16seg::i.y with member variable reference (signed dword) spline_16seg::i_y +Replacing struct member reference (struct SplineVector32) spline_16seg::j.y with member variable reference (signed dword) spline_16seg::j_y +Replacing struct member reference (struct SplineVector32) spline_16seg::p.x with member variable reference (signed dword) spline_16seg::p_x +Replacing struct member reference (struct SplineVector32) spline_16seg::p.y with member variable reference (signed dword) spline_16seg::p_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member variable reference (signed word) spline_8seg::p1_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p2.x with member variable reference (signed word) spline_8seg::p2_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member variable reference (signed word) spline_8seg::p1_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p2.y with member variable reference (signed word) spline_8seg::p2_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p1.x with member variable reference (signed word) spline_8seg::p1_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p1.y with member variable reference (signed word) spline_8seg::p1_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y +Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member variable reference (signed word) spline_8seg::a_x +Replacing struct member reference (struct SplineVector16) spline_8seg::b.x with member variable reference (signed word) spline_8seg::b_x +Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member variable reference (signed word) spline_8seg::a_y +Replacing struct member reference (struct SplineVector16) spline_8seg::b.y with member variable reference (signed word) spline_8seg::b_y +Replacing struct member reference (struct SplineVector16) spline_8seg::a.x with member variable reference (signed word) spline_8seg::a_x +Replacing struct member reference (struct SplineVector16) spline_8seg::a.y with member variable reference (signed word) spline_8seg::a_y +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.x with member variable reference (signed word) spline_8seg::p0_x +Replacing struct member reference (struct SplineVector16) spline_8seg::p0.y with member variable reference (signed word) spline_8seg::p0_y +Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x +Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y +Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x +Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member variable reference (signed dword) spline_8seg::i_x +Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y +Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member variable reference (signed dword) spline_8seg::i_y +Replacing struct member reference (struct SplineVector32) spline_8seg::i.x with member variable reference (signed dword) spline_8seg::i_x +Replacing struct member reference (struct SplineVector32) spline_8seg::j.x with member variable reference (signed dword) spline_8seg::j_x +Replacing struct member reference (struct SplineVector32) spline_8seg::i.y with member variable reference (signed dword) spline_8seg::i_y +Replacing struct member reference (struct SplineVector32) spline_8seg::j.y with member variable reference (signed dword) spline_8seg::j_y +Replacing struct member reference (struct SplineVector32) spline_8seg::p.x with member variable reference (signed dword) spline_8seg::p_x +Replacing struct member reference (struct SplineVector32) spline_8seg::p.y with member variable reference (signed dword) spline_8seg::p_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member variable reference (signed word) spline_8segB::p1_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p2.x with member variable reference (signed word) spline_8segB::p2_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member variable reference (signed word) spline_8segB::p1_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p2.y with member variable reference (signed word) spline_8segB::p2_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p1.x with member variable reference (signed word) spline_8segB::p1_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p1.y with member variable reference (signed word) spline_8segB::p1_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y +Replacing struct member reference (struct SplineVector16) spline_8segB::b.x with member variable reference (signed word) spline_8segB::b_x +Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member variable reference (signed word) spline_8segB::a_x +Replacing struct member reference (struct SplineVector16) spline_8segB::b.y with member variable reference (signed word) spline_8segB::b_y +Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member variable reference (signed word) spline_8segB::a_y +Replacing struct member reference (struct SplineVector16) spline_8segB::a.x with member variable reference (signed word) spline_8segB::a_x +Replacing struct member reference (struct SplineVector16) spline_8segB::a.y with member variable reference (signed word) spline_8segB::a_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.x with member variable reference (signed word) spline_8segB::p0_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p0.y with member variable reference (signed word) spline_8segB::p0_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x +Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member variable reference (signed word) spline_8segB::i_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y +Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member variable reference (signed word) spline_8segB::i_y +Replacing struct member reference (struct SplineVector16) spline_8segB::i.x with member variable reference (signed word) spline_8segB::i_x +Replacing struct member reference (struct SplineVector16) spline_8segB::j.x with member variable reference (signed word) spline_8segB::j_x +Replacing struct member reference (struct SplineVector16) spline_8segB::i.y with member variable reference (signed word) spline_8segB::i_y +Replacing struct member reference (struct SplineVector16) spline_8segB::j.y with member variable reference (signed word) spline_8segB::j_y +Replacing struct member reference (struct SplineVector16) spline_8segB::p.x with member variable reference (signed word) spline_8segB::p_x +Replacing struct member reference (struct SplineVector16) spline_8segB::p.y with member variable reference (signed word) spline_8segB::p_y +Replacing struct member reference (struct Segment) main::segment.type with member variable reference (byte) main::segment_type +Replacing struct member reference (struct Segment) main::segment.to with member variable reference (struct SplineVector16) main::segment_to +Replacing struct member reference (struct Segment) main::segment.type with member variable reference (byte) main::segment_type +Replacing struct member reference (struct Segment) main::segment.to with member variable reference (struct SplineVector16) main::segment_to +Replacing struct member reference (struct Segment) main::segment.via with member variable reference (struct SplineVector16) main::segment_via +Replacing struct member reference (struct Segment) main::segment.to with member variable reference (struct SplineVector16) main::segment_to +Replacing struct member reference (struct SplineVector16) main::current.x with member variable reference (signed word) main::current_x +Replacing struct member reference (struct SplineVector16) main::current.y with member variable reference (signed word) main::current_y +Replacing struct member reference (struct SplineVector16) main::to.x with member variable reference (signed word) main::to_x +Replacing struct member reference (struct SplineVector16) main::to.y with member variable reference (signed word) main::to_y +Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.x with member variable reference (signed word) bitmap_plot_spline_8seg::current_x +Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::current.y with member variable reference (signed word) bitmap_plot_spline_8seg::current_y +Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::to.x with member variable reference (signed word) bitmap_plot_spline_8seg::to_x +Replacing struct member reference (struct SplineVector16) bitmap_plot_spline_8seg::to.y with member variable reference (signed word) bitmap_plot_spline_8seg::to_y +Created struct value member variable (signed word) main::segment_to_x +Created struct value member variable (signed word) main::segment_to_y +Converted struct value to member variables (struct SplineVector16) main::segment_to +Created struct value member variable (signed word) main::segment_via_x +Created struct value member variable (signed word) main::segment_via_y +Converted struct value to member variables (struct SplineVector16) main::segment_via +Adding struct value list initializer *((signed word*) main::$114 + (number~) main::$22) ← (number) $6c +Adding struct value list initializer *((signed word*) main::$115 + (number~) main::$22) ← (number) $92 +Adding struct value list initializer *((signed word*) main::$116 + (number~) main::$22) ← (number) 0 +Adding struct value list initializer *((signed word*) main::$117 + (number~) main::$22) ← (number) 0 +Adding struct value list initializer *((signed word*) main::$118 + (number~) main::$23) ← (number) $59 +Adding struct value list initializer *((signed word*) main::$119 + (number~) main::$23) ← (number) $b6 +Adding struct value list initializer *((signed word*) main::$120 + (number~) main::$23) ← (number) $67 +Adding struct value list initializer *((signed word*) main::$121 + (number~) main::$23) ← (number) $a9 +Adding struct value list initializer *((signed word*) main::$122 + (number~) main::$24) ← (number) $3b +Adding struct value list initializer *((signed word*) main::$123 + (number~) main::$24) ← (number) $c3 +Adding struct value list initializer *((signed word*) main::$124 + (number~) main::$24) ← (number) $4b +Adding struct value list initializer *((signed word*) main::$125 + (number~) main::$24) ← (number) $c3 +Adding struct value list initializer *((signed word*) main::$126 + (number~) main::$25) ← (number) $17 +Adding struct value list initializer *((signed word*) main::$127 + (number~) main::$25) ← (number) $b2 +Adding struct value list initializer *((signed word*) main::$128 + (number~) main::$25) ← (number) $26 +Adding struct value list initializer *((signed word*) main::$129 + (number~) main::$25) ← (number) $c3 +Adding struct value list initializer *((signed word*) main::$130 + (number~) main::$26) ← (number) 9 +Adding struct value list initializer *((signed word*) main::$131 + (number~) main::$26) ← (number) $84 +Adding struct value list initializer *((signed word*) main::$132 + (number~) main::$26) ← (number) 9 +Adding struct value list initializer *((signed word*) main::$133 + (number~) main::$26) ← (number) $a1 +Adding struct value list initializer *((signed word*) main::$134 + (number~) main::$27) ← (number) $19 +Adding struct value list initializer *((signed word*) main::$135 + (number~) main::$27) ← (number) $57 +Adding struct value list initializer *((signed word*) main::$136 + (number~) main::$27) ← (number) 9 +Adding struct value list initializer *((signed word*) main::$137 + (number~) main::$27) ← (number) $68 +Adding struct value list initializer *((signed word*) main::$138 + (number~) main::$28) ← (number) $41 +Adding struct value list initializer *((signed word*) main::$139 + (number~) main::$28) ← (number) $45 +Adding struct value list initializer *((signed word*) main::$140 + (number~) main::$28) ← (number) $2a +Adding struct value list initializer *((signed word*) main::$141 + (number~) main::$28) ← (number) $45 +Adding struct value list initializer *((signed word*) main::$142 + (number~) main::$29) ← (number) $5d +Adding struct value list initializer *((signed word*) main::$143 + (number~) main::$29) ← (number) $4f +Adding struct value list initializer *((signed word*) main::$144 + (number~) main::$29) ← (number) $52 +Adding struct value list initializer *((signed word*) main::$145 + (number~) main::$29) ← (number) $45 +Adding struct value list initializer *((signed word*) main::$146 + (number~) main::$30) ← (number) $69 +Adding struct value list initializer *((signed word*) main::$147 + (number~) main::$30) ← (number) $62 +Adding struct value list initializer *((signed word*) main::$148 + (number~) main::$30) ← (number) $69 +Adding struct value list initializer *((signed word*) main::$149 + (number~) main::$30) ← (number) $58 +Adding struct value list initializer *((signed word*) main::$150 + (number~) main::$31) ← (number) $66 +Adding struct value list initializer *((signed word*) main::$151 + (number~) main::$31) ← (number) $6a +Adding struct value list initializer *((signed word*) main::$152 + (number~) main::$31) ← (number) $69 +Adding struct value list initializer *((signed word*) main::$153 + (number~) main::$31) ← (number) $67 +Adding struct value list initializer *((signed word*) main::$154 + (number~) main::$32) ← (number) $5d +Adding struct value list initializer *((signed word*) main::$155 + (number~) main::$32) ← (number) $6d +Adding struct value list initializer *((signed word*) main::$156 + (number~) main::$32) ← (number) $62 +Adding struct value list initializer *((signed word*) main::$157 + (number~) main::$32) ← (number) $6d +Adding struct value list initializer *((signed word*) main::$158 + (number~) main::$33) ← (number) $51 +Adding struct value list initializer *((signed word*) main::$159 + (number~) main::$33) ← (number) $68 +Adding struct value list initializer *((signed word*) main::$160 + (number~) main::$33) ← (number) $55 +Adding struct value list initializer *((signed word*) main::$161 + (number~) main::$33) ← (number) $6d +Adding struct value list initializer *((signed word*) main::$162 + (number~) main::$34) ← (number) $4e +Adding struct value list initializer *((signed word*) main::$163 + (number~) main::$34) ← (number) $5d +Adding struct value list initializer *((signed word*) main::$164 + (number~) main::$34) ← (number) $4f +Adding struct value list initializer *((signed word*) main::$165 + (number~) main::$34) ← (number) $65 +Adding struct value list initializer *((signed word*) main::$166 + (number~) main::$35) ← (number) $49 +Adding struct value list initializer *((signed word*) main::$167 + (number~) main::$35) ← (number) $52 +Adding struct value list initializer *((signed word*) main::$168 + (number~) main::$35) ← (number) $4e +Adding struct value list initializer *((signed word*) main::$169 + (number~) main::$35) ← (number) $56 +Adding struct value list initializer *((signed word*) main::$170 + (number~) main::$36) ← (number) $3d +Adding struct value list initializer *((signed word*) main::$171 + (number~) main::$36) ← (number) $4e +Adding struct value list initializer *((signed word*) main::$172 + (number~) main::$36) ← (number) $45 +Adding struct value list initializer *((signed word*) main::$173 + (number~) main::$36) ← (number) $4e +Adding struct value list initializer *((signed word*) main::$174 + (number~) main::$37) ← (number) $28 +Adding struct value list initializer *((signed word*) main::$175 + (number~) main::$37) ← (number) $58 +Adding struct value list initializer *((signed word*) main::$176 + (number~) main::$37) ← (number) $30 +Adding struct value list initializer *((signed word*) main::$177 + (number~) main::$37) ← (number) $4e +Adding struct value list initializer *((signed word*) main::$178 + (number~) main::$38) ← (number) $1d +Adding struct value list initializer *((signed word*) main::$179 + (number~) main::$38) ← (number) $79 +Adding struct value list initializer *((signed word*) main::$180 + (number~) main::$38) ← (number) $1d +Adding struct value list initializer *((signed word*) main::$181 + (number~) main::$38) ← (number) $64 +Adding struct value list initializer *((signed word*) main::$182 + (number~) main::$39) ← (number) $28 +Adding struct value list initializer *((signed word*) main::$183 + (number~) main::$39) ← (number) $9e +Adding struct value list initializer *((signed word*) main::$184 + (number~) main::$39) ← (number) $1d +Adding struct value list initializer *((signed word*) main::$185 + (number~) main::$39) ← (number) $8e +Adding struct value list initializer *((signed word*) main::$186 + (number~) main::$40) ← (number) $44 +Adding struct value list initializer *((signed word*) main::$187 + (number~) main::$40) ← (number) $ae +Adding struct value list initializer *((signed word*) main::$188 + (number~) main::$40) ← (number) $32 +Adding struct value list initializer *((signed word*) main::$189 + (number~) main::$40) ← (number) $ae +Adding struct value list initializer *((signed word*) main::$190 + (number~) main::$41) ← (number) $5b +Adding struct value list initializer *((signed word*) main::$191 + (number~) main::$41) ← (number) $a6 +Adding struct value list initializer *((signed word*) main::$192 + (number~) main::$41) ← (number) $50 +Adding struct value list initializer *((signed word*) main::$193 + (number~) main::$41) ← (number) $ae +Adding struct value list initializer *((signed word*) main::$194 + (number~) main::$42) ← (number) $68 +Adding struct value list initializer *((signed word*) main::$195 + (number~) main::$42) ← (number) $90 +Adding struct value list initializer *((signed word*) main::$196 + (number~) main::$42) ← (number) $62 +Adding struct value list initializer *((signed word*) main::$197 + (number~) main::$42) ← (number) $a0 +Adding struct value list initializer *((signed word*) main::$198 + (number~) main::$43) ← (number) $6c +Adding struct value list initializer *((signed word*) main::$199 + (number~) main::$43) ← (number) $92 +Adding struct value list initializer *((signed word*) main::$200 + (number~) main::$43) ← (number) 0 +Adding struct value list initializer *((signed word*) main::$201 + (number~) main::$43) ← (number) 0 +Adding struct value member variable copy (signed word) main::segment_to_x ← *((signed word*) main::$202 + (byte~) main::$44) +Adding struct value member variable copy (signed word) main::segment_to_y ← *((signed word*) main::$203 + (byte~) main::$44) +Adding struct value member variable copy (signed word) main::segment_via_x ← *((signed word*) main::$204 + (byte~) main::$44) +Adding struct value member variable copy (signed word) main::segment_via_y ← *((signed word*) main::$205 + (byte~) main::$44) +Adding struct value member variable copy (signed word) main::current_x ← (signed word) main::segment_to_x +Adding struct value member variable copy (signed word) main::current_y ← (signed word) main::segment_to_y +Adding struct value member variable copy (signed word) main::to1_x ← (signed word) main::segment_to_x +Adding struct value member variable copy (signed word) main::to1_y ← (signed word) main::segment_to_y +Adding struct value member variable copy (signed word) main::via_x ← (signed word) main::segment_via_x +Adding struct value member variable copy (signed word) main::via_y ← (signed word) main::segment_via_y +Adding struct value member variable copy (signed word) main::to_x ← (signed word) main::segment_to_x +Adding struct value member variable copy (signed word) main::to_y ← (signed word) main::segment_to_y +Rewriting struct pointer member access *((struct SplineVector16[$11]) SPLINE_16SEG + (byte~) bitmap_plot_spline_16seg::$4).x +Rewriting struct pointer member access *((struct SplineVector16[$11]) SPLINE_16SEG + (byte~) bitmap_plot_spline_16seg::$5).y +Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) +Warning! Adding boolean cast to non-boolean condition (number~) abs_u16::$1 +Warning! Adding boolean cast to non-boolean condition (number~) sgn_u16::$1 +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Inlined call call vicSelectGfxBank (byte*) BITMAP_SCREEN +Inlined call (byte~) main::$3 ← call toD018 (byte*) BITMAP_SCREEN (byte*) BITMAP_GRAPHICS +Culled Empty Block (label) @2 +Culled Empty Block (label) @3 +Culled Empty Block (label) @4 +Culled Empty Block (label) @5 +Culled Empty Block (label) memset::@5 +Culled Empty Block (label) memset::@3 +Culled Empty Block (label) @6 +Culled Empty Block (label) bitmap_init::@8 +Culled Empty Block (label) @8 +Culled Empty Block (label) @9 +Culled Empty Block (label) @10 +Culled Empty Block (label) bitmap_line::@5 +Culled Empty Block (label) bitmap_line::@10 +Culled Empty Block (label) bitmap_line::@11 +Culled Empty Block (label) bitmap_line::@15 +Culled Empty Block (label) @11 +Culled Empty Block (label) abs_u16::@4 +Culled Empty Block (label) abs_u16::@2 +Culled Empty Block (label) abs_u16::@5 +Culled Empty Block (label) abs_u16::@6 +Culled Empty Block (label) @12 +Culled Empty Block (label) sgn_u16::@4 +Culled Empty Block (label) sgn_u16::@2 +Culled Empty Block (label) sgn_u16::@5 +Culled Empty Block (label) sgn_u16::@6 +Culled Empty Block (label) @14 +Culled Empty Block (label) @15 +Culled Empty Block (label) @16 +Culled Empty Block (label) @17 +Culled Empty Block (label) @18 +Culled Empty Block (label) @19 +Culled Empty Block (label) @20 +Culled Empty Block (label) @21 +Culled Empty Block (label) @22 +Culled Empty Block (label) @23 +Culled Empty Block (label) @24 +Culled Empty Block (label) @25 +Culled Empty Block (label) @26 +Culled Empty Block (label) @27 +Culled Empty Block (label) @28 +Culled Empty Block (label) @29 +Culled Empty Block (label) @30 +Culled Empty Block (label) @31 +Culled Empty Block (label) @32 +Culled Empty Block (label) @33 +Culled Empty Block (label) @34 +Culled Empty Block (label) @35 +Culled Empty Block (label) @36 +Culled Empty Block (label) @37 +Culled Empty Block (label) @38 +Culled Empty Block (label) @39 +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@1 +Culled Empty Block (label) main::vicSelectGfxBank1_@return +Culled Empty Block (label) main::toD0181_@1 +Culled Empty Block (label) main::@4 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) main::@10 +Culled Empty Block (label) main::@14 +Culled Empty Block (label) main::@13 +Culled Empty Block (label) main::@15 +Culled Empty Block (label) main::@16 +Culled Empty Block (label) @41 +Culled Empty Block (label) bitmap_plot_spline_8seg::@2 +Culled Empty Block (label) @42 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + (struct SplineVector16[9]) SPLINE_8SEG#0 ← { fill( 9, 0) } + to:@7 +spline_8segB: scope:[spline_8segB] from main::@3 + (signed word) spline_8segB::p0_y#1 ← phi( main::@3/(signed word) spline_8segB::p0_y#0 ) + (signed word) spline_8segB::p2_y#1 ← phi( main::@3/(signed word) spline_8segB::p2_y#0 ) + (signed word) spline_8segB::p1_y#1 ← phi( main::@3/(signed word) spline_8segB::p1_y#0 ) + (signed word) spline_8segB::p0_x#1 ← phi( main::@3/(signed word) spline_8segB::p0_x#0 ) + (signed word) spline_8segB::p2_x#1 ← phi( main::@3/(signed word) spline_8segB::p2_x#0 ) + (signed word) spline_8segB::p1_x#1 ← phi( main::@3/(signed word) spline_8segB::p1_x#0 ) + (number~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#1 * (number) 2 + (number~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#1 - (number~) spline_8segB::$0 + (number~) spline_8segB::$2 ← (number~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#1 + (number~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#1 * (number) 2 + (number~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#1 - (number~) spline_8segB::$3 + (number~) spline_8segB::$5 ← (number~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#1 + (signed word) spline_8segB::a_x#0 ← (number~) spline_8segB::$2 + (signed word) spline_8segB::a_y#0 ← (number~) spline_8segB::$5 + (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#1 - (signed word) spline_8segB::p0_x#1 + (number~) spline_8segB::$7 ← (signed word~) spline_8segB::$6 * (number) 2 + (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#1 - (signed word) spline_8segB::p0_y#1 + (number~) spline_8segB::$9 ← (signed word~) spline_8segB::$8 * (number) 2 + (signed word) spline_8segB::b_x#0 ← (number~) spline_8segB::$7 + (signed word) spline_8segB::b_y#0 ← (number~) spline_8segB::$9 + (number~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 * (number) 8 + (number~) spline_8segB::$11 ← (signed word) spline_8segB::a_x#0 + (number~) spline_8segB::$10 + (number~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 * (number) 8 + (number~) spline_8segB::$13 ← (signed word) spline_8segB::a_y#0 + (number~) spline_8segB::$12 + (signed word) spline_8segB::i_x#0 ← (number~) spline_8segB::$11 + (signed word) spline_8segB::i_y#0 ← (number~) spline_8segB::$13 + (number~) spline_8segB::$14 ← (signed word) spline_8segB::a_x#0 * (number) 2 + (number~) spline_8segB::$15 ← (signed word) spline_8segB::a_y#0 * (number) 2 + (signed word) spline_8segB::j_x#0 ← (number~) spline_8segB::$14 + (signed word) spline_8segB::j_y#0 ← (number~) spline_8segB::$15 + (number~) spline_8segB::$16 ← (signed word) spline_8segB::p0_x#1 * (number) $40 + (number~) spline_8segB::$17 ← (signed word) spline_8segB::p0_y#1 * (number) $40 + (signed word) spline_8segB::p_x#0 ← (number~) spline_8segB::$16 + (signed word) spline_8segB::p_y#0 ← (number~) spline_8segB::$17 + (byte) spline_8segB::n#0 ← (byte) 0 + to:spline_8segB::@1 +spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1 + (signed word) spline_8segB::j_y#1 ← phi( spline_8segB/(signed word) spline_8segB::j_y#0 spline_8segB::@1/(signed word) spline_8segB::j_y#1 ) + (signed word) spline_8segB::j_x#1 ← phi( spline_8segB/(signed word) spline_8segB::j_x#0 spline_8segB::@1/(signed word) spline_8segB::j_x#1 ) + (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) + (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) + (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) spline_8segB::n#0 spline_8segB::@1/(byte) spline_8segB::n#1 ) + (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + (number~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (number) $20 + (number~) spline_8segB::$23 ← (number~) spline_8segB::$22 / (number) $40 + (number~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (number) $20 + (number~) spline_8segB::$25 ← (number~) spline_8segB::$24 / (number) $40 + (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 + (signed word*) spline_8segB::$33 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) spline_8segB::$33 + (byte~) spline_8segB::$31) ← (number~) spline_8segB::$23 + (signed word*) spline_8segB::$34 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) spline_8segB::$34 + (byte~) spline_8segB::$31) ← (number~) spline_8segB::$25 + (signed word~) spline_8segB::$26 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 + (signed word~) spline_8segB::$27 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::p_x#1 ← (signed word~) spline_8segB::$26 + (signed word) spline_8segB::p_y#1 ← (signed word~) spline_8segB::$27 + (signed word~) spline_8segB::$28 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#1 + (signed word~) spline_8segB::$29 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#1 + (signed word) spline_8segB::i_x#1 ← (signed word~) spline_8segB::$28 + (signed word) spline_8segB::i_y#1 ← (signed word~) spline_8segB::$29 + (byte) spline_8segB::n#1 ← (byte) spline_8segB::n#2 + rangenext(0,7) + (bool~) spline_8segB::$30 ← (byte) spline_8segB::n#1 != rangelast(0,7) + if((bool~) spline_8segB::$30) goto spline_8segB::@1 + to:spline_8segB::@2 +spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1 + (signed word) spline_8segB::p_y#3 ← phi( spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + (signed word) spline_8segB::p_x#3 ← phi( spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + (number~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#3 + (number) $20 + (number~) spline_8segB::$19 ← (number~) spline_8segB::$18 / (number) $40 + (number~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#3 + (number) $20 + (number~) spline_8segB::$21 ← (number~) spline_8segB::$20 / (number) $40 + (number~) spline_8segB::$32 ← (number) 8 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 + (signed word*) spline_8segB::$35 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) spline_8segB::$35 + (number~) spline_8segB::$32) ← (number~) spline_8segB::$19 + (signed word*) spline_8segB::$36 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) spline_8segB::$36 + (number~) spline_8segB::$32) ← (number~) spline_8segB::$21 + to:spline_8segB::@return +spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2 + return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + (byte) memset::c#4 ← phi( bitmap_clear/(byte) memset::c#0 bitmap_clear::@1/(byte) memset::c#1 ) + (void*) memset::str#4 ← phi( bitmap_clear/(void*) memset::str#0 bitmap_clear::@1/(void*) memset::str#1 ) + (word) memset::num#2 ← phi( bitmap_clear/(word) memset::num#0 bitmap_clear::@1/(word) memset::num#1 ) + (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 + (bool~) memset::$1 ← ! (bool~) memset::$0 + if((bool~) memset::$1) goto memset::@1 + to:memset::@2 +memset::@1: scope:[memset] from memset memset::@4 + (void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@4/(void*) memset::str#5 ) + (void*) memset::return#0 ← (void*) memset::str#2 + to:memset::@return +memset::@2: scope:[memset] from memset + (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 ) + (word) memset::num#3 ← phi( memset/(word) memset::num#2 ) + (void*) memset::str#3 ← phi( memset/(void*) memset::str#4 ) + (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#3 + (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#3 + (byte*) memset::end#0 ← (byte*~) memset::$3 + (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3 + to:memset::@4 +memset::@4: scope:[memset] from memset::@2 memset::@4 + (void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#5 ) + (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#1 ) + (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 ) + (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@4/(byte) memset::c#2 ) + *((byte*) memset::dst#2) ← (byte) memset::c#2 + (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + (bool~) memset::$4 ← (byte*) memset::dst#1 != (byte*) memset::end#1 + if((bool~) memset::$4) goto memset::@4 + to:memset::@1 +memset::@return: scope:[memset] from memset::@1 + (void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 ) + (void*) memset::return#1 ← (void*) memset::return#4 + return + to:@return +@7: scope:[] from @1 + (byte*) bitmap_screen#0 ← (byte*) 0 + (byte*) bitmap_gfx#0 ← (byte*) 0 + (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } + (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) } + (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) } + to:@13 +bitmap_init: scope:[bitmap_init] from main + (byte*) bitmap_init::screen#1 ← phi( main/(byte*) bitmap_init::screen#0 ) + (byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 ) + (byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1 + (byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1 + (byte) bitmap_init::bits#0 ← (number) $80 + (byte) bitmap_init::x#0 ← (byte) 0 + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + (byte*) bitmap_screen#29 ← phi( bitmap_init/(byte*) bitmap_screen#1 bitmap_init::@2/(byte*) bitmap_screen#25 ) + (byte*) bitmap_gfx#30 ← phi( bitmap_init/(byte*) bitmap_gfx#1 bitmap_init::@2/(byte*) bitmap_gfx#26 ) + (byte*) bitmap_init::gfx#4 ← phi( bitmap_init/(byte*) bitmap_init::gfx#1 bitmap_init::@2/(byte*) bitmap_init::gfx#3 ) + (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + *((byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1 + (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0 + (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0 + if((bool~) bitmap_init::$1) goto bitmap_init::@2 + to:bitmap_init::@3 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3 + (byte*) bitmap_screen#25 ← phi( bitmap_init::@1/(byte*) bitmap_screen#29 bitmap_init::@3/(byte*) bitmap_screen#30 ) + (byte*) bitmap_gfx#26 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#30 bitmap_init::@3/(byte*) bitmap_gfx#31 ) + (byte*) bitmap_init::gfx#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 bitmap_init::@3/(byte*) bitmap_init::gfx#5 ) + (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@3/(byte) bitmap_init::bits#2 ) + (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@3/(byte) bitmap_init::x#4 ) + (byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,$ff) + (bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,$ff) + if((bool~) bitmap_init::$2) goto bitmap_init::@1 + to:bitmap_init::@4 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1 + (byte*) bitmap_screen#30 ← phi( bitmap_init::@1/(byte*) bitmap_screen#29 ) + (byte*) bitmap_gfx#31 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#30 ) + (byte*) bitmap_init::gfx#5 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 ) + (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 ) + (byte) bitmap_init::bits#2 ← (number) $80 + to:bitmap_init::@2 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@2 + (byte*) bitmap_screen#20 ← phi( bitmap_init::@2/(byte*) bitmap_screen#25 ) + (byte*) bitmap_gfx#21 ← phi( bitmap_init::@2/(byte*) bitmap_gfx#26 ) + (byte*) bitmap_init::gfx#2 ← phi( bitmap_init::@2/(byte*) bitmap_init::gfx#3 ) + (byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::gfx#2 + (byte) bitmap_init::y#0 ← (byte) 0 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 + (byte*) bitmap_screen#15 ← phi( bitmap_init::@4/(byte*) bitmap_screen#20 bitmap_init::@6/(byte*) bitmap_screen#11 ) + (byte*) bitmap_gfx#16 ← phi( bitmap_init::@4/(byte*) bitmap_gfx#21 bitmap_init::@6/(byte*) bitmap_gfx#11 ) + (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#0 bitmap_init::@6/(byte*) bitmap_init::yoffs#4 ) + (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#0 bitmap_init::@6/(byte) bitmap_init::y#1 ) + (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7 + (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + (number~) bitmap_init::$5 ← (number~) bitmap_init::$3 | (byte~) bitmap_init::$4 + *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$5 + (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7 + (bool~) bitmap_init::$8 ← (number~) bitmap_init::$7 == (number) 7 + (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8 + if((bool~) bitmap_init::$9) goto bitmap_init::@6 + to:bitmap_init::@7 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7 + (byte*) bitmap_screen#11 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 bitmap_init::@7/(byte*) bitmap_screen#16 ) + (byte*) bitmap_gfx#11 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 bitmap_init::@7/(byte*) bitmap_gfx#17 ) + (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + (byte) bitmap_init::y#3 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 ) + (byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,$ff) + (bool~) bitmap_init::$11 ← (byte) bitmap_init::y#1 != rangelast(0,$ff) + if((bool~) bitmap_init::$11) goto bitmap_init::@5 + to:bitmap_init::@return +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5 + (byte*) bitmap_screen#16 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 ) + (byte*) bitmap_gfx#17 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 ) + (byte) bitmap_init::y#4 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 ) + (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 ) + (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 + (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$10 + to:bitmap_init::@6 +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6 + (byte*) bitmap_screen#6 ← phi( bitmap_init::@6/(byte*) bitmap_screen#11 ) + (byte*) bitmap_gfx#6 ← phi( bitmap_init::@6/(byte*) bitmap_gfx#11 ) + (byte*) bitmap_gfx#2 ← (byte*) bitmap_gfx#6 + (byte*) bitmap_screen#2 ← (byte*) bitmap_screen#6 + return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@19 + (byte*) bitmap_gfx#12 ← phi( main::@19/(byte*) bitmap_gfx#3 ) + (byte*) bitmap_screen#7 ← phi( main::@19/(byte*) bitmap_screen#3 ) + (byte) bitmap_clear::bgcol#1 ← phi( main::@19/(byte) bitmap_clear::bgcol#0 ) + (byte) bitmap_clear::fgcol#1 ← phi( main::@19/(byte) bitmap_clear::fgcol#0 ) + (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10 + (number~) bitmap_clear::$1 ← (number~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 + (byte) bitmap_clear::col#0 ← (number~) bitmap_clear::$1 + (void*) memset::str#0 ← (void*)(byte*) bitmap_screen#7 + (byte) memset::c#0 ← (byte) bitmap_clear::col#0 + (word) memset::num#0 ← (word) $3e8 + call memset + (void*) memset::return#2 ← (void*) memset::return#1 + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + (byte*) bitmap_gfx#7 ← phi( bitmap_clear/(byte*) bitmap_gfx#12 ) + (void*) memset::str#1 ← (void*)(byte*) bitmap_gfx#7 + (byte) memset::c#1 ← (number) 0 + (word) memset::num#1 ← (word) $1f40 + call memset + (void*) memset::return#3 ← (void*) memset::return#1 + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@2 + return + to:@return +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@12 bitmap_line::@3 bitmap_line::@4 bitmap_line::@7 + (word) bitmap_plot::x#4 ← phi( bitmap_line::@12/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@7/(word) bitmap_plot::x#1 ) + (byte) bitmap_plot::y#4 ← phi( bitmap_line::@12/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@7/(byte) bitmap_plot::y#1 ) + (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4), *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) } + (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0 + (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8 + (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (number~) bitmap_plot::$1 + (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 + *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + return + to:@return +bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 main::@7 + (word) bitmap_line::y2#5 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#1 main::@7/(word) bitmap_line::y2#0 ) + (word) bitmap_line::x2#2 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#1 main::@7/(word) bitmap_line::x2#0 ) + (word) bitmap_line::y1#2 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 main::@7/(word) bitmap_line::y1#0 ) + (word) bitmap_line::x1#2 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 main::@7/(word) bitmap_line::x1#0 ) + (word) bitmap_line::x#0 ← (word) bitmap_line::x1#2 + (word) bitmap_line::y#0 ← (word) bitmap_line::y1#2 + (word~) bitmap_line::$0 ← (word) bitmap_line::x2#2 - (word) bitmap_line::x1#2 + (word) abs_u16::w#0 ← (word~) bitmap_line::$0 + call abs_u16 + (word) abs_u16::return#0 ← (word) abs_u16::return#4 + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line + (word) bitmap_line::x#16 ← phi( bitmap_line/(word) bitmap_line::x#0 ) + (word) bitmap_line::y#16 ← phi( bitmap_line/(word) bitmap_line::y#0 ) + (word) bitmap_line::x1#5 ← phi( bitmap_line/(word) bitmap_line::x1#2 ) + (word) bitmap_line::x2#8 ← phi( bitmap_line/(word) bitmap_line::x2#2 ) + (word) bitmap_line::y1#3 ← phi( bitmap_line/(word) bitmap_line::y1#2 ) + (word) bitmap_line::y2#2 ← phi( bitmap_line/(word) bitmap_line::y2#5 ) + (word) abs_u16::return#5 ← phi( bitmap_line/(word) abs_u16::return#0 ) + (word~) bitmap_line::$1 ← (word) abs_u16::return#5 + (word) bitmap_line::dx#0 ← (word~) bitmap_line::$1 + (word~) bitmap_line::$2 ← (word) bitmap_line::y2#2 - (word) bitmap_line::y1#3 + (word) abs_u16::w#1 ← (word~) bitmap_line::$2 + call abs_u16 + (word) abs_u16::return#1 ← (word) abs_u16::return#4 + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@16 + (word) bitmap_line::y1#6 ← phi( bitmap_line::@16/(word) bitmap_line::y1#3 ) + (word) bitmap_line::y2#9 ← phi( bitmap_line::@16/(word) bitmap_line::y2#2 ) + (word) bitmap_line::x#10 ← phi( bitmap_line::@16/(word) bitmap_line::x#16 ) + (word) bitmap_line::y#10 ← phi( bitmap_line::@16/(word) bitmap_line::y#16 ) + (word) bitmap_line::x1#4 ← phi( bitmap_line::@16/(word) bitmap_line::x1#5 ) + (word) bitmap_line::x2#5 ← phi( bitmap_line::@16/(word) bitmap_line::x2#8 ) + (word) bitmap_line::dx#1 ← phi( bitmap_line::@16/(word) bitmap_line::dx#0 ) + (word) abs_u16::return#6 ← phi( bitmap_line::@16/(word) abs_u16::return#1 ) + (word~) bitmap_line::$3 ← (word) abs_u16::return#6 + (word) bitmap_line::dy#0 ← (word~) bitmap_line::$3 + (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0 + (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0 + (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5 + (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6 + if((bool~) bitmap_line::$7) goto bitmap_line::@1 + to:bitmap_line::@4 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@17 + (word) bitmap_line::x#19 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 ) + (word) bitmap_line::y#19 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 ) + (word) bitmap_line::dy#9 ← phi( bitmap_line::@17/(word) bitmap_line::dy#0 ) + (word) bitmap_line::dx#10 ← phi( bitmap_line::@17/(word) bitmap_line::dx#1 ) + (word) bitmap_line::y1#5 ← phi( bitmap_line::@17/(word) bitmap_line::y1#6 ) + (word) bitmap_line::y2#6 ← phi( bitmap_line::@17/(word) bitmap_line::y2#9 ) + (word) bitmap_line::x1#3 ← phi( bitmap_line::@17/(word) bitmap_line::x1#4 ) + (word) bitmap_line::x2#3 ← phi( bitmap_line::@17/(word) bitmap_line::x2#5 ) + (word~) bitmap_line::$8 ← (word) bitmap_line::x2#3 - (word) bitmap_line::x1#3 + (word) sgn_u16::w#0 ← (word~) bitmap_line::$8 + call sgn_u16 + (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@1 + (word) bitmap_line::x2#12 ← phi( bitmap_line::@1/(word) bitmap_line::x2#3 ) + (word) bitmap_line::x#18 ← phi( bitmap_line::@1/(word) bitmap_line::x#19 ) + (word) bitmap_line::y#18 ← phi( bitmap_line::@1/(word) bitmap_line::y#19 ) + (word) bitmap_line::dy#6 ← phi( bitmap_line::@1/(word) bitmap_line::dy#9 ) + (word) bitmap_line::dx#7 ← phi( bitmap_line::@1/(word) bitmap_line::dx#10 ) + (word) bitmap_line::y1#4 ← phi( bitmap_line::@1/(word) bitmap_line::y1#5 ) + (word) bitmap_line::y2#3 ← phi( bitmap_line::@1/(word) bitmap_line::y2#6 ) + (word) sgn_u16::return#5 ← phi( bitmap_line::@1/(word) sgn_u16::return#0 ) + (word~) bitmap_line::$9 ← (word) sgn_u16::return#5 + (word) bitmap_line::sx#0 ← (word~) bitmap_line::$9 + (word~) bitmap_line::$10 ← (word) bitmap_line::y2#3 - (word) bitmap_line::y1#4 + (word) sgn_u16::w#1 ← (word~) bitmap_line::$10 + call sgn_u16 + (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + to:bitmap_line::@19 +bitmap_line::@19: scope:[bitmap_line] from bitmap_line::@18 + (word) bitmap_line::y2#12 ← phi( bitmap_line::@18/(word) bitmap_line::y2#3 ) + (word) bitmap_line::x2#11 ← phi( bitmap_line::@18/(word) bitmap_line::x2#12 ) + (word) bitmap_line::sx#8 ← phi( bitmap_line::@18/(word) bitmap_line::sx#0 ) + (word) bitmap_line::x#17 ← phi( bitmap_line::@18/(word) bitmap_line::x#18 ) + (word) bitmap_line::y#17 ← phi( bitmap_line::@18/(word) bitmap_line::y#18 ) + (word) bitmap_line::dy#1 ← phi( bitmap_line::@18/(word) bitmap_line::dy#6 ) + (word) bitmap_line::dx#2 ← phi( bitmap_line::@18/(word) bitmap_line::dx#7 ) + (word) sgn_u16::return#6 ← phi( bitmap_line::@18/(word) sgn_u16::return#1 ) + (word~) bitmap_line::$11 ← (word) sgn_u16::return#6 + (word) bitmap_line::sy#0 ← (word~) bitmap_line::$11 + (bool~) bitmap_line::$12 ← (word) bitmap_line::dx#2 > (word) bitmap_line::dy#1 + if((bool~) bitmap_line::$12) goto bitmap_line::@2 + to:bitmap_line::@6 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@17 + (word) bitmap_line::x#3 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 ) + (word) bitmap_line::y#3 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 ) + (byte~) bitmap_line::$15 ← ((byte)) (word) bitmap_line::y#3 + (word) bitmap_plot::x#0 ← (word) bitmap_line::x#3 + (byte) bitmap_plot::y#0 ← (byte~) bitmap_line::$15 + call bitmap_plot + to:bitmap_line::@20 +bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@4 + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@20 bitmap_line::@22 + return + to:@return +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@19 + (word) bitmap_line::sy#10 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 ) + (word) bitmap_line::x2#10 ← phi( bitmap_line::@19/(word) bitmap_line::x2#11 ) + (word) bitmap_line::dx#13 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 ) + (word) bitmap_line::sx#7 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 ) + (word) bitmap_line::x#14 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 ) + (word) bitmap_line::y#14 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 ) + (word) bitmap_line::dy#2 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 ) + (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2 + (word) bitmap_line::e1#0 ← (number~) bitmap_line::$23 + to:bitmap_line::@12 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@19 + (word) bitmap_line::sx#9 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 ) + (word) bitmap_line::y2#11 ← phi( bitmap_line::@19/(word) bitmap_line::y2#12 ) + (word) bitmap_line::dy#10 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 ) + (word) bitmap_line::sy#5 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 ) + (word) bitmap_line::x#11 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 ) + (word) bitmap_line::y#11 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 ) + (word) bitmap_line::dx#3 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 ) + (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2 + (word) bitmap_line::e#0 ← (number~) bitmap_line::$17 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@6 bitmap_line::@8 + (word) bitmap_line::sx#5 ← phi( bitmap_line::@6/(word) bitmap_line::sx#9 bitmap_line::@8/(word) bitmap_line::sx#10 ) + (word) bitmap_line::y2#10 ← phi( bitmap_line::@6/(word) bitmap_line::y2#11 bitmap_line::@8/(word) bitmap_line::y2#4 ) + (word) bitmap_line::dy#7 ← phi( bitmap_line::@6/(word) bitmap_line::dy#10 bitmap_line::@8/(word) bitmap_line::dy#11 ) + (word) bitmap_line::dx#8 ← phi( bitmap_line::@6/(word) bitmap_line::dx#3 bitmap_line::@8/(word) bitmap_line::dx#11 ) + (word) bitmap_line::e#5 ← phi( bitmap_line::@6/(word) bitmap_line::e#0 bitmap_line::@8/(word) bitmap_line::e#6 ) + (word) bitmap_line::sy#3 ← phi( bitmap_line::@6/(word) bitmap_line::sy#5 bitmap_line::@8/(word) bitmap_line::sy#6 ) + (word) bitmap_line::x#4 ← phi( bitmap_line::@6/(word) bitmap_line::x#11 bitmap_line::@8/(word) bitmap_line::x#12 ) + (word) bitmap_line::y#4 ← phi( bitmap_line::@6/(word) bitmap_line::y#11 bitmap_line::@8/(word) bitmap_line::y#6 ) + (byte~) bitmap_line::$18 ← ((byte)) (word) bitmap_line::y#4 + (word) bitmap_plot::x#1 ← (word) bitmap_line::x#4 + (byte) bitmap_plot::y#1 ← (byte~) bitmap_line::$18 + call bitmap_plot + to:bitmap_line::@21 +bitmap_line::@21: scope:[bitmap_line] from bitmap_line::@7 + (word) bitmap_line::sx#3 ← phi( bitmap_line::@7/(word) bitmap_line::sx#5 ) + (word) bitmap_line::x#13 ← phi( bitmap_line::@7/(word) bitmap_line::x#4 ) + (word) bitmap_line::y2#7 ← phi( bitmap_line::@7/(word) bitmap_line::y2#10 ) + (word) bitmap_line::dy#3 ← phi( bitmap_line::@7/(word) bitmap_line::dy#7 ) + (word) bitmap_line::dx#4 ← phi( bitmap_line::@7/(word) bitmap_line::dx#8 ) + (word) bitmap_line::e#3 ← phi( bitmap_line::@7/(word) bitmap_line::e#5 ) + (word) bitmap_line::sy#1 ← phi( bitmap_line::@7/(word) bitmap_line::sy#3 ) + (word) bitmap_line::y#5 ← phi( bitmap_line::@7/(word) bitmap_line::y#4 ) + (word) bitmap_line::y#1 ← (word) bitmap_line::y#5 + (word) bitmap_line::sy#1 + (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#4 + (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 + (bool~) bitmap_line::$21 ← ! (bool~) bitmap_line::$20 + if((bool~) bitmap_line::$21) goto bitmap_line::@8 + to:bitmap_line::@9 +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@21 bitmap_line::@9 + (word) bitmap_line::sx#10 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 bitmap_line::@9/(word) bitmap_line::sx#1 ) + (word) bitmap_line::dy#11 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 bitmap_line::@9/(word) bitmap_line::dy#4 ) + (word) bitmap_line::dx#11 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 bitmap_line::@9/(word) bitmap_line::dx#14 ) + (word) bitmap_line::e#6 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 bitmap_line::@9/(word) bitmap_line::e#2 ) + (word) bitmap_line::sy#6 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 bitmap_line::@9/(word) bitmap_line::sy#8 ) + (word) bitmap_line::x#12 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 bitmap_line::@9/(word) bitmap_line::x#1 ) + (word) bitmap_line::y2#4 ← phi( bitmap_line::@21/(word) bitmap_line::y2#7 bitmap_line::@9/(word) bitmap_line::y2#8 ) + (word) bitmap_line::y#6 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 bitmap_line::@9/(word) bitmap_line::y#12 ) + (bool~) bitmap_line::$22 ← (word) bitmap_line::y#6 != (word) bitmap_line::y2#4 + if((bool~) bitmap_line::$22) goto bitmap_line::@7 + to:bitmap_line::@3 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@21 + (word) bitmap_line::dx#14 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 ) + (word) bitmap_line::sy#8 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 ) + (word) bitmap_line::y2#8 ← phi( bitmap_line::@21/(word) bitmap_line::y2#7 ) + (word) bitmap_line::y#12 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 ) + (word) bitmap_line::dy#4 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 ) + (word) bitmap_line::e#4 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 ) + (word) bitmap_line::sx#1 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 ) + (word) bitmap_line::x#5 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 ) + (word) bitmap_line::x#1 ← (word) bitmap_line::x#5 + (word) bitmap_line::sx#1 + (word) bitmap_line::e#2 ← (word) bitmap_line::e#4 - (word) bitmap_line::dy#4 + to:bitmap_line::@8 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@8 + (word) bitmap_line::x#6 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@8/(word) bitmap_line::x#12 ) + (word) bitmap_line::y#7 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@8/(word) bitmap_line::y#6 ) + (byte~) bitmap_line::$13 ← ((byte)) (word) bitmap_line::y#7 + (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + (byte) bitmap_plot::y#2 ← (byte~) bitmap_line::$13 + call bitmap_plot + to:bitmap_line::@22 +bitmap_line::@22: scope:[bitmap_line] from bitmap_line::@3 + to:bitmap_line::@return +bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@2 + (word) bitmap_line::sy#7 ← phi( bitmap_line::@13/(word) bitmap_line::sy#9 bitmap_line::@2/(word) bitmap_line::sy#10 ) + (word) bitmap_line::x2#9 ← phi( bitmap_line::@13/(word) bitmap_line::x2#4 bitmap_line::@2/(word) bitmap_line::x2#10 ) + (word) bitmap_line::dx#9 ← phi( bitmap_line::@13/(word) bitmap_line::dx#12 bitmap_line::@2/(word) bitmap_line::dx#13 ) + (word) bitmap_line::dy#8 ← phi( bitmap_line::@13/(word) bitmap_line::dy#12 bitmap_line::@2/(word) bitmap_line::dy#2 ) + (word) bitmap_line::e1#5 ← phi( bitmap_line::@13/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + (word) bitmap_line::sx#4 ← phi( bitmap_line::@13/(word) bitmap_line::sx#6 bitmap_line::@2/(word) bitmap_line::sx#7 ) + (word) bitmap_line::x#7 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@2/(word) bitmap_line::x#14 ) + (word) bitmap_line::y#8 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#14 ) + (byte~) bitmap_line::$24 ← ((byte)) (word) bitmap_line::y#8 + (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + (byte) bitmap_plot::y#3 ← (byte~) bitmap_line::$24 + call bitmap_plot + to:bitmap_line::@23 +bitmap_line::@23: scope:[bitmap_line] from bitmap_line::@12 + (word) bitmap_line::sy#4 ← phi( bitmap_line::@12/(word) bitmap_line::sy#7 ) + (word) bitmap_line::y#15 ← phi( bitmap_line::@12/(word) bitmap_line::y#8 ) + (word) bitmap_line::x2#7 ← phi( bitmap_line::@12/(word) bitmap_line::x2#9 ) + (word) bitmap_line::dx#5 ← phi( bitmap_line::@12/(word) bitmap_line::dx#9 ) + (word) bitmap_line::dy#5 ← phi( bitmap_line::@12/(word) bitmap_line::dy#8 ) + (word) bitmap_line::e1#3 ← phi( bitmap_line::@12/(word) bitmap_line::e1#5 ) + (word) bitmap_line::sx#2 ← phi( bitmap_line::@12/(word) bitmap_line::sx#4 ) + (word) bitmap_line::x#8 ← phi( bitmap_line::@12/(word) bitmap_line::x#7 ) + (word) bitmap_line::x#2 ← (word) bitmap_line::x#8 + (word) bitmap_line::sx#2 + (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#5 + (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 + (bool~) bitmap_line::$27 ← ! (bool~) bitmap_line::$26 + if((bool~) bitmap_line::$27) goto bitmap_line::@13 + to:bitmap_line::@14 +bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@14 bitmap_line::@23 + (word) bitmap_line::sy#9 ← phi( bitmap_line::@14/(word) bitmap_line::sy#2 bitmap_line::@23/(word) bitmap_line::sy#4 ) + (word) bitmap_line::dx#12 ← phi( bitmap_line::@14/(word) bitmap_line::dx#6 bitmap_line::@23/(word) bitmap_line::dx#5 ) + (word) bitmap_line::dy#12 ← phi( bitmap_line::@14/(word) bitmap_line::dy#13 bitmap_line::@23/(word) bitmap_line::dy#5 ) + (word) bitmap_line::e1#6 ← phi( bitmap_line::@14/(word) bitmap_line::e1#2 bitmap_line::@23/(word) bitmap_line::e1#1 ) + (word) bitmap_line::sx#6 ← phi( bitmap_line::@14/(word) bitmap_line::sx#11 bitmap_line::@23/(word) bitmap_line::sx#2 ) + (word) bitmap_line::y#13 ← phi( bitmap_line::@14/(word) bitmap_line::y#2 bitmap_line::@23/(word) bitmap_line::y#15 ) + (word) bitmap_line::x2#4 ← phi( bitmap_line::@14/(word) bitmap_line::x2#6 bitmap_line::@23/(word) bitmap_line::x2#7 ) + (word) bitmap_line::x#9 ← phi( bitmap_line::@14/(word) bitmap_line::x#15 bitmap_line::@23/(word) bitmap_line::x#2 ) + (bool~) bitmap_line::$28 ← (word) bitmap_line::x#9 != (word) bitmap_line::x2#4 + if((bool~) bitmap_line::$28) goto bitmap_line::@12 + to:bitmap_line::@3 +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@23 + (word) bitmap_line::dy#13 ← phi( bitmap_line::@23/(word) bitmap_line::dy#5 ) + (word) bitmap_line::sx#11 ← phi( bitmap_line::@23/(word) bitmap_line::sx#2 ) + (word) bitmap_line::x2#6 ← phi( bitmap_line::@23/(word) bitmap_line::x2#7 ) + (word) bitmap_line::x#15 ← phi( bitmap_line::@23/(word) bitmap_line::x#2 ) + (word) bitmap_line::dx#6 ← phi( bitmap_line::@23/(word) bitmap_line::dx#5 ) + (word) bitmap_line::e1#4 ← phi( bitmap_line::@23/(word) bitmap_line::e1#1 ) + (word) bitmap_line::sy#2 ← phi( bitmap_line::@23/(word) bitmap_line::sy#4 ) + (word) bitmap_line::y#9 ← phi( bitmap_line::@23/(word) bitmap_line::y#15 ) + (word) bitmap_line::y#2 ← (word) bitmap_line::y#9 + (word) bitmap_line::sy#2 + (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#4 - (word) bitmap_line::dx#6 + to:bitmap_line::@13 +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@16 + (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@16/(word) abs_u16::w#1 ) + (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80 + (bool~) abs_u16::$3 ← (number) 0 != (number~) abs_u16::$1 + if((bool~) abs_u16::$3) goto abs_u16::@1 + to:abs_u16::@3 +abs_u16::@1: scope:[abs_u16] from abs_u16 + (word) abs_u16::w#3 ← phi( abs_u16/(word) abs_u16::w#2 ) + (word~) abs_u16::$2 ← - (word) abs_u16::w#3 + (word) abs_u16::return#2 ← (word~) abs_u16::$2 + to:abs_u16::@return +abs_u16::@3: scope:[abs_u16] from abs_u16 + (word) abs_u16::w#4 ← phi( abs_u16/(word) abs_u16::w#2 ) + (word) abs_u16::return#3 ← (word) abs_u16::w#4 + to:abs_u16::@return +abs_u16::@return: scope:[abs_u16] from abs_u16::@1 abs_u16::@3 + (word) abs_u16::return#7 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16::@3/(word) abs_u16::return#3 ) + (word) abs_u16::return#4 ← (word) abs_u16::return#7 + return + to:@return +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@18 + (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@18/(word) sgn_u16::w#1 ) + (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (number) $80 + (bool~) sgn_u16::$2 ← (number) 0 != (number~) sgn_u16::$1 + if((bool~) sgn_u16::$2) goto sgn_u16::@1 + to:sgn_u16::@3 +sgn_u16::@1: scope:[sgn_u16] from sgn_u16 + (word) sgn_u16::return#2 ← (number) -1 + to:sgn_u16::@return +sgn_u16::@3: scope:[sgn_u16] from sgn_u16 + (word) sgn_u16::return#3 ← (number) 1 + to:sgn_u16::@return +sgn_u16::@return: scope:[sgn_u16] from sgn_u16::@1 sgn_u16::@3 + (word) sgn_u16::return#7 ← phi( sgn_u16::@1/(word) sgn_u16::return#2 sgn_u16::@3/(word) sgn_u16::return#3 ) + (word) sgn_u16::return#4 ← (word) sgn_u16::return#7 + return + to:@return +@13: scope:[] from @7 + (byte*) bitmap_screen#21 ← phi( @7/(byte*) bitmap_screen#0 ) + (byte*) bitmap_gfx#22 ← phi( @7/(byte*) bitmap_gfx#0 ) + (byte*) D011#0 ← ((byte*)) (number) $d011 + (byte) VIC_BMM#0 ← (number) $20 + (byte) VIC_DEN#0 ← (number) $10 + (byte) VIC_RSEL#0 ← (number) 8 + (byte*) D018#0 ← ((byte*)) (number) $d018 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (number) $dd00 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (number) $dd02 + (byte) BLACK#0 ← (number) 0 + (byte) WHITE#0 ← (number) 1 + to:@40 +@40: scope:[] from @13 + (byte*) bitmap_screen#19 ← phi( @13/(byte*) bitmap_screen#21 ) + (byte*) bitmap_gfx#20 ← phi( @13/(byte*) bitmap_gfx#22 ) + (byte*) PRINT_SCREEN#0 ← ((byte*)) (number) $400 + (byte*) BITMAP_SCREEN#0 ← ((byte*)) (number) $5c00 + (byte*) BITMAP_GRAPHICS#0 ← ((byte*)) (number) $6000 + (struct Segment[$15]) letter_c#0 ← { fill( $15, 0) } + to:@43 +main: scope:[main] from @43 + (byte*) bitmap_screen#12 ← phi( @43/(byte*) bitmap_screen#14 ) + (byte*) bitmap_gfx#13 ← phi( @43/(byte*) bitmap_gfx#15 ) + (number~) main::$22 ← (number) 0 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$45 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$45 + (number~) main::$22) ← (const byte) MOVE_TO + (struct SplineVector16*) main::$46 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$114 ← (signed word*)(struct SplineVector16*) main::$46 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$114 + (number~) main::$22) ← (number) $6c + (signed word*) main::$115 ← (signed word*)(struct SplineVector16*) main::$46 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$115 + (number~) main::$22) ← (number) $92 + (struct SplineVector16*) main::$47 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$116 ← (signed word*)(struct SplineVector16*) main::$47 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$116 + (number~) main::$22) ← (number) 0 + (signed word*) main::$117 ← (signed word*)(struct SplineVector16*) main::$47 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$117 + (number~) main::$22) ← (number) 0 + (number~) main::$23 ← (number) 1 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$48 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$48 + (number~) main::$23) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$49 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$118 ← (signed word*)(struct SplineVector16*) main::$49 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$118 + (number~) main::$23) ← (number) $59 + (signed word*) main::$119 ← (signed word*)(struct SplineVector16*) main::$49 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$119 + (number~) main::$23) ← (number) $b6 + (struct SplineVector16*) main::$50 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$120 ← (signed word*)(struct SplineVector16*) main::$50 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$120 + (number~) main::$23) ← (number) $67 + (signed word*) main::$121 ← (signed word*)(struct SplineVector16*) main::$50 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$121 + (number~) main::$23) ← (number) $a9 + (number~) main::$24 ← (number) 2 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$51 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$51 + (number~) main::$24) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$52 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$122 ← (signed word*)(struct SplineVector16*) main::$52 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$122 + (number~) main::$24) ← (number) $3b + (signed word*) main::$123 ← (signed word*)(struct SplineVector16*) main::$52 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$123 + (number~) main::$24) ← (number) $c3 + (struct SplineVector16*) main::$53 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$124 ← (signed word*)(struct SplineVector16*) main::$53 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$124 + (number~) main::$24) ← (number) $4b + (signed word*) main::$125 ← (signed word*)(struct SplineVector16*) main::$53 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$125 + (number~) main::$24) ← (number) $c3 + (number~) main::$25 ← (number) 3 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$54 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$54 + (number~) main::$25) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$55 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$126 ← (signed word*)(struct SplineVector16*) main::$55 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$126 + (number~) main::$25) ← (number) $17 + (signed word*) main::$127 ← (signed word*)(struct SplineVector16*) main::$55 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$127 + (number~) main::$25) ← (number) $b2 + (struct SplineVector16*) main::$56 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$128 ← (signed word*)(struct SplineVector16*) main::$56 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$128 + (number~) main::$25) ← (number) $26 + (signed word*) main::$129 ← (signed word*)(struct SplineVector16*) main::$56 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$129 + (number~) main::$25) ← (number) $c3 + (number~) main::$26 ← (number) 4 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$57 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$57 + (number~) main::$26) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$58 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$130 ← (signed word*)(struct SplineVector16*) main::$58 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$130 + (number~) main::$26) ← (number) 9 + (signed word*) main::$131 ← (signed word*)(struct SplineVector16*) main::$58 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$131 + (number~) main::$26) ← (number) $84 + (struct SplineVector16*) main::$59 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$132 ← (signed word*)(struct SplineVector16*) main::$59 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$132 + (number~) main::$26) ← (number) 9 + (signed word*) main::$133 ← (signed word*)(struct SplineVector16*) main::$59 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$133 + (number~) main::$26) ← (number) $a1 + (number~) main::$27 ← (number) 5 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$60 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$60 + (number~) main::$27) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$61 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$134 ← (signed word*)(struct SplineVector16*) main::$61 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$134 + (number~) main::$27) ← (number) $19 + (signed word*) main::$135 ← (signed word*)(struct SplineVector16*) main::$61 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$135 + (number~) main::$27) ← (number) $57 + (struct SplineVector16*) main::$62 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$136 ← (signed word*)(struct SplineVector16*) main::$62 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$136 + (number~) main::$27) ← (number) 9 + (signed word*) main::$137 ← (signed word*)(struct SplineVector16*) main::$62 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$137 + (number~) main::$27) ← (number) $68 + (number~) main::$28 ← (number) 6 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$63 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$63 + (number~) main::$28) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$64 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$138 ← (signed word*)(struct SplineVector16*) main::$64 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$138 + (number~) main::$28) ← (number) $41 + (signed word*) main::$139 ← (signed word*)(struct SplineVector16*) main::$64 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$139 + (number~) main::$28) ← (number) $45 + (struct SplineVector16*) main::$65 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$140 ← (signed word*)(struct SplineVector16*) main::$65 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$140 + (number~) main::$28) ← (number) $2a + (signed word*) main::$141 ← (signed word*)(struct SplineVector16*) main::$65 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$141 + (number~) main::$28) ← (number) $45 + (number~) main::$29 ← (number) 7 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$66 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$66 + (number~) main::$29) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$67 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$142 ← (signed word*)(struct SplineVector16*) main::$67 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$142 + (number~) main::$29) ← (number) $5d + (signed word*) main::$143 ← (signed word*)(struct SplineVector16*) main::$67 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$143 + (number~) main::$29) ← (number) $4f + (struct SplineVector16*) main::$68 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$144 ← (signed word*)(struct SplineVector16*) main::$68 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$144 + (number~) main::$29) ← (number) $52 + (signed word*) main::$145 ← (signed word*)(struct SplineVector16*) main::$68 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$145 + (number~) main::$29) ← (number) $45 + (number~) main::$30 ← (number) 8 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$69 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$69 + (number~) main::$30) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$70 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$146 ← (signed word*)(struct SplineVector16*) main::$70 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$146 + (number~) main::$30) ← (number) $69 + (signed word*) main::$147 ← (signed word*)(struct SplineVector16*) main::$70 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$147 + (number~) main::$30) ← (number) $62 + (struct SplineVector16*) main::$71 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$148 ← (signed word*)(struct SplineVector16*) main::$71 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$148 + (number~) main::$30) ← (number) $69 + (signed word*) main::$149 ← (signed word*)(struct SplineVector16*) main::$71 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$149 + (number~) main::$30) ← (number) $58 + (number~) main::$31 ← (number) 9 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$72 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$72 + (number~) main::$31) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$73 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$150 ← (signed word*)(struct SplineVector16*) main::$73 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$150 + (number~) main::$31) ← (number) $66 + (signed word*) main::$151 ← (signed word*)(struct SplineVector16*) main::$73 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$151 + (number~) main::$31) ← (number) $6a + (struct SplineVector16*) main::$74 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$152 ← (signed word*)(struct SplineVector16*) main::$74 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$152 + (number~) main::$31) ← (number) $69 + (signed word*) main::$153 ← (signed word*)(struct SplineVector16*) main::$74 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$153 + (number~) main::$31) ← (number) $67 + (number~) main::$32 ← (number) $a * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$75 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$75 + (number~) main::$32) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$76 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$154 ← (signed word*)(struct SplineVector16*) main::$76 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$154 + (number~) main::$32) ← (number) $5d + (signed word*) main::$155 ← (signed word*)(struct SplineVector16*) main::$76 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$155 + (number~) main::$32) ← (number) $6d + (struct SplineVector16*) main::$77 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$156 ← (signed word*)(struct SplineVector16*) main::$77 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$156 + (number~) main::$32) ← (number) $62 + (signed word*) main::$157 ← (signed word*)(struct SplineVector16*) main::$77 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$157 + (number~) main::$32) ← (number) $6d + (number~) main::$33 ← (number) $b * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$78 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$78 + (number~) main::$33) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$79 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$158 ← (signed word*)(struct SplineVector16*) main::$79 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$158 + (number~) main::$33) ← (number) $51 + (signed word*) main::$159 ← (signed word*)(struct SplineVector16*) main::$79 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$159 + (number~) main::$33) ← (number) $68 + (struct SplineVector16*) main::$80 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$160 ← (signed word*)(struct SplineVector16*) main::$80 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$160 + (number~) main::$33) ← (number) $55 + (signed word*) main::$161 ← (signed word*)(struct SplineVector16*) main::$80 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$161 + (number~) main::$33) ← (number) $6d + (number~) main::$34 ← (number) $c * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$81 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$81 + (number~) main::$34) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$82 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$162 ← (signed word*)(struct SplineVector16*) main::$82 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$162 + (number~) main::$34) ← (number) $4e + (signed word*) main::$163 ← (signed word*)(struct SplineVector16*) main::$82 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$163 + (number~) main::$34) ← (number) $5d + (struct SplineVector16*) main::$83 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$164 ← (signed word*)(struct SplineVector16*) main::$83 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$164 + (number~) main::$34) ← (number) $4f + (signed word*) main::$165 ← (signed word*)(struct SplineVector16*) main::$83 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$165 + (number~) main::$34) ← (number) $65 + (number~) main::$35 ← (number) $d * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$84 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$84 + (number~) main::$35) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$85 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$166 ← (signed word*)(struct SplineVector16*) main::$85 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$166 + (number~) main::$35) ← (number) $49 + (signed word*) main::$167 ← (signed word*)(struct SplineVector16*) main::$85 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$167 + (number~) main::$35) ← (number) $52 + (struct SplineVector16*) main::$86 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$168 ← (signed word*)(struct SplineVector16*) main::$86 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$168 + (number~) main::$35) ← (number) $4e + (signed word*) main::$169 ← (signed word*)(struct SplineVector16*) main::$86 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$169 + (number~) main::$35) ← (number) $56 + (number~) main::$36 ← (number) $e * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$87 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$87 + (number~) main::$36) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$88 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$170 ← (signed word*)(struct SplineVector16*) main::$88 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$170 + (number~) main::$36) ← (number) $3d + (signed word*) main::$171 ← (signed word*)(struct SplineVector16*) main::$88 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$171 + (number~) main::$36) ← (number) $4e + (struct SplineVector16*) main::$89 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$172 ← (signed word*)(struct SplineVector16*) main::$89 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$172 + (number~) main::$36) ← (number) $45 + (signed word*) main::$173 ← (signed word*)(struct SplineVector16*) main::$89 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$173 + (number~) main::$36) ← (number) $4e + (number~) main::$37 ← (number) $f * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$90 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$90 + (number~) main::$37) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$91 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$174 ← (signed word*)(struct SplineVector16*) main::$91 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$174 + (number~) main::$37) ← (number) $28 + (signed word*) main::$175 ← (signed word*)(struct SplineVector16*) main::$91 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$175 + (number~) main::$37) ← (number) $58 + (struct SplineVector16*) main::$92 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$176 ← (signed word*)(struct SplineVector16*) main::$92 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$176 + (number~) main::$37) ← (number) $30 + (signed word*) main::$177 ← (signed word*)(struct SplineVector16*) main::$92 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$177 + (number~) main::$37) ← (number) $4e + (number~) main::$38 ← (number) $10 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$93 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$93 + (number~) main::$38) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$94 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$178 ← (signed word*)(struct SplineVector16*) main::$94 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$178 + (number~) main::$38) ← (number) $1d + (signed word*) main::$179 ← (signed word*)(struct SplineVector16*) main::$94 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$179 + (number~) main::$38) ← (number) $79 + (struct SplineVector16*) main::$95 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$180 ← (signed word*)(struct SplineVector16*) main::$95 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$180 + (number~) main::$38) ← (number) $1d + (signed word*) main::$181 ← (signed word*)(struct SplineVector16*) main::$95 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$181 + (number~) main::$38) ← (number) $64 + (number~) main::$39 ← (number) $11 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$96 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$96 + (number~) main::$39) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$97 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$182 ← (signed word*)(struct SplineVector16*) main::$97 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$182 + (number~) main::$39) ← (number) $28 + (signed word*) main::$183 ← (signed word*)(struct SplineVector16*) main::$97 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$183 + (number~) main::$39) ← (number) $9e + (struct SplineVector16*) main::$98 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$184 ← (signed word*)(struct SplineVector16*) main::$98 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$184 + (number~) main::$39) ← (number) $1d + (signed word*) main::$185 ← (signed word*)(struct SplineVector16*) main::$98 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$185 + (number~) main::$39) ← (number) $8e + (number~) main::$40 ← (number) $12 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$99 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$99 + (number~) main::$40) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$100 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$186 ← (signed word*)(struct SplineVector16*) main::$100 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$186 + (number~) main::$40) ← (number) $44 + (signed word*) main::$187 ← (signed word*)(struct SplineVector16*) main::$100 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$187 + (number~) main::$40) ← (number) $ae + (struct SplineVector16*) main::$101 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$188 ← (signed word*)(struct SplineVector16*) main::$101 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$188 + (number~) main::$40) ← (number) $32 + (signed word*) main::$189 ← (signed word*)(struct SplineVector16*) main::$101 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$189 + (number~) main::$40) ← (number) $ae + (number~) main::$41 ← (number) $13 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$102 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$102 + (number~) main::$41) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$103 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$190 ← (signed word*)(struct SplineVector16*) main::$103 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$190 + (number~) main::$41) ← (number) $5b + (signed word*) main::$191 ← (signed word*)(struct SplineVector16*) main::$103 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$191 + (number~) main::$41) ← (number) $a6 + (struct SplineVector16*) main::$104 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$192 ← (signed word*)(struct SplineVector16*) main::$104 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$192 + (number~) main::$41) ← (number) $50 + (signed word*) main::$193 ← (signed word*)(struct SplineVector16*) main::$104 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$193 + (number~) main::$41) ← (number) $ae + (number~) main::$42 ← (number) $14 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$105 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$105 + (number~) main::$42) ← (const byte) SPLINE_TO + (struct SplineVector16*) main::$106 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$194 ← (signed word*)(struct SplineVector16*) main::$106 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$194 + (number~) main::$42) ← (number) $68 + (signed word*) main::$195 ← (signed word*)(struct SplineVector16*) main::$106 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$195 + (number~) main::$42) ← (number) $90 + (struct SplineVector16*) main::$107 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$196 ← (signed word*)(struct SplineVector16*) main::$107 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$196 + (number~) main::$42) ← (number) $62 + (signed word*) main::$197 ← (signed word*)(struct SplineVector16*) main::$107 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$197 + (number~) main::$42) ← (number) $a0 + (number~) main::$43 ← (number) $15 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$108 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + *((byte*) main::$108 + (number~) main::$43) ← (const byte) LINE_TO + (struct SplineVector16*) main::$109 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$198 ← (signed word*)(struct SplineVector16*) main::$109 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$198 + (number~) main::$43) ← (number) $6c + (signed word*) main::$199 ← (signed word*)(struct SplineVector16*) main::$109 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$199 + (number~) main::$43) ← (number) $92 + (struct SplineVector16*) main::$110 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$200 ← (signed word*)(struct SplineVector16*) main::$110 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + *((signed word*) main::$200 + (number~) main::$43) ← (number) 0 + (signed word*) main::$201 ← (signed word*)(struct SplineVector16*) main::$110 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + *((signed word*) main::$201 + (number~) main::$43) ← (number) 0 + (byte*) bitmap_init::gfx#0 ← (byte*) BITMAP_GRAPHICS#0 + (byte*) bitmap_init::screen#0 ← (byte*) BITMAP_SCREEN#0 + call bitmap_init + to:main::@19 +main::@19: scope:[main] from main + (byte*) bitmap_screen#8 ← phi( main/(byte*) bitmap_screen#2 ) + (byte*) bitmap_gfx#8 ← phi( main/(byte*) bitmap_gfx#2 ) + (byte*) bitmap_gfx#3 ← (byte*) bitmap_gfx#8 + (byte*) bitmap_screen#3 ← (byte*) bitmap_screen#8 + (byte) bitmap_clear::bgcol#0 ← (byte) BLACK#0 + (byte) bitmap_clear::fgcol#0 ← (byte) WHITE#0 + call bitmap_clear + to:main::@20 +main::@20: scope:[main] from main::@19 + (byte*) bitmap_screen#41 ← phi( main::@19/(byte*) bitmap_screen#3 ) + (byte*) bitmap_gfx#42 ← phi( main::@19/(byte*) bitmap_gfx#3 ) + (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) BITMAP_SCREEN#0 + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@20 + (byte*) bitmap_screen#40 ← phi( main::@20/(byte*) bitmap_screen#41 ) + (byte*) bitmap_gfx#41 ← phi( main::@20/(byte*) bitmap_gfx#42 ) + (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main::@20/(byte*) main::vicSelectGfxBank1_gfx#0 ) + *((byte*) CIA2_PORT_A_DDR#0) ← (number) 3 + (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + (byte*) bitmap_screen#39 ← phi( main::vicSelectGfxBank1/(byte*) bitmap_screen#40 ) + (byte*) bitmap_gfx#40 ← phi( main::vicSelectGfxBank1/(byte*) bitmap_gfx#41 ) + (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) + (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 + (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word~) main::vicSelectGfxBank1_toDd001_$0#0 + (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (number) $40 + (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (number) 3 ^ (number~) main::vicSelectGfxBank1_toDd001_$2#0 + (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (number~) main::vicSelectGfxBank1_toDd001_$3#0 + to:main::vicSelectGfxBank1_toDd001_@return +main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 + (byte*) bitmap_screen#38 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) bitmap_screen#39 ) + (byte*) bitmap_gfx#39 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) bitmap_gfx#40 ) + (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) + (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2 + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return + (byte*) bitmap_screen#37 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) bitmap_screen#38 ) + (byte*) bitmap_gfx#38 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) bitmap_gfx#39 ) + (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) + (byte~) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3 + *((byte*) CIA2_PORT_A#0) ← (byte~) main::vicSelectGfxBank1_$0#0 + to:main::@17 +main::@17: scope:[main] from main::vicSelectGfxBank1_@1 + (byte*) bitmap_screen#36 ← phi( main::vicSelectGfxBank1_@1/(byte*) bitmap_screen#37 ) + (byte*) bitmap_gfx#37 ← phi( main::vicSelectGfxBank1_@1/(byte*) bitmap_gfx#38 ) + (byte*) main::toD0181_screen#0 ← (byte*) BITMAP_SCREEN#0 + (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP_GRAPHICS#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::@17 + (byte*) bitmap_screen#35 ← phi( main::@17/(byte*) bitmap_screen#36 ) + (byte*) bitmap_gfx#36 ← phi( main::@17/(byte*) bitmap_gfx#37 ) + (byte*) main::toD0181_gfx#1 ← phi( main::@17/(byte*) main::toD0181_gfx#0 ) + (byte*) main::toD0181_screen#1 ← phi( main::@17/(byte*) main::toD0181_screen#0 ) + (word~) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1 + (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff + (number~) main::toD0181_$2#0 ← (number~) main::toD0181_$1#0 * (number) 4 + (number~) main::toD0181_$3#0 ← > (number~) main::toD0181_$2#0 + (word~) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1 + (byte~) main::toD0181_$5#0 ← > (word~) main::toD0181_$4#0 + (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4 + (number~) main::toD0181_$7#0 ← (number~) main::toD0181_$6#0 & (number) $f + (number~) main::toD0181_$8#0 ← (number~) main::toD0181_$3#0 | (number~) main::toD0181_$7#0 + (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8#0 + to:main::toD0181_@return +main::toD0181_@return: scope:[main] from main::toD0181 + (byte*) bitmap_screen#34 ← phi( main::toD0181/(byte*) bitmap_screen#35 ) + (byte*) bitmap_gfx#35 ← phi( main::toD0181/(byte*) bitmap_gfx#36 ) + (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) + (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 + to:main::@18 +main::@18: scope:[main] from main::toD0181_@return + (byte*) bitmap_screen#31 ← phi( main::toD0181_@return/(byte*) bitmap_screen#34 ) + (byte*) bitmap_gfx#32 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#35 ) + (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) + (byte~) main::$3 ← (byte) main::toD0181_return#3 + *((byte*) D018#0) ← (byte~) main::$3 + (byte~) main::$4 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0 + (byte~) main::$5 ← (byte~) main::$4 | (byte) VIC_RSEL#0 + (number~) main::$6 ← (byte~) main::$5 | (number) 3 + *((byte*) D011#0) ← (number~) main::$6 + (signed word) main::current_x#0 ← (number) 0 + (signed word) main::current_y#0 ← (number) 0 + (byte~) main::$7 ← sizeof (struct Segment[$15]) letter_c#0 + (byte~) main::$8 ← (byte~) main::$7 / (const byte) SIZEOF_STRUCT_SEGMENT + (byte) main::i#0 ← (byte) 0 + to:main::@1 +main::@1: scope:[main] from main::@18 main::@5 + (byte*) bitmap_screen#26 ← phi( main::@18/(byte*) bitmap_screen#31 main::@5/(byte*) bitmap_screen#18 ) + (byte*) bitmap_gfx#27 ← phi( main::@18/(byte*) bitmap_gfx#32 main::@5/(byte*) bitmap_gfx#19 ) + (signed word) main::current_y#7 ← phi( main::@18/(signed word) main::current_y#0 main::@5/(signed word) main::current_y#8 ) + (signed word) main::current_x#7 ← phi( main::@18/(signed word) main::current_x#0 main::@5/(signed word) main::current_x#8 ) + (byte) main::i#2 ← phi( main::@18/(byte) main::i#0 main::@5/(byte) main::i#1 ) + (byte~) main::$44 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_SEGMENT + (byte*) main::$111 ← (byte*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE + (byte) main::segment_type#0 ← *((byte*) main::$111 + (byte~) main::$44) + (struct SplineVector16*) main::$112 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO + (signed word*) main::$202 ← (signed word*)(struct SplineVector16*) main::$112 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + (signed word) main::segment_to_x#0 ← *((signed word*) main::$202 + (byte~) main::$44) + (signed word*) main::$203 ← (signed word*)(struct SplineVector16*) main::$112 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (signed word) main::segment_to_y#0 ← *((signed word*) main::$203 + (byte~) main::$44) + (struct SplineVector16*) main::$113 ← (struct SplineVector16*)(struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA + (signed word*) main::$204 ← (signed word*)(struct SplineVector16*) main::$113 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + (signed word) main::segment_via_x#0 ← *((signed word*) main::$204 + (byte~) main::$44) + (signed word*) main::$205 ← (signed word*)(struct SplineVector16*) main::$113 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (signed word) main::segment_via_y#0 ← *((signed word*) main::$205 + (byte~) main::$44) + (bool~) main::$9 ← (byte) main::segment_type#0 == (const byte) MOVE_TO + if((bool~) main::$9) goto main::@2 + to:main::@6 +main::@2: scope:[main] from main::@1 + (byte*) bitmap_screen#22 ← phi( main::@1/(byte*) bitmap_screen#26 ) + (byte*) bitmap_gfx#23 ← phi( main::@1/(byte*) bitmap_gfx#27 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 ) + (signed word) main::segment_to_y#1 ← phi( main::@1/(signed word) main::segment_to_y#0 ) + (signed word) main::segment_to_x#1 ← phi( main::@1/(signed word) main::segment_to_x#0 ) + (signed word) main::current_x#1 ← (signed word) main::segment_to_x#1 + (signed word) main::current_y#1 ← (signed word) main::segment_to_y#1 + to:main::@5 +main::@6: scope:[main] from main::@1 + (byte*) bitmap_screen#33 ← phi( main::@1/(byte*) bitmap_screen#26 ) + (byte*) bitmap_gfx#34 ← phi( main::@1/(byte*) bitmap_gfx#27 ) + (byte) main::i#10 ← phi( main::@1/(byte) main::i#2 ) + (signed word) main::current_y#6 ← phi( main::@1/(signed word) main::current_y#7 ) + (signed word) main::current_x#6 ← phi( main::@1/(signed word) main::current_x#7 ) + (signed word) main::segment_via_y#2 ← phi( main::@1/(signed word) main::segment_via_y#0 ) + (signed word) main::segment_via_x#2 ← phi( main::@1/(signed word) main::segment_via_x#0 ) + (signed word) main::segment_to_y#4 ← phi( main::@1/(signed word) main::segment_to_y#0 ) + (signed word) main::segment_to_x#4 ← phi( main::@1/(signed word) main::segment_to_x#0 ) + (byte) main::segment_type#1 ← phi( main::@1/(byte) main::segment_type#0 ) + (bool~) main::$10 ← (byte) main::segment_type#1 == (const byte) SPLINE_TO + if((bool~) main::$10) goto main::@3 + to:main::@7 +main::@3: scope:[main] from main::@6 + (byte*) bitmap_screen#32 ← phi( main::@6/(byte*) bitmap_screen#33 ) + (byte*) bitmap_gfx#33 ← phi( main::@6/(byte*) bitmap_gfx#34 ) + (byte) main::i#9 ← phi( main::@6/(byte) main::i#10 ) + (signed word) main::current_y#4 ← phi( main::@6/(signed word) main::current_y#6 ) + (signed word) main::current_x#4 ← phi( main::@6/(signed word) main::current_x#6 ) + (signed word) main::segment_via_y#1 ← phi( main::@6/(signed word) main::segment_via_y#2 ) + (signed word) main::segment_via_x#1 ← phi( main::@6/(signed word) main::segment_via_x#2 ) + (signed word) main::segment_to_y#2 ← phi( main::@6/(signed word) main::segment_to_y#4 ) + (signed word) main::segment_to_x#2 ← phi( main::@6/(signed word) main::segment_to_x#4 ) + (signed word) main::to1_x#0 ← (signed word) main::segment_to_x#2 + (signed word) main::to1_y#0 ← (signed word) main::segment_to_y#2 + (signed word) main::via_x#0 ← (signed word) main::segment_via_x#1 + (signed word) main::via_y#0 ← (signed word) main::segment_via_y#1 + (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 + (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 + (signed word) spline_8segB::p1_x#0 ← (signed word) main::via_x#0 + (signed word) spline_8segB::p1_y#0 ← (signed word) main::via_y#0 + (signed word) spline_8segB::p2_x#0 ← (signed word) main::to1_x#0 + (signed word) spline_8segB::p2_y#0 ← (signed word) main::to1_y#0 + call spline_8segB + to:main::@21 +main::@21: scope:[main] from main::@3 + (byte*) bitmap_screen#27 ← phi( main::@3/(byte*) bitmap_screen#32 ) + (byte*) bitmap_gfx#28 ← phi( main::@3/(byte*) bitmap_gfx#33 ) + (byte) main::i#7 ← phi( main::@3/(byte) main::i#9 ) + (signed word) main::to1_y#2 ← phi( main::@3/(signed word) main::to1_y#0 ) + (signed word) main::to1_x#2 ← phi( main::@3/(signed word) main::to1_x#0 ) + call bitmap_plot_spline_8seg + to:main::@22 +main::@22: scope:[main] from main::@21 + (byte*) bitmap_screen#23 ← phi( main::@21/(byte*) bitmap_screen#27 ) + (byte*) bitmap_gfx#24 ← phi( main::@21/(byte*) bitmap_gfx#28 ) + (byte) main::i#5 ← phi( main::@21/(byte) main::i#7 ) + (signed word) main::to1_y#1 ← phi( main::@21/(signed word) main::to1_y#2 ) + (signed word) main::to1_x#1 ← phi( main::@21/(signed word) main::to1_x#2 ) + (signed word) main::current_x#2 ← (signed word) main::to1_x#1 + (signed word) main::current_y#2 ← (signed word) main::to1_y#1 + to:main::@5 +main::@7: scope:[main] from main::@6 + (byte*) bitmap_screen#28 ← phi( main::@6/(byte*) bitmap_screen#33 ) + (byte*) bitmap_gfx#29 ← phi( main::@6/(byte*) bitmap_gfx#34 ) + (byte) main::i#8 ← phi( main::@6/(byte) main::i#10 ) + (signed word) main::current_y#5 ← phi( main::@6/(signed word) main::current_y#6 ) + (signed word) main::current_x#5 ← phi( main::@6/(signed word) main::current_x#6 ) + (signed word) main::segment_to_y#3 ← phi( main::@6/(signed word) main::segment_to_y#4 ) + (signed word) main::segment_to_x#3 ← phi( main::@6/(signed word) main::segment_to_x#4 ) + (signed word) main::to_x#0 ← (signed word) main::segment_to_x#3 + (signed word) main::to_y#0 ← (signed word) main::segment_to_y#3 + (word~) main::$11 ← ((word)) (signed word) main::current_x#5 + (word~) main::$12 ← ((word)) (signed word) main::current_y#5 + (word~) main::$13 ← ((word)) (signed word) main::to_x#0 + (word~) main::$14 ← ((word)) (signed word) main::to_y#0 + (word) bitmap_line::x1#0 ← (word~) main::$11 + (word) bitmap_line::y1#0 ← (word~) main::$12 + (word) bitmap_line::x2#0 ← (word~) main::$13 + (word) bitmap_line::y2#0 ← (word~) main::$14 + call bitmap_line + to:main::@23 +main::@23: scope:[main] from main::@7 + (byte*) bitmap_screen#24 ← phi( main::@7/(byte*) bitmap_screen#28 ) + (byte*) bitmap_gfx#25 ← phi( main::@7/(byte*) bitmap_gfx#29 ) + (byte) main::i#6 ← phi( main::@7/(byte) main::i#8 ) + (signed word) main::to_y#1 ← phi( main::@7/(signed word) main::to_y#0 ) + (signed word) main::to_x#1 ← phi( main::@7/(signed word) main::to_x#0 ) + (signed word) main::current_x#3 ← (signed word) main::to_x#1 + (signed word) main::current_y#3 ← (signed word) main::to_y#1 + to:main::@5 +main::@5: scope:[main] from main::@2 main::@22 main::@23 + (signed word) main::current_y#8 ← phi( main::@2/(signed word) main::current_y#1 main::@22/(signed word) main::current_y#2 main::@23/(signed word) main::current_y#3 ) + (signed word) main::current_x#8 ← phi( main::@2/(signed word) main::current_x#1 main::@22/(signed word) main::current_x#2 main::@23/(signed word) main::current_x#3 ) + (byte*) bitmap_screen#18 ← phi( main::@2/(byte*) bitmap_screen#22 main::@22/(byte*) bitmap_screen#23 main::@23/(byte*) bitmap_screen#24 ) + (byte*) bitmap_gfx#19 ← phi( main::@2/(byte*) bitmap_gfx#23 main::@22/(byte*) bitmap_gfx#24 main::@23/(byte*) bitmap_gfx#25 ) + (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 main::@22/(byte) main::i#5 main::@23/(byte) main::i#6 ) + (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,main::$8) + (bool~) main::$18 ← (byte) main::i#1 != rangelast(0,main::$8) + if((bool~) main::$18) goto main::@1 + to:main::@11 +main::@11: scope:[main] from main::@12 main::@5 + (byte*) bitmap_screen#13 ← phi( main::@12/(byte*) bitmap_screen#17 main::@5/(byte*) bitmap_screen#18 ) + (byte*) bitmap_gfx#14 ← phi( main::@12/(byte*) bitmap_gfx#18 main::@5/(byte*) bitmap_gfx#19 ) + if(true) goto main::@12 + to:main::@return +main::@12: scope:[main] from main::@11 + (byte*) bitmap_screen#17 ← phi( main::@11/(byte*) bitmap_screen#13 ) + (byte*) bitmap_gfx#18 ← phi( main::@11/(byte*) bitmap_gfx#14 ) + (byte*~) main::$21 ← (byte*) PRINT_SCREEN#0 + (number) $3e7 + *((byte*~) main::$21) ← ++ *((byte*~) main::$21) + to:main::@11 +main::@return: scope:[main] from main::@11 + (byte*) bitmap_screen#9 ← phi( main::@11/(byte*) bitmap_screen#13 ) + (byte*) bitmap_gfx#9 ← phi( main::@11/(byte*) bitmap_gfx#14 ) + (byte*) bitmap_gfx#4 ← (byte*) bitmap_gfx#9 + (byte*) bitmap_screen#4 ← (byte*) bitmap_screen#9 + return + to:@return +bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from main::@21 + (number~) bitmap_plot_spline_8seg::$6 ← (number) 0 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 + (signed word*) bitmap_plot_spline_8seg::$8 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*) bitmap_plot_spline_8seg::$8 + (number~) bitmap_plot_spline_8seg::$6) + (signed word*) bitmap_plot_spline_8seg::$9 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*) bitmap_plot_spline_8seg::$9 + (number~) bitmap_plot_spline_8seg::$6) + (byte) bitmap_plot_spline_8seg::n#0 ← (byte) 1 + to:bitmap_plot_spline_8seg::@1 +bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@3 + (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@3/(signed word) bitmap_plot_spline_8seg::current_y#1 ) + (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@3/(signed word) bitmap_plot_spline_8seg::current_x#1 ) + (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) bitmap_plot_spline_8seg::n#0 bitmap_plot_spline_8seg::@3/(byte) bitmap_plot_spline_8seg::n#1 ) + (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 + (signed word*) bitmap_plot_spline_8seg::$10 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X + (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*) bitmap_plot_spline_8seg::$10 + (byte~) bitmap_plot_spline_8seg::$7) + (signed word*) bitmap_plot_spline_8seg::$11 ← (signed word*)(struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*) bitmap_plot_spline_8seg::$11 + (byte~) bitmap_plot_spline_8seg::$7) + (word~) bitmap_plot_spline_8seg::$0 ← ((word)) (signed word) bitmap_plot_spline_8seg::current_x#2 + (word~) bitmap_plot_spline_8seg::$1 ← ((word)) (signed word) bitmap_plot_spline_8seg::current_y#2 + (word~) bitmap_plot_spline_8seg::$2 ← ((word)) (signed word) bitmap_plot_spline_8seg::to_x#0 + (word~) bitmap_plot_spline_8seg::$3 ← ((word)) (signed word) bitmap_plot_spline_8seg::to_y#0 + (word) bitmap_line::x1#1 ← (word~) bitmap_plot_spline_8seg::$0 + (word) bitmap_line::y1#1 ← (word~) bitmap_plot_spline_8seg::$1 + (word) bitmap_line::x2#1 ← (word~) bitmap_plot_spline_8seg::$2 + (word) bitmap_line::y2#1 ← (word~) bitmap_plot_spline_8seg::$3 + call bitmap_line + to:bitmap_plot_spline_8seg::@3 +bitmap_plot_spline_8seg::@3: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1 + (byte) bitmap_plot_spline_8seg::n#3 ← phi( bitmap_plot_spline_8seg::@1/(byte) bitmap_plot_spline_8seg::n#2 ) + (signed word) bitmap_plot_spline_8seg::to_y#1 ← phi( bitmap_plot_spline_8seg::@1/(signed word) bitmap_plot_spline_8seg::to_y#0 ) + (signed word) bitmap_plot_spline_8seg::to_x#1 ← phi( bitmap_plot_spline_8seg::@1/(signed word) bitmap_plot_spline_8seg::to_x#0 ) + (signed word) bitmap_plot_spline_8seg::current_x#1 ← (signed word) bitmap_plot_spline_8seg::to_x#1 + (signed word) bitmap_plot_spline_8seg::current_y#1 ← (signed word) bitmap_plot_spline_8seg::to_y#1 + (byte) bitmap_plot_spline_8seg::n#1 ← (byte) bitmap_plot_spline_8seg::n#3 + rangenext(1,8) + (bool~) bitmap_plot_spline_8seg::$5 ← (byte) bitmap_plot_spline_8seg::n#1 != rangelast(1,8) + if((bool~) bitmap_plot_spline_8seg::$5) goto bitmap_plot_spline_8seg::@1 + to:bitmap_plot_spline_8seg::@return +bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@3 + return + to:@return +@43: scope:[] from @40 + (byte*) bitmap_screen#14 ← phi( @40/(byte*) bitmap_screen#19 ) + (byte*) bitmap_gfx#15 ← phi( @40/(byte*) bitmap_gfx#20 ) + call main + to:@44 +@44: scope:[] from @43 + (byte*) bitmap_screen#10 ← phi( @43/(byte*) bitmap_screen#4 ) + (byte*) bitmap_gfx#10 ← phi( @43/(byte*) bitmap_gfx#4 ) + (byte*) bitmap_gfx#5 ← (byte*) bitmap_gfx#10 + (byte*) bitmap_screen#5 ← (byte*) bitmap_screen#10 + to:@end +@end: scope:[] from @44 + +SYMBOL TABLE SSA +(label) @1 +(label) @13 +(label) @40 +(label) @43 +(label) @44 +(label) @7 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(byte*) BITMAP_GRAPHICS#0 +(byte*) BITMAP_SCREEN +(byte*) BITMAP_SCREEN#0 +(byte) BLACK +(byte) BLACK#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D018 +(byte*) D018#0 +(const byte) LINE_TO = (byte) 2 +(const byte) MOVE_TO = (byte) 0 +(const byte) OFFSET_STRUCT_SEGMENT_TO = (byte) 1 +(const byte) OFFSET_STRUCT_SEGMENT_TYPE = (byte) 0 +(const byte) OFFSET_STRUCT_SEGMENT_VIA = (byte) 5 +(const byte) OFFSET_STRUCT_SPLINEVECTOR16_X = (byte) 0 +(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y = (byte) 2 +(byte*) PRINT_SCREEN +(byte*) PRINT_SCREEN#0 +(const byte) SIZEOF_STRUCT_SEGMENT = (byte) 9 +(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4 +(struct SplineVector16[9]) SPLINE_8SEG +(struct SplineVector16[9]) SPLINE_8SEG#0 +(const byte) SPLINE_TO = (byte) 1 +(struct SplineVector16) Segment::to +(byte) Segment::type +(struct SplineVector16) Segment::via +(const byte) SegmentType::LINE_TO = (byte) 2 +(const byte) SegmentType::MOVE_TO = (byte) 0 +(const byte) SegmentType::SPLINE_TO = (byte) 1 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) WHITE +(byte) WHITE#0 +(word()) abs_u16((word) abs_u16::w) +(byte~) abs_u16::$0 +(number~) abs_u16::$1 +(word~) abs_u16::$2 +(bool~) abs_u16::$3 +(label) abs_u16::@1 +(label) abs_u16::@3 +(label) abs_u16::@return +(word) abs_u16::return +(word) abs_u16::return#0 +(word) abs_u16::return#1 +(word) abs_u16::return#2 +(word) abs_u16::return#3 +(word) abs_u16::return#4 +(word) abs_u16::return#5 +(word) abs_u16::return#6 +(word) abs_u16::return#7 +(word) abs_u16::w +(word) abs_u16::w#0 +(word) abs_u16::w#1 +(word) abs_u16::w#2 +(word) abs_u16::w#3 +(word) abs_u16::w#4 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(number~) bitmap_clear::$0 +(number~) bitmap_clear::$1 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::bgcol#0 +(byte) bitmap_clear::bgcol#1 +(byte) bitmap_clear::col +(byte) bitmap_clear::col#0 +(byte) bitmap_clear::fgcol +(byte) bitmap_clear::fgcol#0 +(byte) bitmap_clear::fgcol#1 +(byte*) bitmap_gfx +(byte*) bitmap_gfx#0 +(byte*) bitmap_gfx#1 +(byte*) bitmap_gfx#10 +(byte*) bitmap_gfx#11 +(byte*) bitmap_gfx#12 +(byte*) bitmap_gfx#13 +(byte*) bitmap_gfx#14 +(byte*) bitmap_gfx#15 +(byte*) bitmap_gfx#16 +(byte*) bitmap_gfx#17 +(byte*) bitmap_gfx#18 +(byte*) bitmap_gfx#19 +(byte*) bitmap_gfx#2 +(byte*) bitmap_gfx#20 +(byte*) bitmap_gfx#21 +(byte*) bitmap_gfx#22 +(byte*) bitmap_gfx#23 +(byte*) bitmap_gfx#24 +(byte*) bitmap_gfx#25 +(byte*) bitmap_gfx#26 +(byte*) bitmap_gfx#27 +(byte*) bitmap_gfx#28 +(byte*) bitmap_gfx#29 +(byte*) bitmap_gfx#3 +(byte*) bitmap_gfx#30 +(byte*) bitmap_gfx#31 +(byte*) bitmap_gfx#32 +(byte*) bitmap_gfx#33 +(byte*) bitmap_gfx#34 +(byte*) bitmap_gfx#35 +(byte*) bitmap_gfx#36 +(byte*) bitmap_gfx#37 +(byte*) bitmap_gfx#38 +(byte*) bitmap_gfx#39 +(byte*) bitmap_gfx#4 +(byte*) bitmap_gfx#40 +(byte*) bitmap_gfx#41 +(byte*) bitmap_gfx#42 +(byte*) bitmap_gfx#5 +(byte*) bitmap_gfx#6 +(byte*) bitmap_gfx#7 +(byte*) bitmap_gfx#8 +(byte*) bitmap_gfx#9 +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(bool~) bitmap_init::$0 +(bool~) bitmap_init::$1 +(byte*~) bitmap_init::$10 +(bool~) bitmap_init::$11 +(bool~) bitmap_init::$2 +(number~) bitmap_init::$3 +(byte~) bitmap_init::$4 +(number~) bitmap_init::$5 +(byte~) bitmap_init::$6 +(number~) bitmap_init::$7 +(bool~) bitmap_init::$8 +(bool~) bitmap_init::$9 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@7 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#0 +(byte) bitmap_init::bits#1 +(byte) bitmap_init::bits#2 +(byte) bitmap_init::bits#3 +(byte) bitmap_init::bits#4 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::gfx#0 +(byte*) bitmap_init::gfx#1 +(byte*) bitmap_init::gfx#2 +(byte*) bitmap_init::gfx#3 +(byte*) bitmap_init::gfx#4 +(byte*) bitmap_init::gfx#5 +(byte*) bitmap_init::screen +(byte*) bitmap_init::screen#0 +(byte*) bitmap_init::screen#1 +(byte) bitmap_init::x +(byte) bitmap_init::x#0 +(byte) bitmap_init::x#1 +(byte) bitmap_init::x#2 +(byte) bitmap_init::x#3 +(byte) bitmap_init::x#4 +(byte) bitmap_init::y +(byte) bitmap_init::y#0 +(byte) bitmap_init::y#1 +(byte) bitmap_init::y#2 +(byte) bitmap_init::y#3 +(byte) bitmap_init::y#4 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#0 +(byte*) bitmap_init::yoffs#1 +(byte*) bitmap_init::yoffs#2 +(byte*) bitmap_init::yoffs#3 +(byte*) bitmap_init::yoffs#4 +(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) +(word~) bitmap_line::$0 +(word~) bitmap_line::$1 +(word~) bitmap_line::$10 +(word~) bitmap_line::$11 +(bool~) bitmap_line::$12 +(byte~) bitmap_line::$13 +(byte~) bitmap_line::$15 +(number~) bitmap_line::$17 +(byte~) bitmap_line::$18 +(word~) bitmap_line::$2 +(bool~) bitmap_line::$20 +(bool~) bitmap_line::$21 +(bool~) bitmap_line::$22 +(number~) bitmap_line::$23 +(byte~) bitmap_line::$24 +(bool~) bitmap_line::$26 +(bool~) bitmap_line::$27 +(bool~) bitmap_line::$28 +(word~) bitmap_line::$3 +(bool~) bitmap_line::$4 +(bool~) bitmap_line::$5 +(bool~) bitmap_line::$6 +(bool~) bitmap_line::$7 +(word~) bitmap_line::$8 +(word~) bitmap_line::$9 +(label) bitmap_line::@1 +(label) bitmap_line::@12 +(label) bitmap_line::@13 +(label) bitmap_line::@14 +(label) bitmap_line::@16 +(label) bitmap_line::@17 +(label) bitmap_line::@18 +(label) bitmap_line::@19 +(label) bitmap_line::@2 +(label) bitmap_line::@20 +(label) bitmap_line::@21 +(label) bitmap_line::@22 +(label) bitmap_line::@23 +(label) bitmap_line::@3 +(label) bitmap_line::@4 +(label) bitmap_line::@6 +(label) bitmap_line::@7 +(label) bitmap_line::@8 +(label) bitmap_line::@9 +(label) bitmap_line::@return +(word) bitmap_line::dx +(word) bitmap_line::dx#0 +(word) bitmap_line::dx#1 +(word) bitmap_line::dx#10 +(word) bitmap_line::dx#11 +(word) bitmap_line::dx#12 +(word) bitmap_line::dx#13 +(word) bitmap_line::dx#14 +(word) bitmap_line::dx#2 +(word) bitmap_line::dx#3 +(word) bitmap_line::dx#4 +(word) bitmap_line::dx#5 +(word) bitmap_line::dx#6 +(word) bitmap_line::dx#7 +(word) bitmap_line::dx#8 +(word) bitmap_line::dx#9 +(word) bitmap_line::dy +(word) bitmap_line::dy#0 +(word) bitmap_line::dy#1 +(word) bitmap_line::dy#10 +(word) bitmap_line::dy#11 +(word) bitmap_line::dy#12 +(word) bitmap_line::dy#13 +(word) bitmap_line::dy#2 +(word) bitmap_line::dy#3 +(word) bitmap_line::dy#4 +(word) bitmap_line::dy#5 +(word) bitmap_line::dy#6 +(word) bitmap_line::dy#7 +(word) bitmap_line::dy#8 +(word) bitmap_line::dy#9 +(word) bitmap_line::e +(word) bitmap_line::e#0 +(word) bitmap_line::e#1 +(word) bitmap_line::e#2 +(word) bitmap_line::e#3 +(word) bitmap_line::e#4 +(word) bitmap_line::e#5 +(word) bitmap_line::e#6 +(word) bitmap_line::e1 +(word) bitmap_line::e1#0 +(word) bitmap_line::e1#1 +(word) bitmap_line::e1#2 +(word) bitmap_line::e1#3 +(word) bitmap_line::e1#4 +(word) bitmap_line::e1#5 +(word) bitmap_line::e1#6 +(word) bitmap_line::sx +(word) bitmap_line::sx#0 +(word) bitmap_line::sx#1 +(word) bitmap_line::sx#10 +(word) bitmap_line::sx#11 +(word) bitmap_line::sx#2 +(word) bitmap_line::sx#3 +(word) bitmap_line::sx#4 +(word) bitmap_line::sx#5 +(word) bitmap_line::sx#6 +(word) bitmap_line::sx#7 +(word) bitmap_line::sx#8 +(word) bitmap_line::sx#9 +(word) bitmap_line::sy +(word) bitmap_line::sy#0 +(word) bitmap_line::sy#1 +(word) bitmap_line::sy#10 +(word) bitmap_line::sy#2 +(word) bitmap_line::sy#3 +(word) bitmap_line::sy#4 +(word) bitmap_line::sy#5 +(word) bitmap_line::sy#6 +(word) bitmap_line::sy#7 +(word) bitmap_line::sy#8 +(word) bitmap_line::sy#9 +(word) bitmap_line::x +(word) bitmap_line::x#0 +(word) bitmap_line::x#1 +(word) bitmap_line::x#10 +(word) bitmap_line::x#11 +(word) bitmap_line::x#12 +(word) bitmap_line::x#13 +(word) bitmap_line::x#14 +(word) bitmap_line::x#15 +(word) bitmap_line::x#16 +(word) bitmap_line::x#17 +(word) bitmap_line::x#18 +(word) bitmap_line::x#19 +(word) bitmap_line::x#2 +(word) bitmap_line::x#3 +(word) bitmap_line::x#4 +(word) bitmap_line::x#5 +(word) bitmap_line::x#6 +(word) bitmap_line::x#7 +(word) bitmap_line::x#8 +(word) bitmap_line::x#9 +(word) bitmap_line::x1 +(word) bitmap_line::x1#0 +(word) bitmap_line::x1#1 +(word) bitmap_line::x1#2 +(word) bitmap_line::x1#3 +(word) bitmap_line::x1#4 +(word) bitmap_line::x1#5 +(word) bitmap_line::x2 +(word) bitmap_line::x2#0 +(word) bitmap_line::x2#1 +(word) bitmap_line::x2#10 +(word) bitmap_line::x2#11 +(word) bitmap_line::x2#12 +(word) bitmap_line::x2#2 +(word) bitmap_line::x2#3 +(word) bitmap_line::x2#4 +(word) bitmap_line::x2#5 +(word) bitmap_line::x2#6 +(word) bitmap_line::x2#7 +(word) bitmap_line::x2#8 +(word) bitmap_line::x2#9 +(word) bitmap_line::y +(word) bitmap_line::y#0 +(word) bitmap_line::y#1 +(word) bitmap_line::y#10 +(word) bitmap_line::y#11 +(word) bitmap_line::y#12 +(word) bitmap_line::y#13 +(word) bitmap_line::y#14 +(word) bitmap_line::y#15 +(word) bitmap_line::y#16 +(word) bitmap_line::y#17 +(word) bitmap_line::y#18 +(word) bitmap_line::y#19 +(word) bitmap_line::y#2 +(word) bitmap_line::y#3 +(word) bitmap_line::y#4 +(word) bitmap_line::y#5 +(word) bitmap_line::y#6 +(word) bitmap_line::y#7 +(word) bitmap_line::y#8 +(word) bitmap_line::y#9 +(word) bitmap_line::y1 +(word) bitmap_line::y1#0 +(word) bitmap_line::y1#1 +(word) bitmap_line::y1#2 +(word) bitmap_line::y1#3 +(word) bitmap_line::y1#4 +(word) bitmap_line::y1#5 +(word) bitmap_line::y1#6 +(word) bitmap_line::y2 +(word) bitmap_line::y2#0 +(word) bitmap_line::y2#1 +(word) bitmap_line::y2#10 +(word) bitmap_line::y2#11 +(word) bitmap_line::y2#12 +(word) bitmap_line::y2#2 +(word) bitmap_line::y2#3 +(word) bitmap_line::y2#4 +(word) bitmap_line::y2#5 +(word) bitmap_line::y2#6 +(word) bitmap_line::y2#7 +(word) bitmap_line::y2#8 +(word) bitmap_line::y2#9 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(byte*~) bitmap_plot::$0 +(number~) bitmap_plot::$1 +(byte~) bitmap_plot::$2 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#0 +(byte*) bitmap_plot::plotter#1 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 +(word) bitmap_plot::x#1 +(word) bitmap_plot::x#2 +(word) bitmap_plot::x#3 +(word) bitmap_plot::x#4 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 +(byte) bitmap_plot::y#1 +(byte) bitmap_plot::y#2 +(byte) bitmap_plot::y#3 +(byte) bitmap_plot::y#4 +(byte[$100]) bitmap_plot_bit +(byte[$100]) bitmap_plot_bit#0 +(void()) bitmap_plot_spline_8seg() +(word~) bitmap_plot_spline_8seg::$0 +(word~) bitmap_plot_spline_8seg::$1 +(signed word*) bitmap_plot_spline_8seg::$10 +(signed word*) bitmap_plot_spline_8seg::$11 +(word~) bitmap_plot_spline_8seg::$2 +(word~) bitmap_plot_spline_8seg::$3 +(bool~) bitmap_plot_spline_8seg::$5 +(number~) bitmap_plot_spline_8seg::$6 +(byte~) bitmap_plot_spline_8seg::$7 +(signed word*) bitmap_plot_spline_8seg::$8 +(signed word*) bitmap_plot_spline_8seg::$9 +(label) bitmap_plot_spline_8seg::@1 +(label) bitmap_plot_spline_8seg::@3 +(label) bitmap_plot_spline_8seg::@return +(signed word) bitmap_plot_spline_8seg::current_x +(signed word) bitmap_plot_spline_8seg::current_x#0 +(signed word) bitmap_plot_spline_8seg::current_x#1 +(signed word) bitmap_plot_spline_8seg::current_x#2 +(signed word) bitmap_plot_spline_8seg::current_y +(signed word) bitmap_plot_spline_8seg::current_y#0 +(signed word) bitmap_plot_spline_8seg::current_y#1 +(signed word) bitmap_plot_spline_8seg::current_y#2 +(byte) bitmap_plot_spline_8seg::n +(byte) bitmap_plot_spline_8seg::n#0 +(byte) bitmap_plot_spline_8seg::n#1 +(byte) bitmap_plot_spline_8seg::n#2 +(byte) bitmap_plot_spline_8seg::n#3 +(signed word) bitmap_plot_spline_8seg::to_x +(signed word) bitmap_plot_spline_8seg::to_x#0 +(signed word) bitmap_plot_spline_8seg::to_x#1 +(signed word) bitmap_plot_spline_8seg::to_y +(signed word) bitmap_plot_spline_8seg::to_y#0 +(signed word) bitmap_plot_spline_8seg::to_y#1 +(byte[$100]) bitmap_plot_yhi +(byte[$100]) bitmap_plot_yhi#0 +(byte[$100]) bitmap_plot_ylo +(byte[$100]) bitmap_plot_ylo#0 +(byte*) bitmap_screen +(byte*) bitmap_screen#0 +(byte*) bitmap_screen#1 +(byte*) bitmap_screen#10 +(byte*) bitmap_screen#11 +(byte*) bitmap_screen#12 +(byte*) bitmap_screen#13 +(byte*) bitmap_screen#14 +(byte*) bitmap_screen#15 +(byte*) bitmap_screen#16 +(byte*) bitmap_screen#17 +(byte*) bitmap_screen#18 +(byte*) bitmap_screen#19 +(byte*) bitmap_screen#2 +(byte*) bitmap_screen#20 +(byte*) bitmap_screen#21 +(byte*) bitmap_screen#22 +(byte*) bitmap_screen#23 +(byte*) bitmap_screen#24 +(byte*) bitmap_screen#25 +(byte*) bitmap_screen#26 +(byte*) bitmap_screen#27 +(byte*) bitmap_screen#28 +(byte*) bitmap_screen#29 +(byte*) bitmap_screen#3 +(byte*) bitmap_screen#30 +(byte*) bitmap_screen#31 +(byte*) bitmap_screen#32 +(byte*) bitmap_screen#33 +(byte*) bitmap_screen#34 +(byte*) bitmap_screen#35 +(byte*) bitmap_screen#36 +(byte*) bitmap_screen#37 +(byte*) bitmap_screen#38 +(byte*) bitmap_screen#39 +(byte*) bitmap_screen#4 +(byte*) bitmap_screen#40 +(byte*) bitmap_screen#41 +(byte*) bitmap_screen#5 +(byte*) bitmap_screen#6 +(byte*) bitmap_screen#7 +(byte*) bitmap_screen#8 +(byte*) bitmap_screen#9 +(struct Segment[$15]) letter_c +(struct Segment[$15]) letter_c#0 +(void()) main() +(bool~) main::$10 +(struct SplineVector16*) main::$100 +(struct SplineVector16*) main::$101 +(byte*) main::$102 +(struct SplineVector16*) main::$103 +(struct SplineVector16*) main::$104 +(byte*) main::$105 +(struct SplineVector16*) main::$106 +(struct SplineVector16*) main::$107 +(byte*) main::$108 +(struct SplineVector16*) main::$109 +(word~) main::$11 +(struct SplineVector16*) main::$110 +(byte*) main::$111 +(struct SplineVector16*) main::$112 +(struct SplineVector16*) main::$113 +(signed word*) main::$114 +(signed word*) main::$115 +(signed word*) main::$116 +(signed word*) main::$117 +(signed word*) main::$118 +(signed word*) main::$119 +(word~) main::$12 +(signed word*) main::$120 +(signed word*) main::$121 +(signed word*) main::$122 +(signed word*) main::$123 +(signed word*) main::$124 +(signed word*) main::$125 +(signed word*) main::$126 +(signed word*) main::$127 +(signed word*) main::$128 +(signed word*) main::$129 +(word~) main::$13 +(signed word*) main::$130 +(signed word*) main::$131 +(signed word*) main::$132 +(signed word*) main::$133 +(signed word*) main::$134 +(signed word*) main::$135 +(signed word*) main::$136 +(signed word*) main::$137 +(signed word*) main::$138 +(signed word*) main::$139 +(word~) main::$14 +(signed word*) main::$140 +(signed word*) main::$141 +(signed word*) main::$142 +(signed word*) main::$143 +(signed word*) main::$144 +(signed word*) main::$145 +(signed word*) main::$146 +(signed word*) main::$147 +(signed word*) main::$148 +(signed word*) main::$149 +(signed word*) main::$150 +(signed word*) main::$151 +(signed word*) main::$152 +(signed word*) main::$153 +(signed word*) main::$154 +(signed word*) main::$155 +(signed word*) main::$156 +(signed word*) main::$157 +(signed word*) main::$158 +(signed word*) main::$159 +(signed word*) main::$160 +(signed word*) main::$161 +(signed word*) main::$162 +(signed word*) main::$163 +(signed word*) main::$164 +(signed word*) main::$165 +(signed word*) main::$166 +(signed word*) main::$167 +(signed word*) main::$168 +(signed word*) main::$169 +(signed word*) main::$170 +(signed word*) main::$171 +(signed word*) main::$172 +(signed word*) main::$173 +(signed word*) main::$174 +(signed word*) main::$175 +(signed word*) main::$176 +(signed word*) main::$177 +(signed word*) main::$178 +(signed word*) main::$179 +(bool~) main::$18 +(signed word*) main::$180 +(signed word*) main::$181 +(signed word*) main::$182 +(signed word*) main::$183 +(signed word*) main::$184 +(signed word*) main::$185 +(signed word*) main::$186 +(signed word*) main::$187 +(signed word*) main::$188 +(signed word*) main::$189 +(signed word*) main::$190 +(signed word*) main::$191 +(signed word*) main::$192 +(signed word*) main::$193 +(signed word*) main::$194 +(signed word*) main::$195 +(signed word*) main::$196 +(signed word*) main::$197 +(signed word*) main::$198 +(signed word*) main::$199 +(signed word*) main::$200 +(signed word*) main::$201 +(signed word*) main::$202 +(signed word*) main::$203 +(signed word*) main::$204 +(signed word*) main::$205 +(byte*~) main::$21 +(number~) main::$22 +(number~) main::$23 +(number~) main::$24 +(number~) main::$25 +(number~) main::$26 +(number~) main::$27 +(number~) main::$28 +(number~) main::$29 +(byte~) main::$3 +(number~) main::$30 +(number~) main::$31 +(number~) main::$32 +(number~) main::$33 +(number~) main::$34 +(number~) main::$35 +(number~) main::$36 +(number~) main::$37 +(number~) main::$38 +(number~) main::$39 +(byte~) main::$4 +(number~) main::$40 +(number~) main::$41 +(number~) main::$42 +(number~) main::$43 +(byte~) main::$44 +(byte*) main::$45 +(struct SplineVector16*) main::$46 +(struct SplineVector16*) main::$47 +(byte*) main::$48 +(struct SplineVector16*) main::$49 +(byte~) main::$5 +(struct SplineVector16*) main::$50 +(byte*) main::$51 +(struct SplineVector16*) main::$52 +(struct SplineVector16*) main::$53 +(byte*) main::$54 +(struct SplineVector16*) main::$55 +(struct SplineVector16*) main::$56 +(byte*) main::$57 +(struct SplineVector16*) main::$58 +(struct SplineVector16*) main::$59 +(number~) main::$6 +(byte*) main::$60 +(struct SplineVector16*) main::$61 +(struct SplineVector16*) main::$62 +(byte*) main::$63 +(struct SplineVector16*) main::$64 +(struct SplineVector16*) main::$65 +(byte*) main::$66 +(struct SplineVector16*) main::$67 +(struct SplineVector16*) main::$68 +(byte*) main::$69 +(byte~) main::$7 +(struct SplineVector16*) main::$70 +(struct SplineVector16*) main::$71 +(byte*) main::$72 +(struct SplineVector16*) main::$73 +(struct SplineVector16*) main::$74 +(byte*) main::$75 +(struct SplineVector16*) main::$76 +(struct SplineVector16*) main::$77 +(byte*) main::$78 +(struct SplineVector16*) main::$79 +(byte~) main::$8 +(struct SplineVector16*) main::$80 +(byte*) main::$81 +(struct SplineVector16*) main::$82 +(struct SplineVector16*) main::$83 +(byte*) main::$84 +(struct SplineVector16*) main::$85 +(struct SplineVector16*) main::$86 +(byte*) main::$87 +(struct SplineVector16*) main::$88 +(struct SplineVector16*) main::$89 +(bool~) main::$9 +(byte*) main::$90 +(struct SplineVector16*) main::$91 +(struct SplineVector16*) main::$92 +(byte*) main::$93 +(struct SplineVector16*) main::$94 +(struct SplineVector16*) main::$95 +(byte*) main::$96 +(struct SplineVector16*) main::$97 +(struct SplineVector16*) main::$98 +(byte*) main::$99 +(label) main::@1 +(label) main::@11 +(label) main::@12 +(label) main::@17 +(label) main::@18 +(label) main::@19 +(label) main::@2 +(label) main::@20 +(label) main::@21 +(label) main::@22 +(label) main::@23 +(label) main::@3 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@return +(signed word) main::current_x +(signed word) main::current_x#0 +(signed word) main::current_x#1 +(signed word) main::current_x#2 +(signed word) main::current_x#3 +(signed word) main::current_x#4 +(signed word) main::current_x#5 +(signed word) main::current_x#6 +(signed word) main::current_x#7 +(signed word) main::current_x#8 +(signed word) main::current_y +(signed word) main::current_y#0 +(signed word) main::current_y#1 +(signed word) main::current_y#2 +(signed word) main::current_y#3 +(signed word) main::current_y#4 +(signed word) main::current_y#5 +(signed word) main::current_y#6 +(signed word) main::current_y#7 +(signed word) main::current_y#8 +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#10 +(byte) main::i#2 +(byte) main::i#3 +(byte) main::i#4 +(byte) main::i#5 +(byte) main::i#6 +(byte) main::i#7 +(byte) main::i#8 +(byte) main::i#9 +(signed word) main::segment_to_x +(signed word) main::segment_to_x#0 +(signed word) main::segment_to_x#1 +(signed word) main::segment_to_x#2 +(signed word) main::segment_to_x#3 +(signed word) main::segment_to_x#4 +(signed word) main::segment_to_y +(signed word) main::segment_to_y#0 +(signed word) main::segment_to_y#1 +(signed word) main::segment_to_y#2 +(signed word) main::segment_to_y#3 +(signed word) main::segment_to_y#4 +(byte) main::segment_type +(byte) main::segment_type#0 +(byte) main::segment_type#1 +(signed word) main::segment_via_x +(signed word) main::segment_via_x#0 +(signed word) main::segment_via_x#1 +(signed word) main::segment_via_x#2 +(signed word) main::segment_via_y +(signed word) main::segment_via_y#0 +(signed word) main::segment_via_y#1 +(signed word) main::segment_via_y#2 +(signed word) main::to1_x +(signed word) main::to1_x#0 +(signed word) main::to1_x#1 +(signed word) main::to1_x#2 +(signed word) main::to1_y +(signed word) main::to1_y#0 +(signed word) main::to1_y#1 +(signed word) main::to1_y#2 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$0#0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$1#0 +(number~) main::toD0181_$2 +(number~) main::toD0181_$2#0 +(number~) main::toD0181_$3 +(number~) main::toD0181_$3#0 +(word~) main::toD0181_$4 +(word~) main::toD0181_$4#0 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$5#0 +(number~) main::toD0181_$6 +(number~) main::toD0181_$6#0 +(number~) main::toD0181_$7 +(number~) main::toD0181_$7#0 +(number~) main::toD0181_$8 +(number~) main::toD0181_$8#0 +(label) main::toD0181_@return +(byte*) main::toD0181_gfx +(byte*) main::toD0181_gfx#0 +(byte*) main::toD0181_gfx#1 +(byte) main::toD0181_return +(byte) main::toD0181_return#0 +(byte) main::toD0181_return#1 +(byte) main::toD0181_return#2 +(byte) main::toD0181_return#3 +(byte*) main::toD0181_screen +(byte*) main::toD0181_screen#0 +(byte*) main::toD0181_screen#1 +(signed word) main::to_x +(signed word) main::to_x#0 +(signed word) main::to_x#1 +(signed word) main::to_y +(signed word) main::to_y#0 +(signed word) main::to_y#1 +(signed word) main::via_x +(signed word) main::via_x#0 +(signed word) main::via_y +(signed word) main::via_y#0 +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(byte~) main::vicSelectGfxBank1_$0#0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(byte*) main::vicSelectGfxBank1_gfx#0 +(byte*) main::vicSelectGfxBank1_gfx#1 +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(word~) main::vicSelectGfxBank1_toDd001_$0#0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$1#0 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$2#0 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(number~) main::vicSelectGfxBank1_toDd001_$3#0 +(label) main::vicSelectGfxBank1_toDd001_@return +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 +(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +(byte) main::vicSelectGfxBank1_toDd001_return +(byte) main::vicSelectGfxBank1_toDd001_return#0 +(byte) main::vicSelectGfxBank1_toDd001_return#1 +(byte) main::vicSelectGfxBank1_toDd001_return#2 +(byte) main::vicSelectGfxBank1_toDd001_return#3 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(bool~) memset::$0 +(bool~) memset::$1 +(byte*~) memset::$2 +(byte*~) memset::$3 +(bool~) memset::$4 +(label) memset::@1 +(label) memset::@2 +(label) memset::@4 +(label) memset::@return +(byte) memset::c +(byte) memset::c#0 +(byte) memset::c#1 +(byte) memset::c#2 +(byte) memset::c#3 +(byte) memset::c#4 +(byte*) memset::dst +(byte*) memset::dst#0 +(byte*) memset::dst#1 +(byte*) memset::dst#2 +(byte*) memset::end +(byte*) memset::end#0 +(byte*) memset::end#1 +(word) memset::num +(word) memset::num#0 +(word) memset::num#1 +(word) memset::num#2 +(word) memset::num#3 +(void*) memset::return +(void*) memset::return#0 +(void*) memset::return#1 +(void*) memset::return#2 +(void*) memset::return#3 +(void*) memset::return#4 +(void*) memset::str +(void*) memset::str#0 +(void*) memset::str#1 +(void*) memset::str#2 +(void*) memset::str#3 +(void*) memset::str#4 +(void*) memset::str#5 +(word()) sgn_u16((word) sgn_u16::w) +(byte~) sgn_u16::$0 +(number~) sgn_u16::$1 +(bool~) sgn_u16::$2 +(label) sgn_u16::@1 +(label) sgn_u16::@3 +(label) sgn_u16::@return +(word) sgn_u16::return +(word) sgn_u16::return#0 +(word) sgn_u16::return#1 +(word) sgn_u16::return#2 +(word) sgn_u16::return#3 +(word) sgn_u16::return#4 +(word) sgn_u16::return#5 +(word) sgn_u16::return#6 +(word) sgn_u16::return#7 +(word) sgn_u16::w +(word) sgn_u16::w#0 +(word) sgn_u16::w#1 +(word) sgn_u16::w#2 +(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) +(number~) spline_8segB::$0 +(number~) spline_8segB::$1 +(number~) spline_8segB::$10 +(number~) spline_8segB::$11 +(number~) spline_8segB::$12 +(number~) spline_8segB::$13 +(number~) spline_8segB::$14 +(number~) spline_8segB::$15 +(number~) spline_8segB::$16 +(number~) spline_8segB::$17 +(number~) spline_8segB::$18 +(number~) spline_8segB::$19 +(number~) spline_8segB::$2 +(number~) spline_8segB::$20 +(number~) spline_8segB::$21 +(number~) spline_8segB::$22 +(number~) spline_8segB::$23 +(number~) spline_8segB::$24 +(number~) spline_8segB::$25 +(signed word~) spline_8segB::$26 +(signed word~) spline_8segB::$27 +(signed word~) spline_8segB::$28 +(signed word~) spline_8segB::$29 +(number~) spline_8segB::$3 +(bool~) spline_8segB::$30 +(byte~) spline_8segB::$31 +(number~) spline_8segB::$32 +(signed word*) spline_8segB::$33 +(signed word*) spline_8segB::$34 +(signed word*) spline_8segB::$35 +(signed word*) spline_8segB::$36 +(number~) spline_8segB::$4 +(number~) spline_8segB::$5 +(signed word~) spline_8segB::$6 +(number~) spline_8segB::$7 +(signed word~) spline_8segB::$8 +(number~) spline_8segB::$9 +(label) spline_8segB::@1 +(label) spline_8segB::@2 +(label) spline_8segB::@return +(signed word) spline_8segB::a_x +(signed word) spline_8segB::a_x#0 +(signed word) spline_8segB::a_y +(signed word) spline_8segB::a_y#0 +(signed word) spline_8segB::b_x +(signed word) spline_8segB::b_x#0 +(signed word) spline_8segB::b_y +(signed word) spline_8segB::b_y#0 +(signed word) spline_8segB::i_x +(signed word) spline_8segB::i_x#0 +(signed word) spline_8segB::i_x#1 +(signed word) spline_8segB::i_x#2 +(signed word) spline_8segB::i_y +(signed word) spline_8segB::i_y#0 +(signed word) spline_8segB::i_y#1 +(signed word) spline_8segB::i_y#2 +(signed word) spline_8segB::j_x +(signed word) spline_8segB::j_x#0 +(signed word) spline_8segB::j_x#1 +(signed word) spline_8segB::j_y +(signed word) spline_8segB::j_y#0 +(signed word) spline_8segB::j_y#1 +(byte) spline_8segB::n +(byte) spline_8segB::n#0 +(byte) spline_8segB::n#1 +(byte) spline_8segB::n#2 +(struct SplineVector16) spline_8segB::p0 +(signed word) spline_8segB::p0_x +(signed word) spline_8segB::p0_x#0 +(signed word) spline_8segB::p0_x#1 +(signed word) spline_8segB::p0_y +(signed word) spline_8segB::p0_y#0 +(signed word) spline_8segB::p0_y#1 +(struct SplineVector16) spline_8segB::p1 +(signed word) spline_8segB::p1_x +(signed word) spline_8segB::p1_x#0 +(signed word) spline_8segB::p1_x#1 +(signed word) spline_8segB::p1_y +(signed word) spline_8segB::p1_y#0 +(signed word) spline_8segB::p1_y#1 +(struct SplineVector16) spline_8segB::p2 +(signed word) spline_8segB::p2_x +(signed word) spline_8segB::p2_x#0 +(signed word) spline_8segB::p2_x#1 +(signed word) spline_8segB::p2_y +(signed word) spline_8segB::p2_y#0 +(signed word) spline_8segB::p2_y#1 +(signed word) spline_8segB::p_x +(signed word) spline_8segB::p_x#0 +(signed word) spline_8segB::p_x#1 +(signed word) spline_8segB::p_x#2 +(signed word) spline_8segB::p_x#3 +(signed word) spline_8segB::p_y +(signed word) spline_8segB::p_y#0 +(signed word) spline_8segB::p_y#1 +(signed word) spline_8segB::p_y#2 +(signed word) spline_8segB::p_y#3 + +Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi#0 + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo#0 + bitmap_plot::y#4) +Successful SSA optimization Pass2FixInlineConstructorsNew +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#1 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$0 in (number~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#1 * (snumber)(number) 2 +Adding number conversion cast (snumber) spline_8segB::$1 in (number~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#1 - (snumber~) spline_8segB::$0 +Adding number conversion cast (snumber) spline_8segB::$2 in (number~) spline_8segB::$2 ← (snumber~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#1 +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#1 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$3 in (number~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#1 * (snumber)(number) 2 +Adding number conversion cast (snumber) spline_8segB::$4 in (number~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#1 - (snumber~) spline_8segB::$3 +Adding number conversion cast (snumber) spline_8segB::$5 in (number~) spline_8segB::$5 ← (snumber~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#1 +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$7 ← (signed word~) spline_8segB::$6 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$7 in (number~) spline_8segB::$7 ← (signed word~) spline_8segB::$6 * (snumber)(number) 2 +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$9 ← (signed word~) spline_8segB::$8 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$9 in (number~) spline_8segB::$9 ← (signed word~) spline_8segB::$8 * (snumber)(number) 2 +Adding number conversion cast (snumber) 8 in (number~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 * (number) 8 +Adding number conversion cast (snumber) spline_8segB::$10 in (number~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 * (snumber)(number) 8 +Adding number conversion cast (snumber) spline_8segB::$11 in (number~) spline_8segB::$11 ← (signed word) spline_8segB::a_x#0 + (snumber~) spline_8segB::$10 +Adding number conversion cast (snumber) 8 in (number~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 * (number) 8 +Adding number conversion cast (snumber) spline_8segB::$12 in (number~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 * (snumber)(number) 8 +Adding number conversion cast (snumber) spline_8segB::$13 in (number~) spline_8segB::$13 ← (signed word) spline_8segB::a_y#0 + (snumber~) spline_8segB::$12 +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$14 ← (signed word) spline_8segB::a_x#0 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$14 in (number~) spline_8segB::$14 ← (signed word) spline_8segB::a_x#0 * (snumber)(number) 2 +Adding number conversion cast (snumber) 2 in (number~) spline_8segB::$15 ← (signed word) spline_8segB::a_y#0 * (number) 2 +Adding number conversion cast (snumber) spline_8segB::$15 in (number~) spline_8segB::$15 ← (signed word) spline_8segB::a_y#0 * (snumber)(number) 2 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$16 ← (signed word) spline_8segB::p0_x#1 * (number) $40 +Adding number conversion cast (snumber) spline_8segB::$16 in (number~) spline_8segB::$16 ← (signed word) spline_8segB::p0_x#1 * (snumber)(number) $40 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$17 ← (signed word) spline_8segB::p0_y#1 * (number) $40 +Adding number conversion cast (snumber) spline_8segB::$17 in (number~) spline_8segB::$17 ← (signed word) spline_8segB::p0_y#1 * (snumber)(number) $40 +Adding number conversion cast (snumber) $20 in (number~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (number) $20 +Adding number conversion cast (snumber) spline_8segB::$22 in (number~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (snumber)(number) $20 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$23 ← (snumber~) spline_8segB::$22 / (number) $40 +Adding number conversion cast (snumber) spline_8segB::$23 in (number~) spline_8segB::$23 ← (snumber~) spline_8segB::$22 / (snumber)(number) $40 +Adding number conversion cast (snumber) $20 in (number~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (number) $20 +Adding number conversion cast (snumber) spline_8segB::$24 in (number~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (snumber)(number) $20 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$25 ← (snumber~) spline_8segB::$24 / (number) $40 +Adding number conversion cast (snumber) spline_8segB::$25 in (number~) spline_8segB::$25 ← (snumber~) spline_8segB::$24 / (snumber)(number) $40 +Adding number conversion cast (snumber) $20 in (number~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#3 + (number) $20 +Adding number conversion cast (snumber) spline_8segB::$18 in (number~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#3 + (snumber)(number) $20 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$19 ← (snumber~) spline_8segB::$18 / (number) $40 +Adding number conversion cast (snumber) spline_8segB::$19 in (number~) spline_8segB::$19 ← (snumber~) spline_8segB::$18 / (snumber)(number) $40 +Adding number conversion cast (snumber) $20 in (number~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#3 + (number) $20 +Adding number conversion cast (snumber) spline_8segB::$20 in (number~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#3 + (snumber)(number) $20 +Adding number conversion cast (snumber) $40 in (number~) spline_8segB::$21 ← (snumber~) spline_8segB::$20 / (number) $40 +Adding number conversion cast (snumber) spline_8segB::$21 in (number~) spline_8segB::$21 ← (snumber~) spline_8segB::$20 / (snumber)(number) $40 +Adding number conversion cast (unumber) 8 in (number~) spline_8segB::$32 ← (number) 8 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Adding number conversion cast (unumber) spline_8segB::$32 in (number~) spline_8segB::$32 ← (unumber)(number) 8 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 +Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80 +Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0 +Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80 +Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7 +Adding number conversion cast (unumber) bitmap_init::$3 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 +Adding number conversion cast (unumber) bitmap_init::$5 in (number~) bitmap_init::$5 ← (unumber~) bitmap_init::$3 | (byte~) bitmap_init::$4 +Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7 +Adding number conversion cast (unumber) bitmap_init::$7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 +Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$8 ← (unumber~) bitmap_init::$7 == (number) 7 +Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 +Adding number conversion cast (unumber) $10 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10 +Adding number conversion cast (unumber) bitmap_clear::$0 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (unumber)(number) $10 +Adding number conversion cast (unumber) bitmap_clear::$1 in (number~) bitmap_clear::$1 ← (unumber~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 +Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0 +Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8 +Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (unumber)(number) $fff8 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0 +Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2 +Adding number conversion cast (unumber) bitmap_line::$23 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (unumber)(number) 2 +Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2 +Adding number conversion cast (unumber) bitmap_line::$17 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (unumber)(number) 2 +Adding number conversion cast (unumber) $80 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80 +Adding number conversion cast (unumber) abs_u16::$1 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (unumber)(number) $80 +Adding number conversion cast (unumber) 0 in (bool~) abs_u16::$3 ← (number) 0 != (unumber~) abs_u16::$1 +Adding number conversion cast (unumber) $80 in (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (number) $80 +Adding number conversion cast (unumber) sgn_u16::$1 in (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (unumber)(number) $80 +Adding number conversion cast (unumber) 0 in (bool~) sgn_u16::$2 ← (number) 0 != (unumber~) sgn_u16::$1 +Adding number conversion cast (unumber) -1 in (word) sgn_u16::return#2 ← (number) -1 +Adding number conversion cast (unumber) 1 in (word) sgn_u16::return#3 ← (number) 1 +Adding number conversion cast (unumber) $20 in (byte) VIC_BMM#0 ← (number) $20 +Adding number conversion cast (unumber) $10 in (byte) VIC_DEN#0 ← (number) $10 +Adding number conversion cast (unumber) 8 in (byte) VIC_RSEL#0 ← (number) 8 +Adding number conversion cast (unumber) 0 in (byte) BLACK#0 ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) WHITE#0 ← (number) 1 +Adding number conversion cast (unumber) 0 in (number~) main::$22 ← (number) 0 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$22 in (number~) main::$22 ← (unumber)(number) 0 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $6c in *((signed word*) main::$114 + (unumber~) main::$22) ← (number) $6c +Adding number conversion cast (snumber) $92 in *((signed word*) main::$115 + (unumber~) main::$22) ← (number) $92 +Adding number conversion cast (snumber) 0 in *((signed word*) main::$116 + (unumber~) main::$22) ← (number) 0 +Adding number conversion cast (snumber) 0 in *((signed word*) main::$117 + (unumber~) main::$22) ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) main::$23 ← (number) 1 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$23 in (number~) main::$23 ← (unumber)(number) 1 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $59 in *((signed word*) main::$118 + (unumber~) main::$23) ← (number) $59 +Adding number conversion cast (snumber) $b6 in *((signed word*) main::$119 + (unumber~) main::$23) ← (number) $b6 +Adding number conversion cast (snumber) $67 in *((signed word*) main::$120 + (unumber~) main::$23) ← (number) $67 +Adding number conversion cast (snumber) $a9 in *((signed word*) main::$121 + (unumber~) main::$23) ← (number) $a9 +Adding number conversion cast (unumber) 2 in (number~) main::$24 ← (number) 2 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$24 in (number~) main::$24 ← (unumber)(number) 2 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $3b in *((signed word*) main::$122 + (unumber~) main::$24) ← (number) $3b +Adding number conversion cast (snumber) $c3 in *((signed word*) main::$123 + (unumber~) main::$24) ← (number) $c3 +Adding number conversion cast (snumber) $4b in *((signed word*) main::$124 + (unumber~) main::$24) ← (number) $4b +Adding number conversion cast (snumber) $c3 in *((signed word*) main::$125 + (unumber~) main::$24) ← (number) $c3 +Adding number conversion cast (unumber) 3 in (number~) main::$25 ← (number) 3 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$25 in (number~) main::$25 ← (unumber)(number) 3 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $17 in *((signed word*) main::$126 + (unumber~) main::$25) ← (number) $17 +Adding number conversion cast (snumber) $b2 in *((signed word*) main::$127 + (unumber~) main::$25) ← (number) $b2 +Adding number conversion cast (snumber) $26 in *((signed word*) main::$128 + (unumber~) main::$25) ← (number) $26 +Adding number conversion cast (snumber) $c3 in *((signed word*) main::$129 + (unumber~) main::$25) ← (number) $c3 +Adding number conversion cast (unumber) 4 in (number~) main::$26 ← (number) 4 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$26 in (number~) main::$26 ← (unumber)(number) 4 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) 9 in *((signed word*) main::$130 + (unumber~) main::$26) ← (number) 9 +Adding number conversion cast (snumber) $84 in *((signed word*) main::$131 + (unumber~) main::$26) ← (number) $84 +Adding number conversion cast (snumber) 9 in *((signed word*) main::$132 + (unumber~) main::$26) ← (number) 9 +Adding number conversion cast (snumber) $a1 in *((signed word*) main::$133 + (unumber~) main::$26) ← (number) $a1 +Adding number conversion cast (unumber) 5 in (number~) main::$27 ← (number) 5 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$27 in (number~) main::$27 ← (unumber)(number) 5 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $19 in *((signed word*) main::$134 + (unumber~) main::$27) ← (number) $19 +Adding number conversion cast (snumber) $57 in *((signed word*) main::$135 + (unumber~) main::$27) ← (number) $57 +Adding number conversion cast (snumber) 9 in *((signed word*) main::$136 + (unumber~) main::$27) ← (number) 9 +Adding number conversion cast (snumber) $68 in *((signed word*) main::$137 + (unumber~) main::$27) ← (number) $68 +Adding number conversion cast (unumber) 6 in (number~) main::$28 ← (number) 6 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$28 in (number~) main::$28 ← (unumber)(number) 6 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $41 in *((signed word*) main::$138 + (unumber~) main::$28) ← (number) $41 +Adding number conversion cast (snumber) $45 in *((signed word*) main::$139 + (unumber~) main::$28) ← (number) $45 +Adding number conversion cast (snumber) $2a in *((signed word*) main::$140 + (unumber~) main::$28) ← (number) $2a +Adding number conversion cast (snumber) $45 in *((signed word*) main::$141 + (unumber~) main::$28) ← (number) $45 +Adding number conversion cast (unumber) 7 in (number~) main::$29 ← (number) 7 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$29 in (number~) main::$29 ← (unumber)(number) 7 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $5d in *((signed word*) main::$142 + (unumber~) main::$29) ← (number) $5d +Adding number conversion cast (snumber) $4f in *((signed word*) main::$143 + (unumber~) main::$29) ← (number) $4f +Adding number conversion cast (snumber) $52 in *((signed word*) main::$144 + (unumber~) main::$29) ← (number) $52 +Adding number conversion cast (snumber) $45 in *((signed word*) main::$145 + (unumber~) main::$29) ← (number) $45 +Adding number conversion cast (unumber) 8 in (number~) main::$30 ← (number) 8 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$30 in (number~) main::$30 ← (unumber)(number) 8 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $69 in *((signed word*) main::$146 + (unumber~) main::$30) ← (number) $69 +Adding number conversion cast (snumber) $62 in *((signed word*) main::$147 + (unumber~) main::$30) ← (number) $62 +Adding number conversion cast (snumber) $69 in *((signed word*) main::$148 + (unumber~) main::$30) ← (number) $69 +Adding number conversion cast (snumber) $58 in *((signed word*) main::$149 + (unumber~) main::$30) ← (number) $58 +Adding number conversion cast (unumber) 9 in (number~) main::$31 ← (number) 9 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$31 in (number~) main::$31 ← (unumber)(number) 9 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $66 in *((signed word*) main::$150 + (unumber~) main::$31) ← (number) $66 +Adding number conversion cast (snumber) $6a in *((signed word*) main::$151 + (unumber~) main::$31) ← (number) $6a +Adding number conversion cast (snumber) $69 in *((signed word*) main::$152 + (unumber~) main::$31) ← (number) $69 +Adding number conversion cast (snumber) $67 in *((signed word*) main::$153 + (unumber~) main::$31) ← (number) $67 +Adding number conversion cast (unumber) $a in (number~) main::$32 ← (number) $a * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$32 in (number~) main::$32 ← (unumber)(number) $a * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $5d in *((signed word*) main::$154 + (unumber~) main::$32) ← (number) $5d +Adding number conversion cast (snumber) $6d in *((signed word*) main::$155 + (unumber~) main::$32) ← (number) $6d +Adding number conversion cast (snumber) $62 in *((signed word*) main::$156 + (unumber~) main::$32) ← (number) $62 +Adding number conversion cast (snumber) $6d in *((signed word*) main::$157 + (unumber~) main::$32) ← (number) $6d +Adding number conversion cast (unumber) $b in (number~) main::$33 ← (number) $b * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$33 in (number~) main::$33 ← (unumber)(number) $b * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $51 in *((signed word*) main::$158 + (unumber~) main::$33) ← (number) $51 +Adding number conversion cast (snumber) $68 in *((signed word*) main::$159 + (unumber~) main::$33) ← (number) $68 +Adding number conversion cast (snumber) $55 in *((signed word*) main::$160 + (unumber~) main::$33) ← (number) $55 +Adding number conversion cast (snumber) $6d in *((signed word*) main::$161 + (unumber~) main::$33) ← (number) $6d +Adding number conversion cast (unumber) $c in (number~) main::$34 ← (number) $c * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$34 in (number~) main::$34 ← (unumber)(number) $c * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $4e in *((signed word*) main::$162 + (unumber~) main::$34) ← (number) $4e +Adding number conversion cast (snumber) $5d in *((signed word*) main::$163 + (unumber~) main::$34) ← (number) $5d +Adding number conversion cast (snumber) $4f in *((signed word*) main::$164 + (unumber~) main::$34) ← (number) $4f +Adding number conversion cast (snumber) $65 in *((signed word*) main::$165 + (unumber~) main::$34) ← (number) $65 +Adding number conversion cast (unumber) $d in (number~) main::$35 ← (number) $d * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$35 in (number~) main::$35 ← (unumber)(number) $d * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $49 in *((signed word*) main::$166 + (unumber~) main::$35) ← (number) $49 +Adding number conversion cast (snumber) $52 in *((signed word*) main::$167 + (unumber~) main::$35) ← (number) $52 +Adding number conversion cast (snumber) $4e in *((signed word*) main::$168 + (unumber~) main::$35) ← (number) $4e +Adding number conversion cast (snumber) $56 in *((signed word*) main::$169 + (unumber~) main::$35) ← (number) $56 +Adding number conversion cast (unumber) $e in (number~) main::$36 ← (number) $e * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$36 in (number~) main::$36 ← (unumber)(number) $e * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $3d in *((signed word*) main::$170 + (unumber~) main::$36) ← (number) $3d +Adding number conversion cast (snumber) $4e in *((signed word*) main::$171 + (unumber~) main::$36) ← (number) $4e +Adding number conversion cast (snumber) $45 in *((signed word*) main::$172 + (unumber~) main::$36) ← (number) $45 +Adding number conversion cast (snumber) $4e in *((signed word*) main::$173 + (unumber~) main::$36) ← (number) $4e +Adding number conversion cast (unumber) $f in (number~) main::$37 ← (number) $f * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$37 in (number~) main::$37 ← (unumber)(number) $f * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $28 in *((signed word*) main::$174 + (unumber~) main::$37) ← (number) $28 +Adding number conversion cast (snumber) $58 in *((signed word*) main::$175 + (unumber~) main::$37) ← (number) $58 +Adding number conversion cast (snumber) $30 in *((signed word*) main::$176 + (unumber~) main::$37) ← (number) $30 +Adding number conversion cast (snumber) $4e in *((signed word*) main::$177 + (unumber~) main::$37) ← (number) $4e +Adding number conversion cast (unumber) $10 in (number~) main::$38 ← (number) $10 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$38 in (number~) main::$38 ← (unumber)(number) $10 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $1d in *((signed word*) main::$178 + (unumber~) main::$38) ← (number) $1d +Adding number conversion cast (snumber) $79 in *((signed word*) main::$179 + (unumber~) main::$38) ← (number) $79 +Adding number conversion cast (snumber) $1d in *((signed word*) main::$180 + (unumber~) main::$38) ← (number) $1d +Adding number conversion cast (snumber) $64 in *((signed word*) main::$181 + (unumber~) main::$38) ← (number) $64 +Adding number conversion cast (unumber) $11 in (number~) main::$39 ← (number) $11 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$39 in (number~) main::$39 ← (unumber)(number) $11 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $28 in *((signed word*) main::$182 + (unumber~) main::$39) ← (number) $28 +Adding number conversion cast (snumber) $9e in *((signed word*) main::$183 + (unumber~) main::$39) ← (number) $9e +Adding number conversion cast (snumber) $1d in *((signed word*) main::$184 + (unumber~) main::$39) ← (number) $1d +Adding number conversion cast (snumber) $8e in *((signed word*) main::$185 + (unumber~) main::$39) ← (number) $8e +Adding number conversion cast (unumber) $12 in (number~) main::$40 ← (number) $12 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$40 in (number~) main::$40 ← (unumber)(number) $12 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $44 in *((signed word*) main::$186 + (unumber~) main::$40) ← (number) $44 +Adding number conversion cast (snumber) $ae in *((signed word*) main::$187 + (unumber~) main::$40) ← (number) $ae +Adding number conversion cast (snumber) $32 in *((signed word*) main::$188 + (unumber~) main::$40) ← (number) $32 +Adding number conversion cast (snumber) $ae in *((signed word*) main::$189 + (unumber~) main::$40) ← (number) $ae +Adding number conversion cast (unumber) $13 in (number~) main::$41 ← (number) $13 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$41 in (number~) main::$41 ← (unumber)(number) $13 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $5b in *((signed word*) main::$190 + (unumber~) main::$41) ← (number) $5b +Adding number conversion cast (snumber) $a6 in *((signed word*) main::$191 + (unumber~) main::$41) ← (number) $a6 +Adding number conversion cast (snumber) $50 in *((signed word*) main::$192 + (unumber~) main::$41) ← (number) $50 +Adding number conversion cast (snumber) $ae in *((signed word*) main::$193 + (unumber~) main::$41) ← (number) $ae +Adding number conversion cast (unumber) $14 in (number~) main::$42 ← (number) $14 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$42 in (number~) main::$42 ← (unumber)(number) $14 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $68 in *((signed word*) main::$194 + (unumber~) main::$42) ← (number) $68 +Adding number conversion cast (snumber) $90 in *((signed word*) main::$195 + (unumber~) main::$42) ← (number) $90 +Adding number conversion cast (snumber) $62 in *((signed word*) main::$196 + (unumber~) main::$42) ← (number) $62 +Adding number conversion cast (snumber) $a0 in *((signed word*) main::$197 + (unumber~) main::$42) ← (number) $a0 +Adding number conversion cast (unumber) $15 in (number~) main::$43 ← (number) $15 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (unumber) main::$43 in (number~) main::$43 ← (unumber)(number) $15 * (const byte) SIZEOF_STRUCT_SEGMENT +Adding number conversion cast (snumber) $6c in *((signed word*) main::$198 + (unumber~) main::$43) ← (number) $6c +Adding number conversion cast (snumber) $92 in *((signed word*) main::$199 + (unumber~) main::$43) ← (number) $92 +Adding number conversion cast (snumber) 0 in *((signed word*) main::$200 + (unumber~) main::$43) ← (number) 0 +Adding number conversion cast (snumber) 0 in *((signed word*) main::$201 + (unumber~) main::$43) ← (number) 0 +Adding number conversion cast (unumber) 3 in *((byte*) CIA2_PORT_A_DDR#0) ← (number) 3 +Adding number conversion cast (unumber) $40 in (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (number) $40 +Adding number conversion cast (unumber) main::vicSelectGfxBank1_toDd001_$2#0 in (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (unumber)(number) $40 +Adding number conversion cast (unumber) 3 in (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (number) 3 ^ (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 +Adding number conversion cast (unumber) main::vicSelectGfxBank1_toDd001_$3#0 in (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (unumber)(number) 3 ^ (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 +Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff +Adding number conversion cast (unumber) main::toD0181_$1#0 in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (unumber)(number) $3fff +Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (number) 4 +Adding number conversion cast (unumber) main::toD0181_$2#0 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (unumber)(number) 4 +Adding number conversion cast (unumber) main::toD0181_$3#0 in (number~) main::toD0181_$3#0 ← > (unumber~) main::toD0181_$2#0 +Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4 +Adding number conversion cast (unumber) main::toD0181_$6#0 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (unumber)(number) 4 +Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (number) $f +Adding number conversion cast (unumber) main::toD0181_$7#0 in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (unumber)(number) $f +Adding number conversion cast (unumber) main::toD0181_$8#0 in (number~) main::toD0181_$8#0 ← (unumber~) main::toD0181_$3#0 | (unumber~) main::toD0181_$7#0 +Adding number conversion cast (unumber) 3 in (number~) main::$6 ← (byte~) main::$5 | (number) 3 +Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (byte~) main::$5 | (unumber)(number) 3 +Adding number conversion cast (snumber) 0 in (signed word) main::current_x#0 ← (number) 0 +Adding number conversion cast (snumber) 0 in (signed word) main::current_y#0 ← (number) 0 +Adding number conversion cast (unumber) $3e7 in (byte*~) main::$21 ← (byte*) PRINT_SCREEN#0 + (number) $3e7 +Adding number conversion cast (unumber) 0 in (number~) bitmap_plot_spline_8seg::$6 ← (number) 0 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Adding number conversion cast (unumber) bitmap_plot_spline_8seg::$6 in (number~) bitmap_plot_spline_8seg::$6 ← (unumber)(number) 0 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 +Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 +Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80 +Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 +Inlining cast (byte) memset::c#1 ← (unumber)(number) 0 +Inlining cast (byte~) bitmap_line::$15 ← (byte)(word) bitmap_line::y#3 +Inlining cast (byte~) bitmap_line::$18 ← (byte)(word) bitmap_line::y#4 +Inlining cast (byte~) bitmap_line::$13 ← (byte)(word) bitmap_line::y#7 +Inlining cast (byte~) bitmap_line::$24 ← (byte)(word) bitmap_line::y#8 +Inlining cast (word) sgn_u16::return#2 ← (unumber)(number) -1 +Inlining cast (word) sgn_u16::return#3 ← (unumber)(number) 1 +Inlining cast (byte*) D011#0 ← (byte*)(number) $d011 +Inlining cast (byte) VIC_BMM#0 ← (unumber)(number) $20 +Inlining cast (byte) VIC_DEN#0 ← (unumber)(number) $10 +Inlining cast (byte) VIC_RSEL#0 ← (unumber)(number) 8 +Inlining cast (byte*) D018#0 ← (byte*)(number) $d018 +Inlining cast (byte*) CIA2_PORT_A#0 ← (byte*)(number) $dd00 +Inlining cast (byte*) CIA2_PORT_A_DDR#0 ← (byte*)(number) $dd02 +Inlining cast (byte) BLACK#0 ← (unumber)(number) 0 +Inlining cast (byte) WHITE#0 ← (unumber)(number) 1 +Inlining cast (byte*) PRINT_SCREEN#0 ← (byte*)(number) $400 +Inlining cast (byte*) BITMAP_SCREEN#0 ← (byte*)(number) $5c00 +Inlining cast (byte*) BITMAP_GRAPHICS#0 ← (byte*)(number) $6000 +Inlining cast *((signed word*) main::$114 + (unumber~) main::$22) ← (snumber)(number) $6c +Inlining cast *((signed word*) main::$115 + (unumber~) main::$22) ← (snumber)(number) $92 +Inlining cast *((signed word*) main::$116 + (unumber~) main::$22) ← (snumber)(number) 0 +Inlining cast *((signed word*) main::$117 + (unumber~) main::$22) ← (snumber)(number) 0 +Inlining cast *((signed word*) main::$118 + (unumber~) main::$23) ← (snumber)(number) $59 +Inlining cast *((signed word*) main::$119 + (unumber~) main::$23) ← (snumber)(number) $b6 +Inlining cast *((signed word*) main::$120 + (unumber~) main::$23) ← (snumber)(number) $67 +Inlining cast *((signed word*) main::$121 + (unumber~) main::$23) ← (snumber)(number) $a9 +Inlining cast *((signed word*) main::$122 + (unumber~) main::$24) ← (snumber)(number) $3b +Inlining cast *((signed word*) main::$123 + (unumber~) main::$24) ← (snumber)(number) $c3 +Inlining cast *((signed word*) main::$124 + (unumber~) main::$24) ← (snumber)(number) $4b +Inlining cast *((signed word*) main::$125 + (unumber~) main::$24) ← (snumber)(number) $c3 +Inlining cast *((signed word*) main::$126 + (unumber~) main::$25) ← (snumber)(number) $17 +Inlining cast *((signed word*) main::$127 + (unumber~) main::$25) ← (snumber)(number) $b2 +Inlining cast *((signed word*) main::$128 + (unumber~) main::$25) ← (snumber)(number) $26 +Inlining cast *((signed word*) main::$129 + (unumber~) main::$25) ← (snumber)(number) $c3 +Inlining cast *((signed word*) main::$130 + (unumber~) main::$26) ← (snumber)(number) 9 +Inlining cast *((signed word*) main::$131 + (unumber~) main::$26) ← (snumber)(number) $84 +Inlining cast *((signed word*) main::$132 + (unumber~) main::$26) ← (snumber)(number) 9 +Inlining cast *((signed word*) main::$133 + (unumber~) main::$26) ← (snumber)(number) $a1 +Inlining cast *((signed word*) main::$134 + (unumber~) main::$27) ← (snumber)(number) $19 +Inlining cast *((signed word*) main::$135 + (unumber~) main::$27) ← (snumber)(number) $57 +Inlining cast *((signed word*) main::$136 + (unumber~) main::$27) ← (snumber)(number) 9 +Inlining cast *((signed word*) main::$137 + (unumber~) main::$27) ← (snumber)(number) $68 +Inlining cast *((signed word*) main::$138 + (unumber~) main::$28) ← (snumber)(number) $41 +Inlining cast *((signed word*) main::$139 + (unumber~) main::$28) ← (snumber)(number) $45 +Inlining cast *((signed word*) main::$140 + (unumber~) main::$28) ← (snumber)(number) $2a +Inlining cast *((signed word*) main::$141 + (unumber~) main::$28) ← (snumber)(number) $45 +Inlining cast *((signed word*) main::$142 + (unumber~) main::$29) ← (snumber)(number) $5d +Inlining cast *((signed word*) main::$143 + (unumber~) main::$29) ← (snumber)(number) $4f +Inlining cast *((signed word*) main::$144 + (unumber~) main::$29) ← (snumber)(number) $52 +Inlining cast *((signed word*) main::$145 + (unumber~) main::$29) ← (snumber)(number) $45 +Inlining cast *((signed word*) main::$146 + (unumber~) main::$30) ← (snumber)(number) $69 +Inlining cast *((signed word*) main::$147 + (unumber~) main::$30) ← (snumber)(number) $62 +Inlining cast *((signed word*) main::$148 + (unumber~) main::$30) ← (snumber)(number) $69 +Inlining cast *((signed word*) main::$149 + (unumber~) main::$30) ← (snumber)(number) $58 +Inlining cast *((signed word*) main::$150 + (unumber~) main::$31) ← (snumber)(number) $66 +Inlining cast *((signed word*) main::$151 + (unumber~) main::$31) ← (snumber)(number) $6a +Inlining cast *((signed word*) main::$152 + (unumber~) main::$31) ← (snumber)(number) $69 +Inlining cast *((signed word*) main::$153 + (unumber~) main::$31) ← (snumber)(number) $67 +Inlining cast *((signed word*) main::$154 + (unumber~) main::$32) ← (snumber)(number) $5d +Inlining cast *((signed word*) main::$155 + (unumber~) main::$32) ← (snumber)(number) $6d +Inlining cast *((signed word*) main::$156 + (unumber~) main::$32) ← (snumber)(number) $62 +Inlining cast *((signed word*) main::$157 + (unumber~) main::$32) ← (snumber)(number) $6d +Inlining cast *((signed word*) main::$158 + (unumber~) main::$33) ← (snumber)(number) $51 +Inlining cast *((signed word*) main::$159 + (unumber~) main::$33) ← (snumber)(number) $68 +Inlining cast *((signed word*) main::$160 + (unumber~) main::$33) ← (snumber)(number) $55 +Inlining cast *((signed word*) main::$161 + (unumber~) main::$33) ← (snumber)(number) $6d +Inlining cast *((signed word*) main::$162 + (unumber~) main::$34) ← (snumber)(number) $4e +Inlining cast *((signed word*) main::$163 + (unumber~) main::$34) ← (snumber)(number) $5d +Inlining cast *((signed word*) main::$164 + (unumber~) main::$34) ← (snumber)(number) $4f +Inlining cast *((signed word*) main::$165 + (unumber~) main::$34) ← (snumber)(number) $65 +Inlining cast *((signed word*) main::$166 + (unumber~) main::$35) ← (snumber)(number) $49 +Inlining cast *((signed word*) main::$167 + (unumber~) main::$35) ← (snumber)(number) $52 +Inlining cast *((signed word*) main::$168 + (unumber~) main::$35) ← (snumber)(number) $4e +Inlining cast *((signed word*) main::$169 + (unumber~) main::$35) ← (snumber)(number) $56 +Inlining cast *((signed word*) main::$170 + (unumber~) main::$36) ← (snumber)(number) $3d +Inlining cast *((signed word*) main::$171 + (unumber~) main::$36) ← (snumber)(number) $4e +Inlining cast *((signed word*) main::$172 + (unumber~) main::$36) ← (snumber)(number) $45 +Inlining cast *((signed word*) main::$173 + (unumber~) main::$36) ← (snumber)(number) $4e +Inlining cast *((signed word*) main::$174 + (unumber~) main::$37) ← (snumber)(number) $28 +Inlining cast *((signed word*) main::$175 + (unumber~) main::$37) ← (snumber)(number) $58 +Inlining cast *((signed word*) main::$176 + (unumber~) main::$37) ← (snumber)(number) $30 +Inlining cast *((signed word*) main::$177 + (unumber~) main::$37) ← (snumber)(number) $4e +Inlining cast *((signed word*) main::$178 + (unumber~) main::$38) ← (snumber)(number) $1d +Inlining cast *((signed word*) main::$179 + (unumber~) main::$38) ← (snumber)(number) $79 +Inlining cast *((signed word*) main::$180 + (unumber~) main::$38) ← (snumber)(number) $1d +Inlining cast *((signed word*) main::$181 + (unumber~) main::$38) ← (snumber)(number) $64 +Inlining cast *((signed word*) main::$182 + (unumber~) main::$39) ← (snumber)(number) $28 +Inlining cast *((signed word*) main::$183 + (unumber~) main::$39) ← (snumber)(number) $9e +Inlining cast *((signed word*) main::$184 + (unumber~) main::$39) ← (snumber)(number) $1d +Inlining cast *((signed word*) main::$185 + (unumber~) main::$39) ← (snumber)(number) $8e +Inlining cast *((signed word*) main::$186 + (unumber~) main::$40) ← (snumber)(number) $44 +Inlining cast *((signed word*) main::$187 + (unumber~) main::$40) ← (snumber)(number) $ae +Inlining cast *((signed word*) main::$188 + (unumber~) main::$40) ← (snumber)(number) $32 +Inlining cast *((signed word*) main::$189 + (unumber~) main::$40) ← (snumber)(number) $ae +Inlining cast *((signed word*) main::$190 + (unumber~) main::$41) ← (snumber)(number) $5b +Inlining cast *((signed word*) main::$191 + (unumber~) main::$41) ← (snumber)(number) $a6 +Inlining cast *((signed word*) main::$192 + (unumber~) main::$41) ← (snumber)(number) $50 +Inlining cast *((signed word*) main::$193 + (unumber~) main::$41) ← (snumber)(number) $ae +Inlining cast *((signed word*) main::$194 + (unumber~) main::$42) ← (snumber)(number) $68 +Inlining cast *((signed word*) main::$195 + (unumber~) main::$42) ← (snumber)(number) $90 +Inlining cast *((signed word*) main::$196 + (unumber~) main::$42) ← (snumber)(number) $62 +Inlining cast *((signed word*) main::$197 + (unumber~) main::$42) ← (snumber)(number) $a0 +Inlining cast *((signed word*) main::$198 + (unumber~) main::$43) ← (snumber)(number) $6c +Inlining cast *((signed word*) main::$199 + (unumber~) main::$43) ← (snumber)(number) $92 +Inlining cast *((signed word*) main::$200 + (unumber~) main::$43) ← (snumber)(number) 0 +Inlining cast *((signed word*) main::$201 + (unumber~) main::$43) ← (snumber)(number) 0 +Inlining cast *((byte*) CIA2_PORT_A_DDR#0) ← (unumber)(number) 3 +Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Inlining cast (word~) main::toD0181_$0#0 ← (word)(byte*) main::toD0181_screen#1 +Inlining cast (word~) main::toD0181_$4#0 ← (word)(byte*) main::toD0181_gfx#1 +Inlining cast (signed word) main::current_x#0 ← (snumber)(number) 0 +Inlining cast (signed word) main::current_y#0 ← (snumber)(number) 0 +Inlining cast (word~) main::$11 ← (word)(signed word) main::current_x#5 +Inlining cast (word~) main::$12 ← (word)(signed word) main::current_y#5 +Inlining cast (word~) main::$13 ← (word)(signed word) main::to_x#0 +Inlining cast (word~) main::$14 ← (word)(signed word) main::to_y#0 +Inlining cast (word~) bitmap_plot_spline_8seg::$0 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 +Inlining cast (word~) bitmap_plot_spline_8seg::$1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 +Inlining cast (word~) bitmap_plot_spline_8seg::$2 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 +Inlining cast (word~) bitmap_plot_spline_8seg::$3 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast $40 +Simplifying constant integer cast $40 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast $10 +Simplifying constant integer cast 0 +Simplifying constant integer cast *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) +Simplifying constant integer cast *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) +Simplifying constant integer cast $fff8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast -1 +Simplifying constant integer cast 1 +Simplifying constant pointer cast (byte*) 53265 +Simplifying constant integer cast $20 +Simplifying constant integer cast $10 +Simplifying constant integer cast 8 +Simplifying constant pointer cast (byte*) 53272 +Simplifying constant pointer cast (byte*) 56576 +Simplifying constant pointer cast (byte*) 56578 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 23552 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant integer cast 0 +Simplifying constant integer cast $6c +Simplifying constant integer cast $92 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $59 +Simplifying constant integer cast $b6 +Simplifying constant integer cast $67 +Simplifying constant integer cast $a9 +Simplifying constant integer cast 2 +Simplifying constant integer cast $3b +Simplifying constant integer cast $c3 +Simplifying constant integer cast $4b +Simplifying constant integer cast $c3 +Simplifying constant integer cast 3 +Simplifying constant integer cast $17 +Simplifying constant integer cast $b2 +Simplifying constant integer cast $26 +Simplifying constant integer cast $c3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 9 +Simplifying constant integer cast $84 +Simplifying constant integer cast 9 +Simplifying constant integer cast $a1 +Simplifying constant integer cast 5 +Simplifying constant integer cast $19 +Simplifying constant integer cast $57 +Simplifying constant integer cast 9 +Simplifying constant integer cast $68 +Simplifying constant integer cast 6 +Simplifying constant integer cast $41 +Simplifying constant integer cast $45 +Simplifying constant integer cast $2a +Simplifying constant integer cast $45 +Simplifying constant integer cast 7 +Simplifying constant integer cast $5d +Simplifying constant integer cast $4f +Simplifying constant integer cast $52 +Simplifying constant integer cast $45 +Simplifying constant integer cast 8 +Simplifying constant integer cast $69 +Simplifying constant integer cast $62 +Simplifying constant integer cast $69 +Simplifying constant integer cast $58 +Simplifying constant integer cast 9 +Simplifying constant integer cast $66 +Simplifying constant integer cast $6a +Simplifying constant integer cast $69 +Simplifying constant integer cast $67 +Simplifying constant integer cast $a +Simplifying constant integer cast $5d +Simplifying constant integer cast $6d +Simplifying constant integer cast $62 +Simplifying constant integer cast $6d +Simplifying constant integer cast $b +Simplifying constant integer cast $51 +Simplifying constant integer cast $68 +Simplifying constant integer cast $55 +Simplifying constant integer cast $6d +Simplifying constant integer cast $c +Simplifying constant integer cast $4e +Simplifying constant integer cast $5d +Simplifying constant integer cast $4f +Simplifying constant integer cast $65 +Simplifying constant integer cast $d +Simplifying constant integer cast $49 +Simplifying constant integer cast $52 +Simplifying constant integer cast $4e +Simplifying constant integer cast $56 +Simplifying constant integer cast $e +Simplifying constant integer cast $3d +Simplifying constant integer cast $4e +Simplifying constant integer cast $45 +Simplifying constant integer cast $4e +Simplifying constant integer cast $f +Simplifying constant integer cast $28 +Simplifying constant integer cast $58 +Simplifying constant integer cast $30 +Simplifying constant integer cast $4e +Simplifying constant integer cast $10 +Simplifying constant integer cast $1d +Simplifying constant integer cast $79 +Simplifying constant integer cast $1d +Simplifying constant integer cast $64 +Simplifying constant integer cast $11 +Simplifying constant integer cast $28 +Simplifying constant integer cast $9e +Simplifying constant integer cast $1d +Simplifying constant integer cast $8e +Simplifying constant integer cast $12 +Simplifying constant integer cast $44 +Simplifying constant integer cast $ae +Simplifying constant integer cast $32 +Simplifying constant integer cast $ae +Simplifying constant integer cast $13 +Simplifying constant integer cast $5b +Simplifying constant integer cast $a6 +Simplifying constant integer cast $50 +Simplifying constant integer cast $ae +Simplifying constant integer cast $14 +Simplifying constant integer cast $68 +Simplifying constant integer cast $90 +Simplifying constant integer cast $62 +Simplifying constant integer cast $a0 +Simplifying constant integer cast $15 +Simplifying constant integer cast $6c +Simplifying constant integer cast $92 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 3 +Simplifying constant integer cast $40 +Simplifying constant integer cast 3 +Simplifying constant integer cast $3fff +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast 3 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $3e7 +Simplifying constant integer cast 0 +Successful SSA optimization PassNCastSimplification +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 8 +Finalized signed number type (signed byte) 8 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) $40 +Finalized signed number type (signed byte) $40 +Finalized signed number type (signed byte) $20 +Finalized signed number type (signed byte) $40 +Finalized signed number type (signed byte) $20 +Finalized signed number type (signed byte) $40 +Finalized signed number type (signed byte) $20 +Finalized signed number type (signed byte) $40 +Finalized signed number type (signed byte) $20 +Finalized signed number type (signed byte) $40 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (word) $fff8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) -1 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) $20 +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized signed number type (signed byte) $6c +Finalized signed number type (signed word) $92 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Finalized unsigned number type (byte) 1 +Finalized signed number type (signed byte) $59 +Finalized signed number type (signed word) $b6 +Finalized signed number type (signed byte) $67 +Finalized signed number type (signed word) $a9 +Finalized unsigned number type (byte) 2 +Finalized signed number type (signed byte) $3b +Finalized signed number type (signed word) $c3 +Finalized signed number type (signed byte) $4b +Finalized signed number type (signed word) $c3 +Finalized unsigned number type (byte) 3 +Finalized signed number type (signed byte) $17 +Finalized signed number type (signed word) $b2 +Finalized signed number type (signed byte) $26 +Finalized signed number type (signed word) $c3 +Finalized unsigned number type (byte) 4 +Finalized signed number type (signed byte) 9 +Finalized signed number type (signed word) $84 +Finalized signed number type (signed byte) 9 +Finalized signed number type (signed word) $a1 +Finalized unsigned number type (byte) 5 +Finalized signed number type (signed byte) $19 +Finalized signed number type (signed byte) $57 +Finalized signed number type (signed byte) 9 +Finalized signed number type (signed byte) $68 +Finalized unsigned number type (byte) 6 +Finalized signed number type (signed byte) $41 +Finalized signed number type (signed byte) $45 +Finalized signed number type (signed byte) $2a +Finalized signed number type (signed byte) $45 +Finalized unsigned number type (byte) 7 +Finalized signed number type (signed byte) $5d +Finalized signed number type (signed byte) $4f +Finalized signed number type (signed byte) $52 +Finalized signed number type (signed byte) $45 +Finalized unsigned number type (byte) 8 +Finalized signed number type (signed byte) $69 +Finalized signed number type (signed byte) $62 +Finalized signed number type (signed byte) $69 +Finalized signed number type (signed byte) $58 +Finalized unsigned number type (byte) 9 +Finalized signed number type (signed byte) $66 +Finalized signed number type (signed byte) $6a +Finalized signed number type (signed byte) $69 +Finalized signed number type (signed byte) $67 +Finalized unsigned number type (byte) $a +Finalized signed number type (signed byte) $5d +Finalized signed number type (signed byte) $6d +Finalized signed number type (signed byte) $62 +Finalized signed number type (signed byte) $6d +Finalized unsigned number type (byte) $b +Finalized signed number type (signed byte) $51 +Finalized signed number type (signed byte) $68 +Finalized signed number type (signed byte) $55 +Finalized signed number type (signed byte) $6d +Finalized unsigned number type (byte) $c +Finalized signed number type (signed byte) $4e +Finalized signed number type (signed byte) $5d +Finalized signed number type (signed byte) $4f +Finalized signed number type (signed byte) $65 +Finalized unsigned number type (byte) $d +Finalized signed number type (signed byte) $49 +Finalized signed number type (signed byte) $52 +Finalized signed number type (signed byte) $4e +Finalized signed number type (signed byte) $56 +Finalized unsigned number type (byte) $e +Finalized signed number type (signed byte) $3d +Finalized signed number type (signed byte) $4e +Finalized signed number type (signed byte) $45 +Finalized signed number type (signed byte) $4e +Finalized unsigned number type (byte) $f +Finalized signed number type (signed byte) $28 +Finalized signed number type (signed byte) $58 +Finalized signed number type (signed byte) $30 +Finalized signed number type (signed byte) $4e +Finalized unsigned number type (byte) $10 +Finalized signed number type (signed byte) $1d +Finalized signed number type (signed byte) $79 +Finalized signed number type (signed byte) $1d +Finalized signed number type (signed byte) $64 +Finalized unsigned number type (byte) $11 +Finalized signed number type (signed byte) $28 +Finalized signed number type (signed word) $9e +Finalized signed number type (signed byte) $1d +Finalized signed number type (signed word) $8e +Finalized unsigned number type (byte) $12 +Finalized signed number type (signed byte) $44 +Finalized signed number type (signed word) $ae +Finalized signed number type (signed byte) $32 +Finalized signed number type (signed word) $ae +Finalized unsigned number type (byte) $13 +Finalized signed number type (signed byte) $5b +Finalized signed number type (signed word) $a6 +Finalized signed number type (signed byte) $50 +Finalized signed number type (signed word) $ae +Finalized unsigned number type (byte) $14 +Finalized signed number type (signed byte) $68 +Finalized signed number type (signed word) $90 +Finalized signed number type (signed byte) $62 +Finalized signed number type (signed word) $a0 +Finalized unsigned number type (byte) $15 +Finalized signed number type (signed byte) $6c +Finalized signed number type (signed word) $92 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (byte) $40 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (word) $3fff +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) $f +Finalized unsigned number type (byte) 3 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Finalized unsigned number type (word) $3e7 +Finalized unsigned number type (byte) 0 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inferred type updated to signed word in (snumber~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#1 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#1 - (signed word~) spline_8segB::$0 +Inferred type updated to signed word in (snumber~) spline_8segB::$2 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#1 +Inferred type updated to signed word in (snumber~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#1 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#1 - (signed word~) spline_8segB::$3 +Inferred type updated to signed word in (snumber~) spline_8segB::$5 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#1 +Inferred type updated to signed word in (snumber~) spline_8segB::$7 ← (signed word~) spline_8segB::$6 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$9 ← (signed word~) spline_8segB::$8 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 * (signed byte) 8 +Inferred type updated to signed word in (snumber~) spline_8segB::$11 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 +Inferred type updated to signed word in (snumber~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 * (signed byte) 8 +Inferred type updated to signed word in (snumber~) spline_8segB::$13 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 +Inferred type updated to signed word in (snumber~) spline_8segB::$14 ← (signed word) spline_8segB::a_x#0 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$15 ← (signed word) spline_8segB::a_y#0 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) spline_8segB::$16 ← (signed word) spline_8segB::p0_x#1 * (signed byte) $40 +Inferred type updated to signed word in (snumber~) spline_8segB::$17 ← (signed word) spline_8segB::p0_y#1 * (signed byte) $40 +Inferred type updated to signed word in (snumber~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 +Inferred type updated to signed word in (snumber~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 / (signed byte) $40 +Inferred type updated to signed word in (snumber~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 +Inferred type updated to signed word in (snumber~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 / (signed byte) $40 +Inferred type updated to signed word in (snumber~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#3 + (signed byte) $20 +Inferred type updated to signed word in (snumber~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 / (signed byte) $40 +Inferred type updated to signed word in (snumber~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#3 + (signed byte) $20 +Inferred type updated to signed word in (snumber~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 / (signed byte) $40 +Inferred type updated to byte in (unumber~) spline_8segB::$32 ← (byte) 8 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Inferred type updated to byte in (unumber~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte) 7 +Inferred type updated to byte in (unumber~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 +Inferred type updated to byte in (unumber~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 +Inferred type updated to byte in (unumber~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (byte) $10 +Inferred type updated to byte in (unumber~) bitmap_clear::$1 ← (byte~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 +Inferred type updated to word in (unumber~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 +Inferred type updated to word in (unumber~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (byte) 2 +Inferred type updated to word in (unumber~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (byte) 2 +Inferred type updated to byte in (unumber~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 +Inferred type updated to byte in (unumber~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 +Inferred type updated to byte in (unumber~) main::$22 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$23 ← (byte) 1 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$24 ← (byte) 2 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$25 ← (byte) 3 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$26 ← (byte) 4 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$27 ← (byte) 5 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$28 ← (byte) 6 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$29 ← (byte) 7 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$30 ← (byte) 8 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$31 ← (byte) 9 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$32 ← (byte) $a * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$33 ← (byte) $b * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$34 ← (byte) $c * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$35 ← (byte) $d * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$36 ← (byte) $e * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$37 ← (byte) $f * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$38 ← (byte) $10 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$39 ← (byte) $11 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$40 ← (byte) $12 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$41 ← (byte) $13 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$42 ← (byte) $14 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::$43 ← (byte) $15 * (const byte) SIZEOF_STRUCT_SEGMENT +Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte) 3 ^ (byte~) main::vicSelectGfxBank1_toDd001_$2#0 +Inferred type updated to word in (unumber~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (word) $3fff +Inferred type updated to word in (unumber~) main::toD0181_$2#0 ← (word~) main::toD0181_$1#0 * (byte) 4 +Inferred type updated to byte in (unumber~) main::toD0181_$3#0 ← > (word~) main::toD0181_$2#0 +Inferred type updated to byte in (unumber~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (byte) 4 +Inferred type updated to byte in (unumber~) main::toD0181_$7#0 ← (byte~) main::toD0181_$6#0 & (byte) $f +Inferred type updated to byte in (unumber~) main::toD0181_$8#0 ← (byte~) main::toD0181_$3#0 | (byte~) main::toD0181_$7#0 +Inferred type updated to byte in (unumber~) main::$6 ← (byte~) main::$5 | (byte) 3 +Inferred type updated to byte in (unumber~) bitmap_plot_spline_8seg::$6 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Adding pointer type conversion cast (byte*) bitmap_plot::$0 in (byte*~) bitmap_plot::$0 ← (word~) bitmap_plot::$3 +Successful SSA optimization PassNAddTypeConversionAssignment +Inversing boolean not [65] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [64] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 +Inversing boolean not [96] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [95] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 +Inversing boolean not [116] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [115] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 +Inversing boolean not [214] (bool~) bitmap_line::$21 ← (word) bitmap_line::dy#3 >= (word) bitmap_line::e#1 from [213] (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1 +Inversing boolean not [236] (bool~) bitmap_line::$27 ← (word) bitmap_line::dx#5 >= (word) bitmap_line::e1#1 from [235] (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1 +Successful SSA optimization Pass2UnaryNotSimplification +Alias (signed word) spline_8segB::a_x#0 = (signed word~) spline_8segB::$2 +Alias (signed word) spline_8segB::a_y#0 = (signed word~) spline_8segB::$5 +Alias (signed word) spline_8segB::b_x#0 = (signed word~) spline_8segB::$7 +Alias (signed word) spline_8segB::b_y#0 = (signed word~) spline_8segB::$9 +Alias (signed word) spline_8segB::i_x#0 = (signed word~) spline_8segB::$11 +Alias (signed word) spline_8segB::i_y#0 = (signed word~) spline_8segB::$13 +Alias (signed word) spline_8segB::j_x#0 = (signed word~) spline_8segB::$14 +Alias (signed word) spline_8segB::j_y#0 = (signed word~) spline_8segB::$15 +Alias (signed word) spline_8segB::p_x#0 = (signed word~) spline_8segB::$16 +Alias (signed word) spline_8segB::p_y#0 = (signed word~) spline_8segB::$17 +Alias (signed word) spline_8segB::p_x#1 = (signed word~) spline_8segB::$26 (signed word) spline_8segB::p_x#3 +Alias (signed word) spline_8segB::p_y#1 = (signed word~) spline_8segB::$27 (signed word) spline_8segB::p_y#3 +Alias (signed word) spline_8segB::i_x#1 = (signed word~) spline_8segB::$28 +Alias (signed word) spline_8segB::i_y#1 = (signed word~) spline_8segB::$29 +Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 +Alias (void*) memset::str#3 = (void*) memset::str#4 +Alias (word) memset::num#2 = (word) memset::num#3 +Alias (byte) memset::c#3 = (byte) memset::c#4 +Alias (byte*) memset::end#0 = (byte*~) memset::$3 +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 +Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 +Alias (byte*) bitmap_gfx#30 = (byte*) bitmap_gfx#31 +Alias (byte*) bitmap_screen#29 = (byte*) bitmap_screen#30 +Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 +Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#26 +Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#25 +Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 +Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 +Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 +Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 +Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 +Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 +Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 +Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 +Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 +Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#2 (word) bitmap_line::x1#5 (word) bitmap_line::x#16 (word) bitmap_line::x1#4 (word) bitmap_line::x#10 (word) bitmap_line::x1#3 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 +Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#2 (word) bitmap_line::y1#3 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#6 (word) bitmap_line::y1#5 (word) bitmap_line::y#19 (word) bitmap_line::y1#4 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 +Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 +Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 +Alias (word) bitmap_line::y2#11 = (word) bitmap_line::y2#2 (word) bitmap_line::y2#5 (word) bitmap_line::y2#9 (word) bitmap_line::y2#6 (word) bitmap_line::y2#3 (word) bitmap_line::y2#12 +Alias (word) bitmap_line::x2#10 = (word) bitmap_line::x2#8 (word) bitmap_line::x2#2 (word) bitmap_line::x2#5 (word) bitmap_line::x2#3 (word) bitmap_line::x2#12 (word) bitmap_line::x2#11 +Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 +Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 +Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 +Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 +Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 +Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 +Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 +Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 +Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 +Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 +Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 +Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 +Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 +Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 +Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 +Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 +Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 +Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 +Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 +Alias (word) bitmap_line::y2#10 = (word) bitmap_line::y2#7 (word) bitmap_line::y2#8 +Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 +Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 +Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 +Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 +Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 +Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 +Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 +Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 +Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 +Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 +Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 +Alias (word) bitmap_line::x2#6 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#9 +Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 +Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 +Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 +Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 +Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 +Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 +Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 +Alias (word) sgn_u16::return#4 = (word) sgn_u16::return#7 +Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#22 (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#15 +Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#21 (byte*) bitmap_screen#19 (byte*) bitmap_screen#14 +Alias (byte*) bitmap_gfx#3 = (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#42 (byte*) bitmap_gfx#41 (byte*) bitmap_gfx#40 (byte*) bitmap_gfx#39 (byte*) bitmap_gfx#38 (byte*) bitmap_gfx#37 (byte*) bitmap_gfx#36 (byte*) bitmap_gfx#35 (byte*) bitmap_gfx#32 +Alias (byte*) bitmap_screen#3 = (byte*) bitmap_screen#8 (byte*) bitmap_screen#41 (byte*) bitmap_screen#40 (byte*) bitmap_screen#39 (byte*) bitmap_screen#38 (byte*) bitmap_screen#37 (byte*) bitmap_screen#36 (byte*) bitmap_screen#35 (byte*) bitmap_screen#34 (byte*) bitmap_screen#31 +Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0#0 +Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 +Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 +Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$3 +Alias (signed word) main::segment_to_x#0 = (signed word) main::segment_to_x#1 (signed word) main::current_x#1 (signed word) main::segment_to_x#4 (signed word) main::segment_to_x#2 (signed word) main::to1_x#0 (signed word) main::to1_x#2 (signed word) main::to1_x#1 (signed word) main::current_x#2 (signed word) main::segment_to_x#3 (signed word) main::to_x#0 (signed word) main::to_x#1 (signed word) main::current_x#3 +Alias (signed word) main::segment_to_y#0 = (signed word) main::segment_to_y#1 (signed word) main::current_y#1 (signed word) main::segment_to_y#4 (signed word) main::segment_to_y#2 (signed word) main::to1_y#0 (signed word) main::to1_y#2 (signed word) main::to1_y#1 (signed word) main::current_y#2 (signed word) main::segment_to_y#3 (signed word) main::to_y#0 (signed word) main::to_y#1 (signed word) main::current_y#3 +Alias (byte) main::i#10 = (byte) main::i#4 (byte) main::i#2 (byte) main::i#9 (byte) main::i#7 (byte) main::i#5 (byte) main::i#8 (byte) main::i#6 +Alias (byte*) bitmap_gfx#23 = (byte*) bitmap_gfx#27 (byte*) bitmap_gfx#34 (byte*) bitmap_gfx#33 (byte*) bitmap_gfx#28 (byte*) bitmap_gfx#24 (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#25 +Alias (byte*) bitmap_screen#22 = (byte*) bitmap_screen#26 (byte*) bitmap_screen#33 (byte*) bitmap_screen#32 (byte*) bitmap_screen#27 (byte*) bitmap_screen#23 (byte*) bitmap_screen#28 (byte*) bitmap_screen#24 +Alias (byte) main::segment_type#0 = (byte) main::segment_type#1 +Alias (signed word) main::segment_via_x#0 = (signed word) main::segment_via_x#2 (signed word) main::segment_via_x#1 (signed word) main::via_x#0 +Alias (signed word) main::segment_via_y#0 = (signed word) main::segment_via_y#2 (signed word) main::segment_via_y#1 (signed word) main::via_y#0 +Alias (signed word) main::current_x#4 = (signed word) main::current_x#6 (signed word) main::current_x#7 (signed word) main::current_x#5 +Alias (signed word) main::current_y#4 = (signed word) main::current_y#6 (signed word) main::current_y#7 (signed word) main::current_y#5 +Alias (word) bitmap_line::x1#0 = (word~) main::$11 +Alias (word) bitmap_line::y1#0 = (word~) main::$12 +Alias (word) bitmap_line::x2#0 = (word~) main::$13 +Alias (word) bitmap_line::y2#0 = (word~) main::$14 +Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#18 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 +Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#17 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 +Alias (word) bitmap_line::x1#1 = (word~) bitmap_plot_spline_8seg::$0 +Alias (word) bitmap_line::y1#1 = (word~) bitmap_plot_spline_8seg::$1 +Alias (word) bitmap_line::x2#1 = (word~) bitmap_plot_spline_8seg::$2 +Alias (word) bitmap_line::y2#1 = (word~) bitmap_plot_spline_8seg::$3 +Alias (signed word) bitmap_plot_spline_8seg::to_x#0 = (signed word) bitmap_plot_spline_8seg::to_x#1 (signed word) bitmap_plot_spline_8seg::current_x#1 +Alias (signed word) bitmap_plot_spline_8seg::to_y#0 = (signed word) bitmap_plot_spline_8seg::to_y#1 (signed word) bitmap_plot_spline_8seg::current_y#1 +Alias (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#3 +Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 +Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 +Successful SSA optimization Pass2AliasElimination +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 +Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 +Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#30 +Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#29 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 +Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 +Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 +Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 +Alias (word) bitmap_line::y2#10 = (word) bitmap_line::y2#4 +Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 +Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 +Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 +Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 +Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 +Alias (word) bitmap_line::x2#4 = (word) bitmap_line::x2#6 +Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 +Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 +Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 +Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 +Alias (byte) main::i#10 = (byte) main::i#3 +Alias (byte*) bitmap_gfx#19 = (byte*) bitmap_gfx#23 +Alias (byte*) bitmap_screen#18 = (byte*) bitmap_screen#22 +Alias (signed word) main::current_x#8 = (signed word) main::segment_to_x#0 +Alias (signed word) main::current_y#8 = (signed word) main::segment_to_y#0 +Successful SSA optimization Pass2AliasElimination +Self Phi Eliminated (signed word) spline_8segB::j_x#1 +Self Phi Eliminated (signed word) spline_8segB::j_y#1 +Self Phi Eliminated (byte) memset::c#2 +Self Phi Eliminated (byte*) memset::end#1 +Self Phi Eliminated (void*) memset::str#5 +Self Phi Eliminated (byte*) bitmap_init::gfx#2 +Self Phi Eliminated (byte*) bitmap_gfx#21 +Self Phi Eliminated (byte*) bitmap_screen#20 +Self Phi Eliminated (byte*) bitmap_gfx#11 +Self Phi Eliminated (byte*) bitmap_screen#11 +Self Phi Eliminated (word) bitmap_line::sy#1 +Self Phi Eliminated (word) bitmap_line::dx#11 +Self Phi Eliminated (word) bitmap_line::dy#11 +Self Phi Eliminated (word) bitmap_line::y2#10 +Self Phi Eliminated (word) bitmap_line::sx#1 +Self Phi Eliminated (word) bitmap_line::sx#11 +Self Phi Eliminated (word) bitmap_line::dy#12 +Self Phi Eliminated (word) bitmap_line::dx#12 +Self Phi Eliminated (word) bitmap_line::x2#4 +Self Phi Eliminated (word) bitmap_line::sy#2 +Self Phi Eliminated (byte*) bitmap_gfx#19 +Self Phi Eliminated (byte*) bitmap_screen#18 +Self Phi Eliminated (byte*) bitmap_gfx#14 +Self Phi Eliminated (byte*) bitmap_screen#13 +Successful SSA optimization Pass2SelfPhiElimination +Identical Phi Values (signed word) spline_8segB::p1_x#1 (signed word) spline_8segB::p1_x#0 +Identical Phi Values (signed word) spline_8segB::p2_x#1 (signed word) spline_8segB::p2_x#0 +Identical Phi Values (signed word) spline_8segB::p0_x#1 (signed word) spline_8segB::p0_x#0 +Identical Phi Values (signed word) spline_8segB::p1_y#1 (signed word) spline_8segB::p1_y#0 +Identical Phi Values (signed word) spline_8segB::p2_y#1 (signed word) spline_8segB::p2_y#0 +Identical Phi Values (signed word) spline_8segB::p0_y#1 (signed word) spline_8segB::p0_y#0 +Identical Phi Values (signed word) spline_8segB::j_x#1 (signed word) spline_8segB::j_x#0 +Identical Phi Values (signed word) spline_8segB::j_y#1 (signed word) spline_8segB::j_y#0 +Identical Phi Values (byte) memset::c#2 (byte) memset::c#3 +Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 +Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 +Identical Phi Values (byte*) bitmap_init::gfx#1 (byte*) bitmap_init::gfx#0 +Identical Phi Values (byte*) bitmap_init::screen#1 (byte*) bitmap_init::screen#0 +Identical Phi Values (byte*) bitmap_init::gfx#2 (byte*) bitmap_init::gfx#1 +Identical Phi Values (byte*) bitmap_gfx#21 (byte*) bitmap_gfx#1 +Identical Phi Values (byte*) bitmap_screen#20 (byte*) bitmap_screen#1 +Identical Phi Values (byte*) bitmap_gfx#11 (byte*) bitmap_gfx#21 +Identical Phi Values (byte*) bitmap_screen#11 (byte*) bitmap_screen#20 +Identical Phi Values (byte) bitmap_clear::fgcol#1 (byte) bitmap_clear::fgcol#0 +Identical Phi Values (byte) bitmap_clear::bgcol#1 (byte) bitmap_clear::bgcol#0 +Identical Phi Values (byte*) bitmap_screen#7 (byte*) bitmap_screen#3 +Identical Phi Values (byte*) bitmap_gfx#12 (byte*) bitmap_gfx#3 +Identical Phi Values (word) bitmap_line::sy#1 (word) bitmap_line::sy#0 +Identical Phi Values (word) bitmap_line::dx#11 (word) bitmap_line::dx#0 +Identical Phi Values (word) bitmap_line::dy#11 (word) bitmap_line::dy#0 +Identical Phi Values (word) bitmap_line::y2#10 (word) bitmap_line::y2#11 +Identical Phi Values (word) bitmap_line::sx#1 (word) bitmap_line::sx#0 +Identical Phi Values (word) bitmap_line::sx#11 (word) bitmap_line::sx#0 +Identical Phi Values (word) bitmap_line::dy#12 (word) bitmap_line::dy#0 +Identical Phi Values (word) bitmap_line::dx#12 (word) bitmap_line::dx#0 +Identical Phi Values (word) bitmap_line::x2#4 (word) bitmap_line::x2#10 +Identical Phi Values (word) bitmap_line::sy#2 (word) bitmap_line::sy#0 +Identical Phi Values (byte*) bitmap_gfx#13 (byte*) bitmap_gfx#0 +Identical Phi Values (byte*) bitmap_screen#12 (byte*) bitmap_screen#0 +Identical Phi Values (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#11 +Identical Phi Values (byte*) bitmap_screen#3 (byte*) bitmap_screen#11 +Identical Phi Values (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#3 +Identical Phi Values (byte*) bitmap_screen#18 (byte*) bitmap_screen#3 +Identical Phi Values (byte*) bitmap_gfx#14 (byte*) bitmap_gfx#19 +Identical Phi Values (byte*) bitmap_screen#13 (byte*) bitmap_screen#18 +Identical Phi Values (byte*) bitmap_gfx#10 (byte*) bitmap_gfx#14 +Identical Phi Values (byte*) bitmap_screen#10 (byte*) bitmap_screen#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (void*) memset::return#0 (void*) memset::str#3 +Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [114] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 +Successful SSA optimization Pass2DuplicateRValueIdentification +Simple Condition (bool~) spline_8segB::$30 [51] if((byte) spline_8segB::n#1!=rangelast(0,7)) goto spline_8segB::@1 +Simple Condition (bool~) memset::$1 [66] if((word) memset::num#2<=(byte) 0) goto memset::@1 +Simple Condition (bool~) memset::$4 [78] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@4 +Simple Condition (bool~) bitmap_init::$1 [97] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 [101] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 [117] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$11 [121] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) bitmap_line::$12 [192] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 +Simple Condition (bool~) bitmap_line::$21 [215] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@8 +Simple Condition (bool~) bitmap_line::$22 [218] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@7 +Simple Condition (bool~) bitmap_line::$27 [237] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@13 +Simple Condition (bool~) bitmap_line::$28 [240] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@12 +Simple Condition (bool~) abs_u16::$3 [248] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 +Simple Condition (bool~) sgn_u16::$2 [261] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 +Simple Condition (bool~) main::$9 [637] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@2 +Simple Condition (bool~) main::$10 [643] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@3 +Simple Condition (bool~) main::$18 [679] if((byte) main::i#1!=rangelast(0,main::$8)) goto main::@1 +Simple Condition (bool~) bitmap_plot_spline_8seg::$5 [715] if((byte) bitmap_plot_spline_8seg::n#1!=rangelast(1,8)) goto bitmap_plot_spline_8seg::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Rewriting ! if()-condition to reversed if() [174] (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Rewriting && if()-condition to two if()s [173] (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Constant right-side identified [0] (struct SplineVector16[9]) SPLINE_8SEG#0 ← { fill( 9, 0) } +Constant right-side identified [57] (byte~) spline_8segB::$32 ← (byte) 8 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Constant right-side identified [84] (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } +Constant right-side identified [85] (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) } +Constant right-side identified [86] (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) } +Constant right-side identified [281] (struct Segment[$15]) letter_c#0 ← { fill( $15, 0) } +Constant right-side identified [283] (byte~) main::$22 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [296] (byte~) main::$23 ← (byte) 1 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [309] (byte~) main::$24 ← (byte) 2 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [322] (byte~) main::$25 ← (byte) 3 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [335] (byte~) main::$26 ← (byte) 4 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [348] (byte~) main::$27 ← (byte) 5 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [361] (byte~) main::$28 ← (byte) 6 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [374] (byte~) main::$29 ← (byte) 7 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [387] (byte~) main::$30 ← (byte) 8 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [400] (byte~) main::$31 ← (byte) 9 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [413] (byte~) main::$32 ← (byte) $a * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [426] (byte~) main::$33 ← (byte) $b * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [439] (byte~) main::$34 ← (byte) $c * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [452] (byte~) main::$35 ← (byte) $d * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [465] (byte~) main::$36 ← (byte) $e * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [478] (byte~) main::$37 ← (byte) $f * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [491] (byte~) main::$38 ← (byte) $10 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [504] (byte~) main::$39 ← (byte) $11 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [517] (byte~) main::$40 ← (byte) $12 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [530] (byte~) main::$41 ← (byte) $13 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [543] (byte~) main::$42 ← (byte) $14 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [556] (byte~) main::$43 ← (byte) $15 * (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [689] (byte~) bitmap_plot_spline_8seg::$6 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const struct SplineVector16[9]) SPLINE_8SEG#0 = { fill( 9, 0) } +Constant (const byte) spline_8segB::n#0 = 0 +Constant (const byte) spline_8segB::$32 = 8*SIZEOF_STRUCT_SPLINEVECTOR16 +Constant (const byte*) bitmap_screen#0 = (byte*) 0 +Constant (const byte*) bitmap_gfx#0 = (byte*) 0 +Constant (const byte[$100]) bitmap_plot_ylo#0 = { fill( $100, 0) } +Constant (const byte[$100]) bitmap_plot_yhi#0 = { fill( $100, 0) } +Constant (const byte[$100]) bitmap_plot_bit#0 = { fill( $100, 0) } +Constant (const byte) bitmap_init::bits#0 = $80 +Constant (const byte) bitmap_init::x#0 = 0 +Constant (const byte) bitmap_init::bits#2 = $80 +Constant (const byte) bitmap_init::y#0 = 0 +Constant (const word) memset::num#0 = $3e8 +Constant (const byte) memset::c#1 = 0 +Constant (const word) memset::num#1 = $1f40 +Constant (const word) sgn_u16::return#2 = -1 +Constant (const word) sgn_u16::return#3 = 1 +Constant (const byte*) D011#0 = (byte*) 53265 +Constant (const byte) VIC_BMM#0 = $20 +Constant (const byte) VIC_DEN#0 = $10 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) D018#0 = (byte*) 53272 +Constant (const byte*) CIA2_PORT_A#0 = (byte*) 56576 +Constant (const byte*) CIA2_PORT_A_DDR#0 = (byte*) 56578 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte*) PRINT_SCREEN#0 = (byte*) 1024 +Constant (const byte*) BITMAP_SCREEN#0 = (byte*) 23552 +Constant (const byte*) BITMAP_GRAPHICS#0 = (byte*) 24576 +Constant (const struct Segment[$15]) letter_c#0 = { fill( $15, 0) } +Constant (const byte) main::$22 = 0*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$23 = 1*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$24 = 2*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$25 = 3*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$26 = 4*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$27 = 5*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$28 = 6*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$29 = 7*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$30 = 8*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$31 = 9*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$32 = $a*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$33 = $b*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$34 = $c*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$35 = $d*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$36 = $e*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$37 = $f*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$38 = $10*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$39 = $11*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$40 = $12*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$41 = $13*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$42 = $14*SIZEOF_STRUCT_SEGMENT +Constant (const byte) main::$43 = $15*SIZEOF_STRUCT_SEGMENT +Constant (const signed word) main::current_x#0 = 0 +Constant (const signed word) main::current_y#0 = 0 +Constant (const byte) main::i#0 = 0 +Constant (const byte) bitmap_plot_spline_8seg::$6 = 0*SIZEOF_STRUCT_SPLINEVECTOR16 +Constant (const byte) bitmap_plot_spline_8seg::n#0 = 1 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) bitmap_init::gfx#0 = BITMAP_GRAPHICS#0 +Constant (const byte*) bitmap_init::screen#0 = BITMAP_SCREEN#0 +Constant (const byte) bitmap_clear::bgcol#0 = BLACK#0 +Constant (const byte) bitmap_clear::fgcol#0 = WHITE#0 +Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = BITMAP_SCREEN#0 +Constant (const byte*) main::toD0181_screen#0 = BITMAP_SCREEN#0 +Constant (const byte*) main::toD0181_gfx#0 = BITMAP_GRAPHICS#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) bitmap_gfx#1 = bitmap_init::gfx#0 +Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0 +Successful SSA optimization Pass2ConstantIdentification +Constant value identified (signed word*)SPLINE_8SEG#0 in [37] (signed word*) spline_8segB::$33 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Constant value identified (signed word*)SPLINE_8SEG#0 in [39] (signed word*) spline_8segB::$34 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)SPLINE_8SEG#0 in [58] (signed word*) spline_8segB::$35 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Constant value identified (signed word*)SPLINE_8SEG#0 in [60] (signed word*) spline_8segB::$36 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (void*)bitmap_screen#1 in [133] (void*) memset::str#0 ← (void*)(const byte*) bitmap_screen#1 +Constant value identified (void*)bitmap_gfx#1 in [139] (void*) memset::str#1 ← (void*)(const byte*) bitmap_gfx#1 +Constant value identified (byte*)letter_c#0 in [284] (byte*) main::$45 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [286] (struct SplineVector16*) main::$46 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [291] (struct SplineVector16*) main::$47 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [297] (byte*) main::$48 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [299] (struct SplineVector16*) main::$49 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [304] (struct SplineVector16*) main::$50 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [310] (byte*) main::$51 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [312] (struct SplineVector16*) main::$52 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [317] (struct SplineVector16*) main::$53 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [323] (byte*) main::$54 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [325] (struct SplineVector16*) main::$55 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [330] (struct SplineVector16*) main::$56 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [336] (byte*) main::$57 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [338] (struct SplineVector16*) main::$58 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [343] (struct SplineVector16*) main::$59 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [349] (byte*) main::$60 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [351] (struct SplineVector16*) main::$61 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [356] (struct SplineVector16*) main::$62 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [362] (byte*) main::$63 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [364] (struct SplineVector16*) main::$64 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [369] (struct SplineVector16*) main::$65 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [375] (byte*) main::$66 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [377] (struct SplineVector16*) main::$67 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [382] (struct SplineVector16*) main::$68 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [388] (byte*) main::$69 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [390] (struct SplineVector16*) main::$70 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [395] (struct SplineVector16*) main::$71 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [401] (byte*) main::$72 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [403] (struct SplineVector16*) main::$73 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [408] (struct SplineVector16*) main::$74 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [414] (byte*) main::$75 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [416] (struct SplineVector16*) main::$76 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [421] (struct SplineVector16*) main::$77 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [427] (byte*) main::$78 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [429] (struct SplineVector16*) main::$79 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [434] (struct SplineVector16*) main::$80 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [440] (byte*) main::$81 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [442] (struct SplineVector16*) main::$82 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [447] (struct SplineVector16*) main::$83 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [453] (byte*) main::$84 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [455] (struct SplineVector16*) main::$85 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [460] (struct SplineVector16*) main::$86 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [466] (byte*) main::$87 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [468] (struct SplineVector16*) main::$88 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [473] (struct SplineVector16*) main::$89 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [479] (byte*) main::$90 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [481] (struct SplineVector16*) main::$91 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [486] (struct SplineVector16*) main::$92 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [492] (byte*) main::$93 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [494] (struct SplineVector16*) main::$94 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [499] (struct SplineVector16*) main::$95 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [505] (byte*) main::$96 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [507] (struct SplineVector16*) main::$97 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [512] (struct SplineVector16*) main::$98 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [518] (byte*) main::$99 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [520] (struct SplineVector16*) main::$100 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [525] (struct SplineVector16*) main::$101 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [531] (byte*) main::$102 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [533] (struct SplineVector16*) main::$103 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [538] (struct SplineVector16*) main::$104 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [544] (byte*) main::$105 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [546] (struct SplineVector16*) main::$106 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [551] (struct SplineVector16*) main::$107 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (byte*)letter_c#0 in [557] (byte*) main::$108 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [559] (struct SplineVector16*) main::$109 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [564] (struct SplineVector16*) main::$110 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [584] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 +Constant value identified (word)main::toD0181_screen#0 in [598] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 +Constant value identified (word)main::toD0181_gfx#0 in [602] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 +Constant value identified (byte*)letter_c#0 in [624] (byte*) main::$111 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Constant value identified (struct SplineVector16*)letter_c#0 in [626] (struct SplineVector16*) main::$112 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant value identified (struct SplineVector16*)letter_c#0 in [631] (struct SplineVector16*) main::$113 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant value identified (signed word*)SPLINE_8SEG#0 in [690] (signed word*) bitmap_plot_spline_8seg::$8 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Constant value identified (signed word*)SPLINE_8SEG#0 in [692] (signed word*) bitmap_plot_spline_8seg::$9 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)SPLINE_8SEG#0 in [697] (signed word*) bitmap_plot_spline_8seg::$10 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Constant value identified (signed word*)SPLINE_8SEG#0 in [699] (signed word*) bitmap_plot_spline_8seg::$11 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantValues +if() condition always true - replacing block destination [681] if(true) goto main::@12 +Successful SSA optimization Pass2ConstantIfs +Resolved ranged next value [49] spline_8segB::n#1 ← ++ spline_8segB::n#2 to ++ +Resolved ranged comparison value [51] if(spline_8segB::n#1!=rangelast(0,7)) goto spline_8segB::@1 to (number) 8 +Resolved ranged next value [99] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ +Resolved ranged comparison value [101] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 +Resolved ranged next value [119] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ +Resolved ranged comparison value [121] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 +Resolved ranged next value [713] bitmap_plot_spline_8seg::n#1 ← ++ bitmap_plot_spline_8seg::n#2 to ++ +Resolved ranged comparison value [715] if(bitmap_plot_spline_8seg::n#1!=rangelast(1,8)) goto bitmap_plot_spline_8seg::@1 to (number) 9 +Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_STRUCT_SEGMENT in +Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 in +Successful SSA optimization PassNSimplifyConstantZero +Simplifying expression containing zero (signed word*)SPLINE_8SEG#0 in [37] (signed word*) spline_8segB::$33 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)SPLINE_8SEG#0 in [58] (signed word*) spline_8segB::$35 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero bitmap_clear::$0 in [131] (byte) bitmap_clear::col#0 ← (byte~) bitmap_clear::$0 + (const byte) bitmap_clear::bgcol#0 +Simplifying expression containing zero (byte*)letter_c#0 in [284] (byte*) main::$45 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero main::$45 in [285] *((byte*) main::$45 + (const byte) main::$22) ← (const byte) MOVE_TO +Simplifying expression containing zero (signed word*)main::$46 in [287] (signed word*) main::$114 ← (signed word*)(struct SplineVector16*) main::$46 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero main::$114 in [288] *((signed word*) main::$114 + (const byte) main::$22) ← (signed byte) $6c +Simplifying expression containing zero main::$115 in [290] *((signed word*) main::$115 + (const byte) main::$22) ← (signed word) $92 +Simplifying expression containing zero (signed word*)main::$47 in [292] (signed word*) main::$116 ← (signed word*)(struct SplineVector16*) main::$47 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero main::$116 in [293] *((signed word*) main::$116 + (const byte) main::$22) ← (signed byte) 0 +Simplifying expression containing zero main::$117 in [295] *((signed word*) main::$117 + (const byte) main::$22) ← (signed byte) 0 +Simplifying expression containing zero (byte*)letter_c#0 in [297] (byte*) main::$48 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$49 in [300] (signed word*) main::$118 ← (signed word*)(struct SplineVector16*) main::$49 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$50 in [305] (signed word*) main::$120 ← (signed word*)(struct SplineVector16*) main::$50 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [310] (byte*) main::$51 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$52 in [313] (signed word*) main::$122 ← (signed word*)(struct SplineVector16*) main::$52 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$53 in [318] (signed word*) main::$124 ← (signed word*)(struct SplineVector16*) main::$53 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [323] (byte*) main::$54 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$55 in [326] (signed word*) main::$126 ← (signed word*)(struct SplineVector16*) main::$55 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$56 in [331] (signed word*) main::$128 ← (signed word*)(struct SplineVector16*) main::$56 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [336] (byte*) main::$57 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$58 in [339] (signed word*) main::$130 ← (signed word*)(struct SplineVector16*) main::$58 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$59 in [344] (signed word*) main::$132 ← (signed word*)(struct SplineVector16*) main::$59 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [349] (byte*) main::$60 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$61 in [352] (signed word*) main::$134 ← (signed word*)(struct SplineVector16*) main::$61 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$62 in [357] (signed word*) main::$136 ← (signed word*)(struct SplineVector16*) main::$62 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [362] (byte*) main::$63 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$64 in [365] (signed word*) main::$138 ← (signed word*)(struct SplineVector16*) main::$64 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$65 in [370] (signed word*) main::$140 ← (signed word*)(struct SplineVector16*) main::$65 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [375] (byte*) main::$66 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$67 in [378] (signed word*) main::$142 ← (signed word*)(struct SplineVector16*) main::$67 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$68 in [383] (signed word*) main::$144 ← (signed word*)(struct SplineVector16*) main::$68 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [388] (byte*) main::$69 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$70 in [391] (signed word*) main::$146 ← (signed word*)(struct SplineVector16*) main::$70 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$71 in [396] (signed word*) main::$148 ← (signed word*)(struct SplineVector16*) main::$71 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [401] (byte*) main::$72 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$73 in [404] (signed word*) main::$150 ← (signed word*)(struct SplineVector16*) main::$73 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$74 in [409] (signed word*) main::$152 ← (signed word*)(struct SplineVector16*) main::$74 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [414] (byte*) main::$75 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$76 in [417] (signed word*) main::$154 ← (signed word*)(struct SplineVector16*) main::$76 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$77 in [422] (signed word*) main::$156 ← (signed word*)(struct SplineVector16*) main::$77 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [427] (byte*) main::$78 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$79 in [430] (signed word*) main::$158 ← (signed word*)(struct SplineVector16*) main::$79 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$80 in [435] (signed word*) main::$160 ← (signed word*)(struct SplineVector16*) main::$80 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [440] (byte*) main::$81 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$82 in [443] (signed word*) main::$162 ← (signed word*)(struct SplineVector16*) main::$82 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$83 in [448] (signed word*) main::$164 ← (signed word*)(struct SplineVector16*) main::$83 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [453] (byte*) main::$84 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$85 in [456] (signed word*) main::$166 ← (signed word*)(struct SplineVector16*) main::$85 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$86 in [461] (signed word*) main::$168 ← (signed word*)(struct SplineVector16*) main::$86 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [466] (byte*) main::$87 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$88 in [469] (signed word*) main::$170 ← (signed word*)(struct SplineVector16*) main::$88 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$89 in [474] (signed word*) main::$172 ← (signed word*)(struct SplineVector16*) main::$89 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [479] (byte*) main::$90 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$91 in [482] (signed word*) main::$174 ← (signed word*)(struct SplineVector16*) main::$91 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$92 in [487] (signed word*) main::$176 ← (signed word*)(struct SplineVector16*) main::$92 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [492] (byte*) main::$93 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$94 in [495] (signed word*) main::$178 ← (signed word*)(struct SplineVector16*) main::$94 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$95 in [500] (signed word*) main::$180 ← (signed word*)(struct SplineVector16*) main::$95 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [505] (byte*) main::$96 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$97 in [508] (signed word*) main::$182 ← (signed word*)(struct SplineVector16*) main::$97 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$98 in [513] (signed word*) main::$184 ← (signed word*)(struct SplineVector16*) main::$98 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [518] (byte*) main::$99 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$100 in [521] (signed word*) main::$186 ← (signed word*)(struct SplineVector16*) main::$100 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$101 in [526] (signed word*) main::$188 ← (signed word*)(struct SplineVector16*) main::$101 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [531] (byte*) main::$102 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$103 in [534] (signed word*) main::$190 ← (signed word*)(struct SplineVector16*) main::$103 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$104 in [539] (signed word*) main::$192 ← (signed word*)(struct SplineVector16*) main::$104 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [544] (byte*) main::$105 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$106 in [547] (signed word*) main::$194 ← (signed word*)(struct SplineVector16*) main::$106 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$107 in [552] (signed word*) main::$196 ← (signed word*)(struct SplineVector16*) main::$107 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [557] (byte*) main::$108 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$109 in [560] (signed word*) main::$198 ← (signed word*)(struct SplineVector16*) main::$109 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$110 in [565] (signed word*) main::$200 ← (signed word*)(struct SplineVector16*) main::$110 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (byte*)letter_c#0 in [624] (byte*) main::$111 ← (byte*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Simplifying expression containing zero (signed word*)main::$112 in [627] (signed word*) main::$202 ← (signed word*)(struct SplineVector16*) main::$112 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)main::$113 in [632] (signed word*) main::$204 ← (signed word*)(struct SplineVector16*) main::$113 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero (signed word*)SPLINE_8SEG#0 in [690] (signed word*) bitmap_plot_spline_8seg::$8 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Simplifying expression containing zero bitmap_plot_spline_8seg::$8 in [691] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*) bitmap_plot_spline_8seg::$8 + (const byte) bitmap_plot_spline_8seg::$6) +Simplifying expression containing zero bitmap_plot_spline_8seg::$9 in [693] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*) bitmap_plot_spline_8seg::$9 + (const byte) bitmap_plot_spline_8seg::$6) +Simplifying expression containing zero (signed word*)SPLINE_8SEG#0 in [697] (signed word*) bitmap_plot_spline_8seg::$10 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Successful SSA optimization PassNSimplifyExpressionWithZero +Eliminating unused variable (void*) memset::return#2 and assignment [79] (void*) memset::return#2 ← (void*) memset::str#3 +Eliminating unused variable (void*) memset::return#3 and assignment [82] (void*) memset::return#3 ← (void*) memset::str#3 +Eliminating unused constant (const byte) bitmap_clear::bgcol#0 +Eliminating unused constant (const byte) main::$22 +Eliminating unused constant (const byte) bitmap_plot_spline_8seg::$6 +Eliminating unused constant (const byte) OFFSET_STRUCT_SPLINEVECTOR16_X +Eliminating unused constant (const byte) OFFSET_STRUCT_SEGMENT_TYPE +Eliminating unused constant (const byte*) bitmap_screen#0 +Eliminating unused constant (const byte*) bitmap_gfx#0 +Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const byte) BLACK#0 +Successful SSA optimization PassNEliminateUnusedVars +Removing unused block main::@return +Successful SSA optimization Pass2EliminateUnusedBlocks +Adding number conversion cast (unumber) 8 in if((byte) spline_8segB::n#1!=(number) 8) goto spline_8segB::@1 +Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1 +Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5 +Adding number conversion cast (unumber) 9 in if((byte) bitmap_plot_spline_8seg::n#1!=(number) 9) goto bitmap_plot_spline_8seg::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 9 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 9 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 +Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 +Successful SSA optimization Pass2AliasElimination +Simple Condition (bool~) bitmap_line::$4 [101] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24 +Simple Condition (bool~) bitmap_line::$5 [496] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 +Successful SSA optimization Pass2ConditionalJumpSimplification +Negating conditional jump and destination [101] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 +Successful SSA optimization Pass2ConditionalJumpSequenceImprovement +Constant right-side identified [26] (signed word*) spline_8segB::$34 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [40] (signed word*) spline_8segB::$36 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [74] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10 +Constant right-side identified [158] (struct SplineVector16*) main::$46 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [163] (struct SplineVector16*) main::$47 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [170] (struct SplineVector16*) main::$49 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [175] (struct SplineVector16*) main::$50 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [182] (struct SplineVector16*) main::$52 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [187] (struct SplineVector16*) main::$53 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [194] (struct SplineVector16*) main::$55 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [199] (struct SplineVector16*) main::$56 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [206] (struct SplineVector16*) main::$58 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [211] (struct SplineVector16*) main::$59 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [218] (struct SplineVector16*) main::$61 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [223] (struct SplineVector16*) main::$62 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [230] (struct SplineVector16*) main::$64 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [235] (struct SplineVector16*) main::$65 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [242] (struct SplineVector16*) main::$67 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [247] (struct SplineVector16*) main::$68 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [254] (struct SplineVector16*) main::$70 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [259] (struct SplineVector16*) main::$71 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [266] (struct SplineVector16*) main::$73 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [271] (struct SplineVector16*) main::$74 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [278] (struct SplineVector16*) main::$76 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [283] (struct SplineVector16*) main::$77 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [290] (struct SplineVector16*) main::$79 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [295] (struct SplineVector16*) main::$80 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [302] (struct SplineVector16*) main::$82 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [307] (struct SplineVector16*) main::$83 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [314] (struct SplineVector16*) main::$85 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [319] (struct SplineVector16*) main::$86 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [326] (struct SplineVector16*) main::$88 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [331] (struct SplineVector16*) main::$89 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [338] (struct SplineVector16*) main::$91 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [343] (struct SplineVector16*) main::$92 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [350] (struct SplineVector16*) main::$94 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [355] (struct SplineVector16*) main::$95 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [362] (struct SplineVector16*) main::$97 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [367] (struct SplineVector16*) main::$98 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [374] (struct SplineVector16*) main::$100 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [379] (struct SplineVector16*) main::$101 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [386] (struct SplineVector16*) main::$103 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [391] (struct SplineVector16*) main::$104 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [398] (struct SplineVector16*) main::$106 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [403] (struct SplineVector16*) main::$107 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [410] (struct SplineVector16*) main::$109 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [415] (struct SplineVector16*) main::$110 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [438] (byte~) main::$4 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 +Constant right-side identified [442] (byte~) main::$7 ← sizeof (const struct Segment[$15]) letter_c#0 +Constant right-side identified [448] (struct SplineVector16*) main::$112 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_TO +Constant right-side identified [453] (struct SplineVector16*) main::$113 ← (struct SplineVector16*)(const struct Segment[$15]) letter_c#0 + (const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant right-side identified [475] (byte*~) main::$21 ← (const byte*) PRINT_SCREEN#0 + (word) $3e7 +Constant right-side identified [479] (signed word*) bitmap_plot_spline_8seg::$9 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [485] (signed word*) bitmap_plot_spline_8seg::$11 ← (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const signed word*) spline_8segB::$33 = (signed word*)SPLINE_8SEG#0 +Constant (const signed word*) spline_8segB::$34 = (signed word*)SPLINE_8SEG#0+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) spline_8segB::$35 = (signed word*)SPLINE_8SEG#0 +Constant (const signed word*) spline_8segB::$36 = (signed word*)SPLINE_8SEG#0+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10 +Constant (const void*) memset::str#0 = (void*)bitmap_screen#1 +Constant (const void*) memset::str#1 = (void*)bitmap_gfx#1 +Constant (const byte*) main::$45 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$46 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$47 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$48 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$49 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$50 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$51 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$52 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$53 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$54 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$55 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$56 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$57 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$58 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$59 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$60 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$61 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$62 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$63 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$64 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$65 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$66 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$67 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$68 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$69 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$70 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$71 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$72 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$73 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$74 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$75 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$76 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$77 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$78 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$79 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$80 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$81 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$82 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$83 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$84 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$85 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$86 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$87 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$88 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$89 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$90 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$91 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$92 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$93 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$94 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$95 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$96 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$97 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$98 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$99 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$100 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$101 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$102 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$103 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$104 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$105 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$106 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$107 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$108 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$109 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$110 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = (word)main::vicSelectGfxBank1_gfx#0 +Constant (const word) main::toD0181_$0#0 = (word)main::toD0181_screen#0 +Constant (const word) main::toD0181_$4#0 = (word)main::toD0181_gfx#0 +Constant (const byte) main::$4 = VIC_BMM#0|VIC_DEN#0 +Constant (const byte) main::$7 = sizeof letter_c#0 +Constant (const byte*) main::$111 = (byte*)letter_c#0 +Constant (const struct SplineVector16*) main::$112 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO +Constant (const struct SplineVector16*) main::$113 = (struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA +Constant (const byte*) main::$21 = PRINT_SCREEN#0+$3e7 +Constant (const signed word*) bitmap_plot_spline_8seg::$8 = (signed word*)SPLINE_8SEG#0 +Constant (const signed word*) bitmap_plot_spline_8seg::$9 = (signed word*)SPLINE_8SEG#0+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) bitmap_plot_spline_8seg::$10 = (signed word*)SPLINE_8SEG#0 +Constant (const signed word*) bitmap_plot_spline_8seg::$11 = (signed word*)SPLINE_8SEG#0+OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) memset::c#0 = bitmap_clear::col#0 +Successful SSA optimization Pass2ConstantIdentification +Constant value identified (signed word*)main::$46 in [159] (signed word*) main::$114 ← (signed word*)(const struct SplineVector16*) main::$46 +Constant value identified (signed word*)main::$46 in [161] (signed word*) main::$115 ← (signed word*)(const struct SplineVector16*) main::$46 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$47 in [164] (signed word*) main::$116 ← (signed word*)(const struct SplineVector16*) main::$47 +Constant value identified (signed word*)main::$47 in [166] (signed word*) main::$117 ← (signed word*)(const struct SplineVector16*) main::$47 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$49 in [171] (signed word*) main::$118 ← (signed word*)(const struct SplineVector16*) main::$49 +Constant value identified (signed word*)main::$49 in [173] (signed word*) main::$119 ← (signed word*)(const struct SplineVector16*) main::$49 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$50 in [176] (signed word*) main::$120 ← (signed word*)(const struct SplineVector16*) main::$50 +Constant value identified (signed word*)main::$50 in [178] (signed word*) main::$121 ← (signed word*)(const struct SplineVector16*) main::$50 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$52 in [183] (signed word*) main::$122 ← (signed word*)(const struct SplineVector16*) main::$52 +Constant value identified (signed word*)main::$52 in [185] (signed word*) main::$123 ← (signed word*)(const struct SplineVector16*) main::$52 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$53 in [188] (signed word*) main::$124 ← (signed word*)(const struct SplineVector16*) main::$53 +Constant value identified (signed word*)main::$53 in [190] (signed word*) main::$125 ← (signed word*)(const struct SplineVector16*) main::$53 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$55 in [195] (signed word*) main::$126 ← (signed word*)(const struct SplineVector16*) main::$55 +Constant value identified (signed word*)main::$55 in [197] (signed word*) main::$127 ← (signed word*)(const struct SplineVector16*) main::$55 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$56 in [200] (signed word*) main::$128 ← (signed word*)(const struct SplineVector16*) main::$56 +Constant value identified (signed word*)main::$56 in [202] (signed word*) main::$129 ← (signed word*)(const struct SplineVector16*) main::$56 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$58 in [207] (signed word*) main::$130 ← (signed word*)(const struct SplineVector16*) main::$58 +Constant value identified (signed word*)main::$58 in [209] (signed word*) main::$131 ← (signed word*)(const struct SplineVector16*) main::$58 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$59 in [212] (signed word*) main::$132 ← (signed word*)(const struct SplineVector16*) main::$59 +Constant value identified (signed word*)main::$59 in [214] (signed word*) main::$133 ← (signed word*)(const struct SplineVector16*) main::$59 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$61 in [219] (signed word*) main::$134 ← (signed word*)(const struct SplineVector16*) main::$61 +Constant value identified (signed word*)main::$61 in [221] (signed word*) main::$135 ← (signed word*)(const struct SplineVector16*) main::$61 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$62 in [224] (signed word*) main::$136 ← (signed word*)(const struct SplineVector16*) main::$62 +Constant value identified (signed word*)main::$62 in [226] (signed word*) main::$137 ← (signed word*)(const struct SplineVector16*) main::$62 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$64 in [231] (signed word*) main::$138 ← (signed word*)(const struct SplineVector16*) main::$64 +Constant value identified (signed word*)main::$64 in [233] (signed word*) main::$139 ← (signed word*)(const struct SplineVector16*) main::$64 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$65 in [236] (signed word*) main::$140 ← (signed word*)(const struct SplineVector16*) main::$65 +Constant value identified (signed word*)main::$65 in [238] (signed word*) main::$141 ← (signed word*)(const struct SplineVector16*) main::$65 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$67 in [243] (signed word*) main::$142 ← (signed word*)(const struct SplineVector16*) main::$67 +Constant value identified (signed word*)main::$67 in [245] (signed word*) main::$143 ← (signed word*)(const struct SplineVector16*) main::$67 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$68 in [248] (signed word*) main::$144 ← (signed word*)(const struct SplineVector16*) main::$68 +Constant value identified (signed word*)main::$68 in [250] (signed word*) main::$145 ← (signed word*)(const struct SplineVector16*) main::$68 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$70 in [255] (signed word*) main::$146 ← (signed word*)(const struct SplineVector16*) main::$70 +Constant value identified (signed word*)main::$70 in [257] (signed word*) main::$147 ← (signed word*)(const struct SplineVector16*) main::$70 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$71 in [260] (signed word*) main::$148 ← (signed word*)(const struct SplineVector16*) main::$71 +Constant value identified (signed word*)main::$71 in [262] (signed word*) main::$149 ← (signed word*)(const struct SplineVector16*) main::$71 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$73 in [267] (signed word*) main::$150 ← (signed word*)(const struct SplineVector16*) main::$73 +Constant value identified (signed word*)main::$73 in [269] (signed word*) main::$151 ← (signed word*)(const struct SplineVector16*) main::$73 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$74 in [272] (signed word*) main::$152 ← (signed word*)(const struct SplineVector16*) main::$74 +Constant value identified (signed word*)main::$74 in [274] (signed word*) main::$153 ← (signed word*)(const struct SplineVector16*) main::$74 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$76 in [279] (signed word*) main::$154 ← (signed word*)(const struct SplineVector16*) main::$76 +Constant value identified (signed word*)main::$76 in [281] (signed word*) main::$155 ← (signed word*)(const struct SplineVector16*) main::$76 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$77 in [284] (signed word*) main::$156 ← (signed word*)(const struct SplineVector16*) main::$77 +Constant value identified (signed word*)main::$77 in [286] (signed word*) main::$157 ← (signed word*)(const struct SplineVector16*) main::$77 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$79 in [291] (signed word*) main::$158 ← (signed word*)(const struct SplineVector16*) main::$79 +Constant value identified (signed word*)main::$79 in [293] (signed word*) main::$159 ← (signed word*)(const struct SplineVector16*) main::$79 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$80 in [296] (signed word*) main::$160 ← (signed word*)(const struct SplineVector16*) main::$80 +Constant value identified (signed word*)main::$80 in [298] (signed word*) main::$161 ← (signed word*)(const struct SplineVector16*) main::$80 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$82 in [303] (signed word*) main::$162 ← (signed word*)(const struct SplineVector16*) main::$82 +Constant value identified (signed word*)main::$82 in [305] (signed word*) main::$163 ← (signed word*)(const struct SplineVector16*) main::$82 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$83 in [308] (signed word*) main::$164 ← (signed word*)(const struct SplineVector16*) main::$83 +Constant value identified (signed word*)main::$83 in [310] (signed word*) main::$165 ← (signed word*)(const struct SplineVector16*) main::$83 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$85 in [315] (signed word*) main::$166 ← (signed word*)(const struct SplineVector16*) main::$85 +Constant value identified (signed word*)main::$85 in [317] (signed word*) main::$167 ← (signed word*)(const struct SplineVector16*) main::$85 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$86 in [320] (signed word*) main::$168 ← (signed word*)(const struct SplineVector16*) main::$86 +Constant value identified (signed word*)main::$86 in [322] (signed word*) main::$169 ← (signed word*)(const struct SplineVector16*) main::$86 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$88 in [327] (signed word*) main::$170 ← (signed word*)(const struct SplineVector16*) main::$88 +Constant value identified (signed word*)main::$88 in [329] (signed word*) main::$171 ← (signed word*)(const struct SplineVector16*) main::$88 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$89 in [332] (signed word*) main::$172 ← (signed word*)(const struct SplineVector16*) main::$89 +Constant value identified (signed word*)main::$89 in [334] (signed word*) main::$173 ← (signed word*)(const struct SplineVector16*) main::$89 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$91 in [339] (signed word*) main::$174 ← (signed word*)(const struct SplineVector16*) main::$91 +Constant value identified (signed word*)main::$91 in [341] (signed word*) main::$175 ← (signed word*)(const struct SplineVector16*) main::$91 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$92 in [344] (signed word*) main::$176 ← (signed word*)(const struct SplineVector16*) main::$92 +Constant value identified (signed word*)main::$92 in [346] (signed word*) main::$177 ← (signed word*)(const struct SplineVector16*) main::$92 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$94 in [351] (signed word*) main::$178 ← (signed word*)(const struct SplineVector16*) main::$94 +Constant value identified (signed word*)main::$94 in [353] (signed word*) main::$179 ← (signed word*)(const struct SplineVector16*) main::$94 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$95 in [356] (signed word*) main::$180 ← (signed word*)(const struct SplineVector16*) main::$95 +Constant value identified (signed word*)main::$95 in [358] (signed word*) main::$181 ← (signed word*)(const struct SplineVector16*) main::$95 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$97 in [363] (signed word*) main::$182 ← (signed word*)(const struct SplineVector16*) main::$97 +Constant value identified (signed word*)main::$97 in [365] (signed word*) main::$183 ← (signed word*)(const struct SplineVector16*) main::$97 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$98 in [368] (signed word*) main::$184 ← (signed word*)(const struct SplineVector16*) main::$98 +Constant value identified (signed word*)main::$98 in [370] (signed word*) main::$185 ← (signed word*)(const struct SplineVector16*) main::$98 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$100 in [375] (signed word*) main::$186 ← (signed word*)(const struct SplineVector16*) main::$100 +Constant value identified (signed word*)main::$100 in [377] (signed word*) main::$187 ← (signed word*)(const struct SplineVector16*) main::$100 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$101 in [380] (signed word*) main::$188 ← (signed word*)(const struct SplineVector16*) main::$101 +Constant value identified (signed word*)main::$101 in [382] (signed word*) main::$189 ← (signed word*)(const struct SplineVector16*) main::$101 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$103 in [387] (signed word*) main::$190 ← (signed word*)(const struct SplineVector16*) main::$103 +Constant value identified (signed word*)main::$103 in [389] (signed word*) main::$191 ← (signed word*)(const struct SplineVector16*) main::$103 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$104 in [392] (signed word*) main::$192 ← (signed word*)(const struct SplineVector16*) main::$104 +Constant value identified (signed word*)main::$104 in [394] (signed word*) main::$193 ← (signed word*)(const struct SplineVector16*) main::$104 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$106 in [399] (signed word*) main::$194 ← (signed word*)(const struct SplineVector16*) main::$106 +Constant value identified (signed word*)main::$106 in [401] (signed word*) main::$195 ← (signed word*)(const struct SplineVector16*) main::$106 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$107 in [404] (signed word*) main::$196 ← (signed word*)(const struct SplineVector16*) main::$107 +Constant value identified (signed word*)main::$107 in [406] (signed word*) main::$197 ← (signed word*)(const struct SplineVector16*) main::$107 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$109 in [411] (signed word*) main::$198 ← (signed word*)(const struct SplineVector16*) main::$109 +Constant value identified (signed word*)main::$109 in [413] (signed word*) main::$199 ← (signed word*)(const struct SplineVector16*) main::$109 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$110 in [416] (signed word*) main::$200 ← (signed word*)(const struct SplineVector16*) main::$110 +Constant value identified (signed word*)main::$110 in [418] (signed word*) main::$201 ← (signed word*)(const struct SplineVector16*) main::$110 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$112 in [449] (signed word*) main::$202 ← (signed word*)(const struct SplineVector16*) main::$112 +Constant value identified (signed word*)main::$112 in [451] (signed word*) main::$203 ← (signed word*)(const struct SplineVector16*) main::$112 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant value identified (signed word*)main::$113 in [454] (signed word*) main::$204 ← (signed word*)(const struct SplineVector16*) main::$113 +Constant value identified (signed word*)main::$113 in [456] (signed word*) main::$205 ← (signed word*)(const struct SplineVector16*) main::$113 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantValues +Converting *(pointer+n) to pointer[n] [162] *((signed word*) main::$115) ← (signed word) $92 -- *((signed word*)main::$46 + OFFSET_STRUCT_SPLINEVECTOR16_Y) +Converting *(pointer+n) to pointer[n] [167] *((signed word*) main::$117) ← (signed byte) 0 -- *((signed word*)main::$47 + OFFSET_STRUCT_SPLINEVECTOR16_Y) +Successful SSA optimization Pass2InlineDerefIdx +Eliminating unused variable (signed word*) main::$115 and assignment [147] (signed word*) main::$115 ← (signed word*)(const struct SplineVector16*) main::$46 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Eliminating unused variable (signed word*) main::$117 and assignment [151] (signed word*) main::$117 ← (signed word*)(const struct SplineVector16*) main::$47 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization PassNEliminateUnusedVars +Resolving array sizeof() sizeof (const struct Segment[$15]) letter_c#0 +Successful SSA optimization PassNSizeOfSimplification +Constant right-side identified [154] (signed word*) main::$119 ← (signed word*)(const struct SplineVector16*) main::$49 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [158] (signed word*) main::$121 ← (signed word*)(const struct SplineVector16*) main::$50 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [163] (signed word*) main::$123 ← (signed word*)(const struct SplineVector16*) main::$52 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [167] (signed word*) main::$125 ← (signed word*)(const struct SplineVector16*) main::$53 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [172] (signed word*) main::$127 ← (signed word*)(const struct SplineVector16*) main::$55 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [176] (signed word*) main::$129 ← (signed word*)(const struct SplineVector16*) main::$56 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [181] (signed word*) main::$131 ← (signed word*)(const struct SplineVector16*) main::$58 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [185] (signed word*) main::$133 ← (signed word*)(const struct SplineVector16*) main::$59 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [190] (signed word*) main::$135 ← (signed word*)(const struct SplineVector16*) main::$61 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [194] (signed word*) main::$137 ← (signed word*)(const struct SplineVector16*) main::$62 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [199] (signed word*) main::$139 ← (signed word*)(const struct SplineVector16*) main::$64 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [203] (signed word*) main::$141 ← (signed word*)(const struct SplineVector16*) main::$65 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [208] (signed word*) main::$143 ← (signed word*)(const struct SplineVector16*) main::$67 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [212] (signed word*) main::$145 ← (signed word*)(const struct SplineVector16*) main::$68 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [217] (signed word*) main::$147 ← (signed word*)(const struct SplineVector16*) main::$70 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [221] (signed word*) main::$149 ← (signed word*)(const struct SplineVector16*) main::$71 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [226] (signed word*) main::$151 ← (signed word*)(const struct SplineVector16*) main::$73 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [230] (signed word*) main::$153 ← (signed word*)(const struct SplineVector16*) main::$74 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [235] (signed word*) main::$155 ← (signed word*)(const struct SplineVector16*) main::$76 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [239] (signed word*) main::$157 ← (signed word*)(const struct SplineVector16*) main::$77 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [244] (signed word*) main::$159 ← (signed word*)(const struct SplineVector16*) main::$79 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [248] (signed word*) main::$161 ← (signed word*)(const struct SplineVector16*) main::$80 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [253] (signed word*) main::$163 ← (signed word*)(const struct SplineVector16*) main::$82 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [257] (signed word*) main::$165 ← (signed word*)(const struct SplineVector16*) main::$83 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [262] (signed word*) main::$167 ← (signed word*)(const struct SplineVector16*) main::$85 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [266] (signed word*) main::$169 ← (signed word*)(const struct SplineVector16*) main::$86 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [271] (signed word*) main::$171 ← (signed word*)(const struct SplineVector16*) main::$88 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [275] (signed word*) main::$173 ← (signed word*)(const struct SplineVector16*) main::$89 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [280] (signed word*) main::$175 ← (signed word*)(const struct SplineVector16*) main::$91 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [284] (signed word*) main::$177 ← (signed word*)(const struct SplineVector16*) main::$92 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [289] (signed word*) main::$179 ← (signed word*)(const struct SplineVector16*) main::$94 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [293] (signed word*) main::$181 ← (signed word*)(const struct SplineVector16*) main::$95 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [298] (signed word*) main::$183 ← (signed word*)(const struct SplineVector16*) main::$97 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [302] (signed word*) main::$185 ← (signed word*)(const struct SplineVector16*) main::$98 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [307] (signed word*) main::$187 ← (signed word*)(const struct SplineVector16*) main::$100 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [311] (signed word*) main::$189 ← (signed word*)(const struct SplineVector16*) main::$101 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [316] (signed word*) main::$191 ← (signed word*)(const struct SplineVector16*) main::$103 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [320] (signed word*) main::$193 ← (signed word*)(const struct SplineVector16*) main::$104 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [325] (signed word*) main::$195 ← (signed word*)(const struct SplineVector16*) main::$106 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [329] (signed word*) main::$197 ← (signed word*)(const struct SplineVector16*) main::$107 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [334] (signed word*) main::$199 ← (signed word*)(const struct SplineVector16*) main::$109 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [338] (signed word*) main::$201 ← (signed word*)(const struct SplineVector16*) main::$110 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [343] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 +Constant right-side identified [347] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff +Constant right-side identified [350] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 +Constant right-side identified [355] (byte~) main::$5 ← (const byte) main::$4 | (const byte) VIC_RSEL#0 +Constant right-side identified [358] (byte~) main::$8 ← (const byte) main::$7 / (const byte) SIZEOF_STRUCT_SEGMENT +Constant right-side identified [364] (signed word*) main::$203 ← (signed word*)(const struct SplineVector16*) main::$112 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant right-side identified [368] (signed word*) main::$205 ← (signed word*)(const struct SplineVector16*) main::$113 + (const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const signed word*) main::$114 = (signed word*)main::$46 +Constant (const signed word*) main::$116 = (signed word*)main::$47 +Constant (const signed word*) main::$118 = (signed word*)main::$49 +Constant (const signed word*) main::$119 = (signed word*)main::$49+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$120 = (signed word*)main::$50 +Constant (const signed word*) main::$121 = (signed word*)main::$50+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$122 = (signed word*)main::$52 +Constant (const signed word*) main::$123 = (signed word*)main::$52+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$124 = (signed word*)main::$53 +Constant (const signed word*) main::$125 = (signed word*)main::$53+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$126 = (signed word*)main::$55 +Constant (const signed word*) main::$127 = (signed word*)main::$55+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$128 = (signed word*)main::$56 +Constant (const signed word*) main::$129 = (signed word*)main::$56+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$130 = (signed word*)main::$58 +Constant (const signed word*) main::$131 = (signed word*)main::$58+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$132 = (signed word*)main::$59 +Constant (const signed word*) main::$133 = (signed word*)main::$59+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$134 = (signed word*)main::$61 +Constant (const signed word*) main::$135 = (signed word*)main::$61+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$136 = (signed word*)main::$62 +Constant (const signed word*) main::$137 = (signed word*)main::$62+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$138 = (signed word*)main::$64 +Constant (const signed word*) main::$139 = (signed word*)main::$64+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$140 = (signed word*)main::$65 +Constant (const signed word*) main::$141 = (signed word*)main::$65+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$142 = (signed word*)main::$67 +Constant (const signed word*) main::$143 = (signed word*)main::$67+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$144 = (signed word*)main::$68 +Constant (const signed word*) main::$145 = (signed word*)main::$68+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$146 = (signed word*)main::$70 +Constant (const signed word*) main::$147 = (signed word*)main::$70+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$148 = (signed word*)main::$71 +Constant (const signed word*) main::$149 = (signed word*)main::$71+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$150 = (signed word*)main::$73 +Constant (const signed word*) main::$151 = (signed word*)main::$73+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$152 = (signed word*)main::$74 +Constant (const signed word*) main::$153 = (signed word*)main::$74+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$154 = (signed word*)main::$76 +Constant (const signed word*) main::$155 = (signed word*)main::$76+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$156 = (signed word*)main::$77 +Constant (const signed word*) main::$157 = (signed word*)main::$77+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$158 = (signed word*)main::$79 +Constant (const signed word*) main::$159 = (signed word*)main::$79+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$160 = (signed word*)main::$80 +Constant (const signed word*) main::$161 = (signed word*)main::$80+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$162 = (signed word*)main::$82 +Constant (const signed word*) main::$163 = (signed word*)main::$82+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$164 = (signed word*)main::$83 +Constant (const signed word*) main::$165 = (signed word*)main::$83+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$166 = (signed word*)main::$85 +Constant (const signed word*) main::$167 = (signed word*)main::$85+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$168 = (signed word*)main::$86 +Constant (const signed word*) main::$169 = (signed word*)main::$86+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$170 = (signed word*)main::$88 +Constant (const signed word*) main::$171 = (signed word*)main::$88+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$172 = (signed word*)main::$89 +Constant (const signed word*) main::$173 = (signed word*)main::$89+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$174 = (signed word*)main::$91 +Constant (const signed word*) main::$175 = (signed word*)main::$91+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$176 = (signed word*)main::$92 +Constant (const signed word*) main::$177 = (signed word*)main::$92+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$178 = (signed word*)main::$94 +Constant (const signed word*) main::$179 = (signed word*)main::$94+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$180 = (signed word*)main::$95 +Constant (const signed word*) main::$181 = (signed word*)main::$95+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$182 = (signed word*)main::$97 +Constant (const signed word*) main::$183 = (signed word*)main::$97+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$184 = (signed word*)main::$98 +Constant (const signed word*) main::$185 = (signed word*)main::$98+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$186 = (signed word*)main::$100 +Constant (const signed word*) main::$187 = (signed word*)main::$100+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$188 = (signed word*)main::$101 +Constant (const signed word*) main::$189 = (signed word*)main::$101+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$190 = (signed word*)main::$103 +Constant (const signed word*) main::$191 = (signed word*)main::$103+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$192 = (signed word*)main::$104 +Constant (const signed word*) main::$193 = (signed word*)main::$104+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$194 = (signed word*)main::$106 +Constant (const signed word*) main::$195 = (signed word*)main::$106+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$196 = (signed word*)main::$107 +Constant (const signed word*) main::$197 = (signed word*)main::$107+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$198 = (signed word*)main::$109 +Constant (const signed word*) main::$199 = (signed word*)main::$109+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$200 = (signed word*)main::$110 +Constant (const signed word*) main::$201 = (signed word*)main::$110+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0 +Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff +Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 +Constant (const byte) main::$5 = main::$4|VIC_RSEL#0 +Constant (const byte) main::$8 = main::$7/SIZEOF_STRUCT_SEGMENT +Constant (const signed word*) main::$202 = (signed word*)main::$112 +Constant (const signed word*) main::$203 = (signed word*)main::$112+OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant (const signed word*) main::$204 = (signed word*)main::$113 +Constant (const signed word*) main::$205 = (signed word*)main::$113+OFFSET_STRUCT_SPLINEVECTOR16_Y +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value [385] main::i#1 ← ++ main::i#10 to ++ +Resolved ranged comparison value [386] if(main::i#1!=rangelast(0,main::$8)) goto main::@1 to (const byte) main::$8+(number) 1 +Adding number conversion cast (unumber) $15 in +Adding number conversion cast (unumber) main::$8+1 in if((byte) main::i#1!=(const byte) main::$8+(number) 1) goto main::@1 +Adding number conversion cast (unumber) 1 in if((byte) main::i#1!=(unumber)(const byte) main::$8+(number) 1) goto main::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast $15 +Simplifying constant integer cast (const byte) main::$8+(unumber)(number) 1 +Simplifying constant integer cast 1 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $15 +Finalized unsigned number type (byte) 1 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Constant right-side identified [257] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Constant right-side identified [260] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 +Constant right-side identified [262] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 +Constant right-side identified [266] (byte~) main::$6 ← (const byte) main::$5 | (byte) 3 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0/$40 +Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0*4 +Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0/4 +Constant (const byte) main::$6 = main::$5|3 +Successful SSA optimization Pass2ConstantIdentification +Constant right-side identified [257] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 +Constant right-side identified [259] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 +Constant right-side identified [260] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0 +Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 +Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f +Successful SSA optimization Pass2ConstantIdentification +Constant right-side identified [258] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 +Successful SSA optimization Pass2ConstantIdentification +Inlining Noop Cast [41] (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Inlining Noop Cast [43] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Successful SSA optimization Pass2NopCastInlining +Inlining Noop Cast [74] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 keeping bitmap_plot::plotter#0 +Successful SSA optimization Pass2NopCastInlining +Rewriting multiplication to use shift [0] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 * (signed byte) 2 +Rewriting multiplication to use shift [3] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 * (signed byte) 2 +Rewriting multiplication to use shift [7] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 * (signed byte) 2 +Rewriting multiplication to use shift [9] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 * (signed byte) 2 +Rewriting multiplication to use shift [10] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 * (signed byte) 8 +Rewriting multiplication to use shift [12] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 * (signed byte) 8 +Rewriting multiplication to use shift [14] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 * (signed byte) 2 +Rewriting multiplication to use shift [15] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 * (signed byte) 2 +Rewriting multiplication to use shift [16] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 * (signed byte) $40 +Rewriting multiplication to use shift [17] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 * (signed byte) $40 +Rewriting division to use shift [20] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 / (signed byte) $40 +Rewriting division to use shift [22] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 / (signed byte) $40 +Rewriting multiplication to use shift [23] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Rewriting division to use shift [33] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 / (signed byte) $40 +Rewriting division to use shift [35] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 / (signed byte) $40 +Rewriting division to use shift [103] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 / (byte) 2 +Rewriting division to use shift [104] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 / (byte) 2 +Rewriting multiplication to use shift and addition[261] (byte~) main::$44 ← (byte) main::i#10 * (const byte) SIZEOF_STRUCT_SEGMENT +Rewriting multiplication to use shift [288] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 * (const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte) spline_8segB::n#0 +Inlining constant with var siblings (const word) memset::num#0 +Inlining constant with var siblings (const byte) memset::c#1 +Inlining constant with var siblings (const word) memset::num#1 +Inlining constant with var siblings (const void*) memset::str#0 +Inlining constant with var siblings (const void*) memset::str#1 +Inlining constant with var siblings (const byte) memset::c#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#0 +Inlining constant with var siblings (const byte) bitmap_init::x#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#2 +Inlining constant with var siblings (const byte) bitmap_init::y#0 +Inlining constant with var siblings (const word) sgn_u16::return#2 +Inlining constant with var siblings (const word) sgn_u16::return#3 +Inlining constant with var siblings (const signed word) main::current_x#0 +Inlining constant with var siblings (const signed word) main::current_y#0 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) bitmap_plot_spline_8seg::n#0 +Constant inlined bitmap_init::screen#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::$92 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$93 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$94 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$95 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$90 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$91 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$96 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$97 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$98 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$99 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$112 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$111 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$110 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$119 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$118 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$116 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$114 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$113 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$81 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$82 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$83 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$84 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$80 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$89 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::current_y#0 = (signed byte) 0 +Constant inlined main::$85 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$86 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$87 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$88 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$101 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$100 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::toD0181_$7#0 = >(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +Constant inlined main::$109 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$108 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$107 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$106 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$105 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$104 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$103 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$102 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$70 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$71 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$72 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$73 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$78 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$79 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$74 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$75 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$76 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$77 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$134 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$133 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$132 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$131 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$130 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined sgn_u16::return#3 = (byte) 1 +Constant inlined sgn_u16::return#2 = (byte) -1 +Constant inlined main::$139 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$138 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$137 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$136 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$135 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$60 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$61 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$62 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$67 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::current_x#0 = (signed byte) 0 +Constant inlined main::$68 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$69 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::toD0181_$0#0 = (word)(const byte*) BITMAP_SCREEN#0 +Constant inlined main::$63 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$64 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$65 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$66 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$123 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$122 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$121 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$120 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$5 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 +Constant inlined bitmap_init::y#0 = (byte) 0 +Constant inlined main::$6 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 +Constant inlined main::$129 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$4 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0 +Constant inlined main::$128 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$127 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$126 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$7 = (byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$125 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$124 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$8 = (byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$50 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$51 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$56 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$57 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$58 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$59 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$52 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$53 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$54 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$55 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$40 = (byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$45 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::$46 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$47 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$48 = (byte*)(const struct Segment[$15]) letter_c#0 +Constant inlined main::toD0181_$1#0 = (word)(const byte*) BITMAP_SCREEN#0&(word) $3fff +Constant inlined main::$41 = (byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$42 = (byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$43 = (byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$49 = (struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined bitmap_init::x#0 = (byte) 0 +Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined main::$34 = (byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$35 = (byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$36 = (byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$37 = (byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$30 = (byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$31 = (byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$32 = (byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$33 = (byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$38 = (byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$39 = (byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$23 = (byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$24 = (byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$25 = (byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$26 = (byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$21 = (const byte*) PRINT_SCREEN#0+(word) $3e7 +Constant inlined main::$200 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$27 = (byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::toD0181_$2#0 = (word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4 +Constant inlined main::$28 = (byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::$29 = (byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT +Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::$205 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$204 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$203 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$202 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$201 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$199 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$198 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$197 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$196 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$195 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$194 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$193 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$192 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$191 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$190 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$189 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$188 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$187 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$186 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$185 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$184 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::toD0181_$3#0 = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4 +Constant inlined main::$183 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$182 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0 +Constant inlined memset::c#1 = (byte) 0 +Constant inlined main::toD0181_screen#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = (word)(const byte*) BITMAP_SCREEN#0 +Constant inlined bitmap_screen#1 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::toD0181_$4#0 = (word)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined bitmap_init::gfx#0 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined memset::num#1 = (word) $1f40 +Constant inlined memset::num#0 = (word) $3e8 +Constant inlined main::$156 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$155 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$154 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$153 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$152 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$151 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$150 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$159 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$158 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$157 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >(word)(const byte*) BITMAP_SCREEN#0 +Constant inlined bitmap_plot_spline_8seg::n#0 = (byte) 1 +Constant inlined bitmap_gfx#1 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined main::$145 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$144 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$143 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$142 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$141 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$140 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::toD0181_$5#0 = >(word)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined spline_8segB::n#0 = (byte) 0 +Constant inlined main::$149 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$148 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$147 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined bitmap_plot_spline_8seg::$10 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 +Constant inlined main::$146 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined bitmap_plot_spline_8seg::$11 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$181 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$180 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined bitmap_init::bits#0 = (byte) $80 +Constant inlined spline_8segB::$36 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined bitmap_init::bits#2 = (byte) $80 +Constant inlined spline_8segB::$32 = (byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 +Constant inlined main::$178 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined spline_8segB::$33 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 +Constant inlined main::$177 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined bitmap_plot_spline_8seg::$8 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 +Constant inlined spline_8segB::$34 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$176 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined bitmap_plot_spline_8seg::$9 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined spline_8segB::$35 = (signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 +Constant inlined main::$175 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$174 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$173 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$172 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$171 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::i#0 = (byte) 0 +Constant inlined main::$179 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +Constant inlined memset::str#1 = (void*)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined memset::str#0 = (void*)(const byte*) BITMAP_SCREEN#0 +Constant inlined main::$170 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined bitmap_clear::fgcol#0 = (const byte) WHITE#0 +Constant inlined main::$167 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::toD0181_$6#0 = >(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4 +Constant inlined main::$166 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$165 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$164 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$163 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$162 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO +Constant inlined main::$161 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$160 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Constant inlined main::$169 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y +Constant inlined main::$168 = (signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA +Successful SSA optimization Pass2ConstantInlining +Consolidated array index constant in *((signed word*)SPLINE_8SEG#0+8*SIZEOF_STRUCT_SPLINEVECTOR16) +Consolidated array index constant in *((signed word*)SPLINE_8SEG#0+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y) +Consolidated array index constant in *((byte*)letter_c#0+1*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+2*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+3*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+4*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+5*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+6*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+7*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+8*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+9*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$a*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$b*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$c*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$d*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$e*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$f*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$10*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$11*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$12*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$13*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$14*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((byte*)letter_c#0+$15*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT) +Consolidated array index constant in *((signed word*)(struct SplineVector16*)letter_c#0+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT) +Successful SSA optimization Pass2ConstantAdditionElimination +Alias (byte~) main::$44 = (byte) main::$207 +Successful SSA optimization Pass2AliasElimination +Added new block during phi lifting spline_8segB::@3(between spline_8segB::@1 and spline_8segB::@1) +Added new block during phi lifting memset::@6(between memset::@4 and memset::@4) +Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1) +Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) +Added new block during phi lifting bitmap_init::@11(between bitmap_init::@6 and bitmap_init::@5) +Added new block during phi lifting bitmap_init::@12(between bitmap_init::@5 and bitmap_init::@6) +Added new block during phi lifting bitmap_line::@25(between bitmap_line::@8 and bitmap_line::@7) +Added new block during phi lifting bitmap_line::@26(between bitmap_line::@21 and bitmap_line::@8) +Added new block during phi lifting bitmap_line::@27(between bitmap_line::@13 and bitmap_line::@3) +Added new block during phi lifting bitmap_line::@28(between bitmap_line::@8 and bitmap_line::@3) +Added new block during phi lifting bitmap_line::@29(between bitmap_line::@13 and bitmap_line::@12) +Added new block during phi lifting bitmap_line::@30(between bitmap_line::@23 and bitmap_line::@13) +Added new block during phi lifting main::@24(between main::@5 and main::@1) +Added new block during phi lifting bitmap_plot_spline_8seg::@4(between bitmap_plot_spline_8seg::@3 and bitmap_plot_spline_8seg::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @7 +Adding NOP phi() at start of @13 +Adding NOP phi() at start of @40 +Adding NOP phi() at start of @43 +Adding NOP phi() at start of @44 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main::@19 +Adding NOP phi() at start of main::@20 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001_@return +Adding NOP phi() at start of main::@17 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::toD0181_@return +Adding NOP phi() at start of main::@23 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@21 +Adding NOP phi() at start of main::@22 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of bitmap_line::@22 +Adding NOP phi() at start of bitmap_line::@20 +Adding NOP phi() at start of sgn_u16::@3 +Adding NOP phi() at start of sgn_u16::@1 +Adding NOP phi() at start of bitmap_clear +Adding NOP phi() at start of bitmap_clear::@1 +Adding NOP phi() at start of bitmap_clear::@2 +Adding NOP phi() at start of memset::@1 +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@3 +Adding NOP phi() at start of bitmap_init::@4 +CALL GRAPH +Calls in [] to main:6 +Calls in [main] to bitmap_init:119 bitmap_clear:121 bitmap_line:150 spline_8segB:165 bitmap_plot_spline_8seg:167 +Calls in [bitmap_plot_spline_8seg] to bitmap_line:186 +Calls in [bitmap_line] to abs_u16:196 abs_u16:201 sgn_u16:208 sgn_u16:213 bitmap_plot:226 bitmap_plot:243 bitmap_plot:260 bitmap_plot:281 +Calls in [bitmap_clear] to memset:356 memset:358 + +Created 43 initial phi equivalence classes +Coalesced [146] bitmap_line::x#21 ← bitmap_line::x1#0 +Coalesced [147] bitmap_line::y#21 ← bitmap_line::y1#0 +Coalesced [148] bitmap_line::x2#14 ← bitmap_line::x2#0 +Coalesced [149] bitmap_line::y2#14 ← bitmap_line::y2#0 +Coalesced [156] main::i#11 ← main::i#1 +Not coalescing [157] main::current_x#9 ← main::current_x#8 +Not coalescing [158] main::current_y#9 ← main::current_y#8 +Coalesced [172] bitmap_plot_spline_8seg::current_x#3 ← bitmap_plot_spline_8seg::current_x#0 +Coalesced [173] bitmap_plot_spline_8seg::current_y#3 ← bitmap_plot_spline_8seg::current_y#0 +Coalesced [182] bitmap_line::x#20 ← bitmap_line::x1#1 +Coalesced [183] bitmap_line::y#20 ← bitmap_line::y1#1 +Coalesced [184] bitmap_line::x2#13 ← bitmap_line::x2#1 +Coalesced [185] bitmap_line::y2#13 ← bitmap_line::y2#1 +Coalesced [190] bitmap_plot_spline_8seg::n#4 ← bitmap_plot_spline_8seg::n#1 +Not coalescing [191] bitmap_plot_spline_8seg::current_x#4 ← bitmap_plot_spline_8seg::to_x#0 +Not coalescing [192] bitmap_plot_spline_8seg::current_y#4 ← bitmap_plot_spline_8seg::to_y#0 +Coalesced [195] abs_u16::w#5 ← abs_u16::w#0 +Coalesced [200] abs_u16::w#6 ← abs_u16::w#1 +Coalesced [207] sgn_u16::w#3 ← sgn_u16::w#0 +Coalesced [212] sgn_u16::w#4 ← sgn_u16::w#1 +Coalesced [218] bitmap_line::y#22 ← bitmap_line::y#0 +Coalesced [219] bitmap_line::x#22 ← bitmap_line::x#0 +Coalesced [220] bitmap_line::e#7 ← bitmap_line::e#0 +Coalesced [224] bitmap_plot::y#8 ← bitmap_plot::y#1 +Coalesced [225] bitmap_plot::x#8 ← bitmap_plot::x#1 +Coalesced [232] bitmap_line::x#25 ← bitmap_line::x#1 +Coalesced [233] bitmap_line::e#10 ← bitmap_line::e#2 +Coalesced [236] bitmap_line::y#25 ← bitmap_line::y#1 +Coalesced [237] bitmap_line::x#27 ← bitmap_line::x#12 +Coalesced [241] bitmap_plot::y#6 ← bitmap_plot::y#2 +Coalesced [242] bitmap_plot::x#6 ← bitmap_plot::x#2 +Coalesced [246] bitmap_line::y#23 ← bitmap_line::y#1 +Coalesced [247] bitmap_line::x#23 ← bitmap_line::x#12 +Coalesced [248] bitmap_line::e#8 ← bitmap_line::e#6 +Coalesced (already) [249] bitmap_line::x#24 ← bitmap_line::x#13 +Coalesced [250] bitmap_line::e#9 ← bitmap_line::e#1 +Coalesced [252] bitmap_line::y#27 ← bitmap_line::y#0 +Coalesced [253] bitmap_line::x#29 ← bitmap_line::x#0 +Coalesced [254] bitmap_line::e1#8 ← bitmap_line::e1#0 +Coalesced [258] bitmap_plot::y#5 ← bitmap_plot::y#3 +Coalesced [259] bitmap_plot::x#5 ← bitmap_plot::x#3 +Coalesced [266] bitmap_line::y#28 ← bitmap_line::y#2 +Coalesced [267] bitmap_line::e1#9 ← bitmap_line::e1#2 +Coalesced [270] bitmap_line::y#24 ← bitmap_line::y#13 +Coalesced [271] bitmap_line::x#26 ← bitmap_line::x#15 +Coalesced (already) [272] bitmap_line::y#26 ← bitmap_line::y#13 +Coalesced (already) [273] bitmap_line::x#28 ← bitmap_line::x#15 +Coalesced [274] bitmap_line::e1#7 ← bitmap_line::e1#6 +Coalesced (already) [275] bitmap_line::y#29 ← bitmap_line::y#15 +Coalesced [276] bitmap_line::e1#10 ← bitmap_line::e1#1 +Coalesced [279] bitmap_plot::y#7 ← bitmap_plot::y#0 +Coalesced [280] bitmap_plot::x#7 ← bitmap_plot::x#0 +Coalesced [302] abs_u16::return#9 ← abs_u16::w#2 +Coalesced [306] abs_u16::return#8 ← abs_u16::return#2 +Coalesced [325] spline_8segB::p_x#4 ← spline_8segB::p_x#0 +Coalesced [326] spline_8segB::p_y#4 ← spline_8segB::p_y#0 +Coalesced [327] spline_8segB::i_x#3 ← spline_8segB::i_x#0 +Coalesced [328] spline_8segB::i_y#3 ← spline_8segB::i_y#0 +Coalesced [350] spline_8segB::p_x#5 ← spline_8segB::p_x#1 +Coalesced [351] spline_8segB::p_y#5 ← spline_8segB::p_y#1 +Coalesced [352] spline_8segB::n#3 ← spline_8segB::n#1 +Coalesced [353] spline_8segB::i_x#4 ← spline_8segB::i_x#1 +Coalesced [354] spline_8segB::i_y#4 ← spline_8segB::i_y#1 +Coalesced [371] memset::dst#4 ← memset::dst#1 +Coalesced [391] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [396] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [397] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [398] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [399] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [400] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [401] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced down to 34 phi equivalence classes +Culled Empty Block (label) @1 +Culled Empty Block (label) @7 +Culled Empty Block (label) @13 +Culled Empty Block (label) @40 +Culled Empty Block (label) @44 +Culled Empty Block (label) main::@20 +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return +Culled Empty Block (label) main::@17 +Culled Empty Block (label) main::toD0181_@return +Culled Empty Block (label) main::@23 +Culled Empty Block (label) main::@11 +Culled Empty Block (label) main::@22 +Culled Empty Block (label) main::@2 +Culled Empty Block (label) bitmap_line::@28 +Culled Empty Block (label) bitmap_line::@22 +Culled Empty Block (label) bitmap_line::@25 +Culled Empty Block (label) bitmap_line::@26 +Culled Empty Block (label) bitmap_line::@27 +Culled Empty Block (label) bitmap_line::@29 +Culled Empty Block (label) bitmap_line::@30 +Culled Empty Block (label) bitmap_line::@20 +Culled Empty Block (label) sgn_u16::@3 +Culled Empty Block (label) abs_u16::@3 +Culled Empty Block (label) spline_8segB::@3 +Culled Empty Block (label) bitmap_clear::@2 +Culled Empty Block (label) memset::@1 +Culled Empty Block (label) memset::@6 +Culled Empty Block (label) bitmap_init::@3 +Culled Empty Block (label) bitmap_init::@4 +Culled Empty Block (label) bitmap_init::@11 +Culled Empty Block (label) bitmap_init::@12 +Culled Empty Block (label) bitmap_init::@9 +Renumbering block @43 to @1 +Renumbering block memset::@2 to memset::@1 +Renumbering block memset::@4 to memset::@2 +Renumbering block bitmap_init::@5 to bitmap_init::@3 +Renumbering block bitmap_init::@6 to bitmap_init::@4 +Renumbering block bitmap_init::@7 to bitmap_init::@5 +Renumbering block bitmap_init::@10 to bitmap_init::@6 +Renumbering block bitmap_line::@6 to bitmap_line::@5 +Renumbering block bitmap_line::@7 to bitmap_line::@6 +Renumbering block bitmap_line::@8 to bitmap_line::@7 +Renumbering block bitmap_line::@9 to bitmap_line::@8 +Renumbering block bitmap_line::@12 to bitmap_line::@9 +Renumbering block bitmap_line::@13 to bitmap_line::@10 +Renumbering block bitmap_line::@14 to bitmap_line::@11 +Renumbering block bitmap_line::@16 to bitmap_line::@12 +Renumbering block bitmap_line::@17 to bitmap_line::@13 +Renumbering block bitmap_line::@18 to bitmap_line::@14 +Renumbering block bitmap_line::@19 to bitmap_line::@15 +Renumbering block bitmap_line::@21 to bitmap_line::@16 +Renumbering block bitmap_line::@23 to bitmap_line::@17 +Renumbering block bitmap_line::@24 to bitmap_line::@18 +Renumbering block main::@3 to main::@2 +Renumbering block main::@5 to main::@3 +Renumbering block main::@6 to main::@4 +Renumbering block main::@7 to main::@5 +Renumbering block main::@12 to main::@6 +Renumbering block main::@18 to main::@7 +Renumbering block main::@19 to main::@8 +Renumbering block main::@21 to main::@9 +Renumbering block main::@24 to main::@10 +Renumbering block bitmap_plot_spline_8seg::@3 to bitmap_plot_spline_8seg::@2 +Renumbering block bitmap_plot_spline_8seg::@4 to bitmap_plot_spline_8seg::@3 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main::@8 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@9 +Adding NOP phi() at start of sgn_u16::@1 +Adding NOP phi() at start of bitmap_clear +Adding NOP phi() at start of bitmap_clear::@1 +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@6 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO + [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c + [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 + [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 + [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 + [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 + [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 + [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 + [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 + [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b + [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b + [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 + [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 + [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 + [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 + [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 + [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 + [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 + [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 + [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 + [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 + [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a + [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f + [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 + [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 + [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 + [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a + [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 + [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 + [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 + [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 + [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d + [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d + [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f + [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 + [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 + [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 + [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 + [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d + [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 + [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 + [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 + [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 + [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e + [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 + [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 + [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 + [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e + [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d + [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e + [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 + [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 + [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b + [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 + [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 + [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae + [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO + [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 + [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 + [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 + [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 + [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO + [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c + [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 + [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 + [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 + [114] call bitmap_init + to:main::@8 +main::@8: scope:[main] from main + [115] phi() + [116] call bitmap_clear + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@8 + [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [118] phi() + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [120] phi() + to:main::@7 +main::@7: scope:[main] from main::toD0181 + [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + to:main::@1 +main::@1: scope:[main] from main::@10 main::@7 + [123] (signed word) main::current_y#4 ← phi( main::@7/(signed byte) 0 main::@10/(signed word~) main::current_y#9 ) + [123] (signed word) main::current_x#4 ← phi( main::@7/(signed byte) 0 main::@10/(signed word~) main::current_x#9 ) + [123] (byte) main::i#10 ← phi( main::@7/(byte) 0 main::@10/(byte) main::i#1 ) + [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 + [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 + [126] (byte) main::segment_type#0 ← *((byte*)(const struct Segment[$15]) letter_c#0 + (byte~) main::$44) + [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) + [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) + [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) + [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) + [131] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@1 + [132] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 + [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 + [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 + [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 + [137] call bitmap_line + to:main::@3 +main::@3: scope:[main] from main::@1 main::@5 main::@9 + [138] (byte) main::i#1 ← ++ (byte) main::i#10 + [139] if((byte) main::i#1!=(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT+(byte) 1) goto main::@10 + to:main::@6 +main::@6: scope:[main] from main::@3 main::@6 + [140] *((const byte*) PRINT_SCREEN#0+(word) $3e7) ← ++ *((const byte*) PRINT_SCREEN#0+(word) $3e7) + to:main::@6 +main::@10: scope:[main] from main::@3 + [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 + [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 + to:main::@1 +main::@2: scope:[main] from main::@4 + [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 + [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 + [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 + [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 + [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 + [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 + [149] call spline_8segB + to:main::@9 +main::@9: scope:[main] from main::@2 + [150] phi() + [151] call bitmap_plot_spline_8seg + to:main::@3 +bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from main::@9 + [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) + [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) + to:bitmap_plot_spline_8seg::@1 +bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@3 + [154] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@3/(signed word~) bitmap_plot_spline_8seg::current_y#4 ) + [154] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@3/(signed word~) bitmap_plot_spline_8seg::current_x#4 ) + [154] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@3/(byte) bitmap_plot_spline_8seg::n#1 ) + [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 + [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) + [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) + [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 + [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 + [162] call bitmap_line + to:bitmap_plot_spline_8seg::@2 +bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1 + [163] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 + [164] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@3 + to:bitmap_plot_spline_8seg::@return +bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 + [165] return + to:@return +bitmap_plot_spline_8seg::@3: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 + [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 + [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 + to:bitmap_plot_spline_8seg::@1 +bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 main::@5 + [168] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#1 main::@5/(word) bitmap_line::y2#0 ) + [168] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#1 main::@5/(word) bitmap_line::x2#0 ) + [168] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 main::@5/(word) bitmap_line::y1#0 ) + [168] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 main::@5/(word) bitmap_line::x1#0 ) + [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [170] call abs_u16 + [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + to:bitmap_line::@12 +bitmap_line::@12: scope:[bitmap_line] from bitmap_line + [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 + [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [174] call abs_u16 + [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + to:bitmap_line::@13 +bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 + [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + to:bitmap_line::@18 +bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 + [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + to:bitmap_line::@1 +bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 + [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [180] call sgn_u16 + [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + to:bitmap_line::@14 +bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 + [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [184] call sgn_u16 + [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + to:bitmap_line::@15 +bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 + [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + to:bitmap_line::@5 +bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 + [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + to:bitmap_line::@6 +bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 + [189] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [189] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [189] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [192] call bitmap_plot + to:bitmap_line::@16 +bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 + [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 + to:bitmap_line::@8 +bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 + [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + to:bitmap_line::@7 +bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 + [198] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [198] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 + to:bitmap_line::@3 +bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 + [200] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [200] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [203] call bitmap_plot + to:bitmap_line::@return +bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 + [204] return + to:@return +bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 + [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + to:bitmap_line::@9 +bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 + [206] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [206] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) + [206] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) + [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [209] call bitmap_plot + to:bitmap_line::@17 +bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 + [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + to:bitmap_line::@11 +bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 + [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + to:bitmap_line::@10 +bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 + [215] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [215] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 + to:bitmap_line::@3 +bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 + [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 + [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + [219] call bitmap_plot + to:bitmap_line::@return +bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 + [220] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 ) + [220] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 ) + [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 + [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 + [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [226] return + to:@return +sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 + [227] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [229] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [230] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 + to:sgn_u16::@return +sgn_u16::@1: scope:[sgn_u16] from sgn_u16 + [231] phi() + to:sgn_u16::@return +sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 + [232] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [233] return + to:@return +abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 + [234] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [236] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [237] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 + to:abs_u16::@return +abs_u16::@1: scope:[abs_u16] from abs_u16 + [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + to:abs_u16::@return +abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 + [239] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) + [240] return + to:@return +spline_8segB: scope:[spline_8segB] from main::@2 + [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 + [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 + [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 + [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 + [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 + [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 + [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 + [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 + [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 + [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 + [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 + [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 + [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 + [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 + [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 + [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 + [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 + [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 + to:spline_8segB::@1 +spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1 + [259] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) + [259] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) + [259] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) + [259] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + [259] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 + [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 + [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 + [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 + [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 + [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 + [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 + [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 + [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 + [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 + [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 + [271] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 + [272] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 + to:spline_8segB::@2 +spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1 + [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 + [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 + [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 + [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 + [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 + [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 + to:spline_8segB::@return +spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2 + [279] return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@8 + [280] phi() + [281] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [282] phi() + [283] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [284] return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + [285] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [285] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) BITMAP_SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP_GRAPHICS#0 ) + [285] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [286] if((word) memset::num#2<=(byte) 0) goto memset::@return + to:memset::@1 +memset::@1: scope:[memset] from memset + [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + to:memset::@2 +memset::@2: scope:[memset] from memset::@1 memset::@2 + [289] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [291] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + to:memset::@return +memset::@return: scope:[memset] from memset memset::@2 + [293] return + to:@return +bitmap_init: scope:[bitmap_init] from main + [294] phi() + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [295] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [295] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [296] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [297] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [298] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 + [299] phi() + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 + [300] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [301] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [302] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [303] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP_GRAPHICS#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [303] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [305] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [306] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [307] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [308] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [309] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [310] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 + [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 + [312] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [313] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [314] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [315] return + to:@return + +null depth in calling loop Loop head: bitmap_plot_spline_8seg::@1 tails: bitmap_plot_spline_8seg::@3 blocks: bitmap_plot_spline_8seg::@3 bitmap_plot_spline_8seg::@2 bitmap_plot_spline_8seg::@1 in scope bitmap_line + +VARIABLE REGISTER WEIGHTS +(byte*) BITMAP_GRAPHICS +(byte*) BITMAP_SCREEN +(byte) BLACK +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) D011 +(byte*) D018 +(byte*) PRINT_SCREEN +(struct SplineVector16[9]) SPLINE_8SEG +(struct SplineVector16) Segment::to +(byte) Segment::type +(struct SplineVector16) Segment::via +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(byte) VIC_DEN +(byte) VIC_RSEL +(byte) WHITE +(word()) abs_u16((word) abs_u16::w) +(byte~) abs_u16::$0 4.0 +(byte~) abs_u16::$1 4.0 +(word) abs_u16::return +(word) abs_u16::return#0 4.0 +(word) abs_u16::return#1 4.0 +(word) abs_u16::return#2 4.0 +(word) abs_u16::return#4 2.0 +(word) abs_u16::w +(word) abs_u16::w#0 4.0 +(word) abs_u16::w#1 4.0 +(word) abs_u16::w#2 2.5 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 22.0 +(byte~) bitmap_init::$5 22.0 +(byte~) bitmap_init::$6 22.0 +(byte~) bitmap_init::$7 5.5 +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 11.0 +(byte) bitmap_init::bits#3 16.5 +(byte) bitmap_init::bits#4 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 16.5 +(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 16.5 +(byte) bitmap_init::y#2 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 22.0 +(byte*) bitmap_init::yoffs#2 6.875 +(byte*) bitmap_init::yoffs#4 11.0 +(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) +(word) bitmap_line::dx +(word) bitmap_line::dx#0 7.775 +(word) bitmap_line::dy +(word) bitmap_line::dy#0 8.638888888888888 +(word) bitmap_line::e +(word) bitmap_line::e#0 4.0 +(word) bitmap_line::e#1 134.66666666666666 +(word) bitmap_line::e#2 202.0 +(word) bitmap_line::e#3 40.8 +(word) bitmap_line::e#6 151.5 +(word) bitmap_line::e1 +(word) bitmap_line::e1#0 4.0 +(word) bitmap_line::e1#1 134.66666666666666 +(word) bitmap_line::e1#2 202.0 +(word) bitmap_line::e1#3 40.8 +(word) bitmap_line::e1#6 151.5 +(word) bitmap_line::sx +(word) bitmap_line::sx#0 6.800000000000001 +(word) bitmap_line::sy +(word) bitmap_line::sy#0 7.846153846153847 +(word) bitmap_line::x +(word) bitmap_line::x#0 5.304347826086959 +(word) bitmap_line::x#1 101.0 +(word) bitmap_line::x#12 202.0 +(word) bitmap_line::x#13 58.00000000000001 +(word) bitmap_line::x#15 57.714285714285715 +(word) bitmap_line::x#6 102.0 +(word) bitmap_line::x#7 76.25 +(word) bitmap_line::x1 +(word) bitmap_line::x1#0 5.5 +(word) bitmap_line::x1#1 50.5 +(word) bitmap_line::x2 +(word) bitmap_line::x2#0 11.0 +(word) bitmap_line::x2#1 101.0 +(word) bitmap_line::x2#10 6.78125 +(word) bitmap_line::y +(word) bitmap_line::y#0 5.454545454545454 +(word) bitmap_line::y#1 57.714285714285715 +(word) bitmap_line::y#13 202.0 +(word) bitmap_line::y#15 43.57142857142858 +(word) bitmap_line::y#2 101.0 +(word) bitmap_line::y#4 51.0 +(word) bitmap_line::y#7 202.0 +(word) bitmap_line::y1 +(word) bitmap_line::y1#0 7.333333333333333 +(word) bitmap_line::y1#1 67.33333333333333 +(word) bitmap_line::y2 +(word) bitmap_line::y2#0 22.0 +(word) bitmap_line::y2#1 202.0 +(word) bitmap_line::y2#11 6.78125 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$2 4.0 +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 1.0 +(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 4.0 +(word) bitmap_plot::x#1 202.0 +(word) bitmap_plot::x#2 4.0 +(word) bitmap_plot::x#3 202.0 +(word) bitmap_plot::x#4 52.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 2.0 +(byte) bitmap_plot::y#1 101.0 +(byte) bitmap_plot::y#2 2.0 +(byte) bitmap_plot::y#3 101.0 +(byte) bitmap_plot::y#4 210.0 +(byte[$100]) bitmap_plot_bit +(void()) bitmap_plot_spline_8seg() +(byte~) bitmap_plot_spline_8seg::$7 151.5 +(signed word) bitmap_plot_spline_8seg::current_x +(signed word) bitmap_plot_spline_8seg::current_x#0 2.0 +(signed word) bitmap_plot_spline_8seg::current_x#2 25.75 +(signed word~) bitmap_plot_spline_8seg::current_x#4 101.0 +(signed word) bitmap_plot_spline_8seg::current_y +(signed word) bitmap_plot_spline_8seg::current_y#0 4.0 +(signed word) bitmap_plot_spline_8seg::current_y#2 20.599999999999998 +(signed word~) bitmap_plot_spline_8seg::current_y#4 202.0 +(byte) bitmap_plot_spline_8seg::n +(byte) bitmap_plot_spline_8seg::n#1 75.75 +(byte) bitmap_plot_spline_8seg::n#2 33.666666666666664 +(signed word) bitmap_plot_spline_8seg::to_x +(signed word) bitmap_plot_spline_8seg::to_x#0 22.444444444444443 +(signed word) bitmap_plot_spline_8seg::to_y +(signed word) bitmap_plot_spline_8seg::to_y#0 22.444444444444443 +(byte[$100]) bitmap_plot_yhi +(byte[$100]) bitmap_plot_ylo +(byte*) bitmap_screen +(struct Segment[$15]) letter_c +(void()) main() +(byte) main::$206 22.0 +(byte~) main::$44 13.2 +(signed word) main::current_x +(signed word) main::current_x#4 2.2 +(signed word) main::current_x#8 1.5 +(signed word~) main::current_x#9 11.0 +(signed word) main::current_y +(signed word) main::current_y#4 1.8333333333333333 +(signed word) main::current_y#8 1.5 +(signed word~) main::current_y#9 22.0 +(byte) main::i +(byte) main::i#1 8.25 +(byte) main::i#10 1.8333333333333333 +(signed word) main::segment_to_x +(signed word) main::segment_to_y +(byte) main::segment_type +(byte) main::segment_type#0 5.5 +(signed word) main::segment_via_x +(signed word) main::segment_via_x#0 3.6666666666666665 +(signed word) main::segment_via_y +(signed word) main::segment_via_y#0 3.6666666666666665 +(signed word) main::to1_x +(signed word) main::to1_y +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(byte*) main::toD0181_screen +(signed word) main::to_x +(signed word) main::to_y +(signed word) main::via_x +(signed word) main::via_y +(byte~) main::vicSelectGfxBank1_$0 +(byte*) main::vicSelectGfxBank1_gfx +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(byte) memset::c +(byte) memset::c#3 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 16.5 +(byte*) memset::dst#2 17.5 +(byte*~) memset::dst#3 4.0 +(byte*) memset::end +(byte*) memset::end#0 2.1666666666666665 +(word) memset::num +(word) memset::num#2 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 +(word()) sgn_u16((word) sgn_u16::w) +(byte~) sgn_u16::$0 4.0 +(byte~) sgn_u16::$1 4.0 +(word) sgn_u16::return +(word) sgn_u16::return#0 4.0 +(word) sgn_u16::return#1 4.0 +(word) sgn_u16::return#4 1.0 +(word) sgn_u16::w +(word) sgn_u16::w#0 4.0 +(word) sgn_u16::w#1 4.0 +(word) sgn_u16::w#2 6.0 +(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) +(signed word~) spline_8segB::$0 4.0 +(signed word~) spline_8segB::$1 4.0 +(signed word~) spline_8segB::$10 4.0 +(signed word~) spline_8segB::$12 4.0 +(signed word~) spline_8segB::$18 4.0 +(signed word~) spline_8segB::$19 1.3333333333333333 +(signed word~) spline_8segB::$20 4.0 +(signed word~) spline_8segB::$21 2.0 +(signed word~) spline_8segB::$22 202.0 +(signed word~) spline_8segB::$23 50.5 +(signed word~) spline_8segB::$24 202.0 +(signed word~) spline_8segB::$25 67.33333333333333 +(signed word~) spline_8segB::$3 4.0 +(byte~) spline_8segB::$31 151.5 +(signed word~) spline_8segB::$4 4.0 +(signed word~) spline_8segB::$6 4.0 +(signed word~) spline_8segB::$8 4.0 +(signed word) spline_8segB::a_x +(signed word) spline_8segB::a_x#0 0.5 +(signed word) spline_8segB::a_y +(signed word) spline_8segB::a_y#0 0.6000000000000001 +(signed word) spline_8segB::b_x +(signed word) spline_8segB::b_x#0 1.3333333333333333 +(signed word) spline_8segB::b_y +(signed word) spline_8segB::b_y#0 1.3333333333333333 +(signed word) spline_8segB::i_x +(signed word) spline_8segB::i_x#0 0.5714285714285714 +(signed word) spline_8segB::i_x#1 50.5 +(signed word) spline_8segB::i_x#2 30.5 +(signed word) spline_8segB::i_y +(signed word) spline_8segB::i_y#0 0.8 +(signed word) spline_8segB::i_y#1 67.33333333333333 +(signed word) spline_8segB::i_y#2 27.727272727272727 +(signed word) spline_8segB::j_x +(signed word) spline_8segB::j_x#0 5.722222222222221 +(signed word) spline_8segB::j_y +(signed word) spline_8segB::j_y#0 6.0588235294117645 +(byte) spline_8segB::n +(byte) spline_8segB::n#1 151.5 +(byte) spline_8segB::n#2 25.25 +(struct SplineVector16) spline_8segB::p0 +(signed word) spline_8segB::p0_x +(signed word) spline_8segB::p0_x#0 0.7727272727272728 +(signed word) spline_8segB::p0_y +(signed word) spline_8segB::p0_y#0 0.7727272727272728 +(struct SplineVector16) spline_8segB::p1 +(signed word) spline_8segB::p1_x +(signed word) spline_8segB::p1_x#0 1.5 +(signed word) spline_8segB::p1_y +(signed word) spline_8segB::p1_y#0 1.3636363636363638 +(struct SplineVector16) spline_8segB::p2 +(signed word) spline_8segB::p2_x +(signed word) spline_8segB::p2_x#0 4.333333333333333 +(signed word) spline_8segB::p2_y +(signed word) spline_8segB::p2_y#0 2.6 +(signed word) spline_8segB::p_x +(signed word) spline_8segB::p_x#0 2.0 +(signed word) spline_8segB::p_x#1 34.0 +(signed word) spline_8segB::p_x#2 38.125 +(signed word) spline_8segB::p_y +(signed word) spline_8segB::p_y#0 4.0 +(signed word) spline_8segB::p_y#1 29.142857142857142 +(signed word) spline_8segB::p_y#2 33.888888888888886 + +Initial phi equivalence classes +[ main::i#10 main::i#1 ] +[ main::current_x#4 main::current_x#9 ] +[ main::current_y#4 main::current_y#9 ] +[ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +[ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] +[ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] +[ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +[ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +[ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] +[ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +[ sgn_u16::return#4 ] +[ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] +[ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] +[ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] +[ spline_8segB::n#2 spline_8segB::n#1 ] +[ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] +[ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#3 ] +[ memset::dst#2 memset::dst#3 memset::dst#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Added variable main::$206 to zero page equivalence class [ main::$206 ] +Added variable main::$44 to zero page equivalence class [ main::$44 ] +Added variable main::segment_type#0 to zero page equivalence class [ main::segment_type#0 ] +Added variable main::current_x#8 to zero page equivalence class [ main::current_x#8 ] +Added variable main::current_y#8 to zero page equivalence class [ main::current_y#8 ] +Added variable main::segment_via_x#0 to zero page equivalence class [ main::segment_via_x#0 ] +Added variable main::segment_via_y#0 to zero page equivalence class [ main::segment_via_y#0 ] +Added variable spline_8segB::p0_x#0 to zero page equivalence class [ spline_8segB::p0_x#0 ] +Added variable spline_8segB::p0_y#0 to zero page equivalence class [ spline_8segB::p0_y#0 ] +Added variable spline_8segB::p1_x#0 to zero page equivalence class [ spline_8segB::p1_x#0 ] +Added variable spline_8segB::p1_y#0 to zero page equivalence class [ spline_8segB::p1_y#0 ] +Added variable spline_8segB::p2_x#0 to zero page equivalence class [ spline_8segB::p2_x#0 ] +Added variable spline_8segB::p2_y#0 to zero page equivalence class [ spline_8segB::p2_y#0 ] +Added variable bitmap_plot_spline_8seg::$7 to zero page equivalence class [ bitmap_plot_spline_8seg::$7 ] +Added variable bitmap_plot_spline_8seg::to_x#0 to zero page equivalence class [ bitmap_plot_spline_8seg::to_x#0 ] +Added variable bitmap_plot_spline_8seg::to_y#0 to zero page equivalence class [ bitmap_plot_spline_8seg::to_y#0 ] +Added variable abs_u16::return#0 to zero page equivalence class [ abs_u16::return#0 ] +Added variable bitmap_line::dx#0 to zero page equivalence class [ bitmap_line::dx#0 ] +Added variable abs_u16::return#1 to zero page equivalence class [ abs_u16::return#1 ] +Added variable bitmap_line::dy#0 to zero page equivalence class [ bitmap_line::dy#0 ] +Added variable sgn_u16::return#0 to zero page equivalence class [ sgn_u16::return#0 ] +Added variable bitmap_line::sx#0 to zero page equivalence class [ bitmap_line::sx#0 ] +Added variable sgn_u16::return#1 to zero page equivalence class [ sgn_u16::return#1 ] +Added variable bitmap_line::sy#0 to zero page equivalence class [ bitmap_line::sy#0 ] +Added variable bitmap_plot::plotter#0 to zero page equivalence class [ bitmap_plot::plotter#0 ] +Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ] +Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ] +Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ] +Added variable sgn_u16::$0 to zero page equivalence class [ sgn_u16::$0 ] +Added variable sgn_u16::$1 to zero page equivalence class [ sgn_u16::$1 ] +Added variable abs_u16::$0 to zero page equivalence class [ abs_u16::$0 ] +Added variable abs_u16::$1 to zero page equivalence class [ abs_u16::$1 ] +Added variable spline_8segB::$0 to zero page equivalence class [ spline_8segB::$0 ] +Added variable spline_8segB::$1 to zero page equivalence class [ spline_8segB::$1 ] +Added variable spline_8segB::a_x#0 to zero page equivalence class [ spline_8segB::a_x#0 ] +Added variable spline_8segB::$3 to zero page equivalence class [ spline_8segB::$3 ] +Added variable spline_8segB::$4 to zero page equivalence class [ spline_8segB::$4 ] +Added variable spline_8segB::a_y#0 to zero page equivalence class [ spline_8segB::a_y#0 ] +Added variable spline_8segB::$6 to zero page equivalence class [ spline_8segB::$6 ] +Added variable spline_8segB::b_x#0 to zero page equivalence class [ spline_8segB::b_x#0 ] +Added variable spline_8segB::$8 to zero page equivalence class [ spline_8segB::$8 ] +Added variable spline_8segB::b_y#0 to zero page equivalence class [ spline_8segB::b_y#0 ] +Added variable spline_8segB::$10 to zero page equivalence class [ spline_8segB::$10 ] +Added variable spline_8segB::$12 to zero page equivalence class [ spline_8segB::$12 ] +Added variable spline_8segB::j_x#0 to zero page equivalence class [ spline_8segB::j_x#0 ] +Added variable spline_8segB::j_y#0 to zero page equivalence class [ spline_8segB::j_y#0 ] +Added variable spline_8segB::$22 to zero page equivalence class [ spline_8segB::$22 ] +Added variable spline_8segB::$23 to zero page equivalence class [ spline_8segB::$23 ] +Added variable spline_8segB::$24 to zero page equivalence class [ spline_8segB::$24 ] +Added variable spline_8segB::$25 to zero page equivalence class [ spline_8segB::$25 ] +Added variable spline_8segB::$31 to zero page equivalence class [ spline_8segB::$31 ] +Added variable spline_8segB::$18 to zero page equivalence class [ spline_8segB::$18 ] +Added variable spline_8segB::$19 to zero page equivalence class [ spline_8segB::$19 ] +Added variable spline_8segB::$20 to zero page equivalence class [ spline_8segB::$20 ] +Added variable spline_8segB::$21 to zero page equivalence class [ spline_8segB::$21 ] +Added variable memset::end#0 to zero page equivalence class [ memset::end#0 ] +Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ] +Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ] +Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ] +Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ] +Complete equivalence classes +[ main::i#10 main::i#1 ] +[ main::current_x#4 main::current_x#9 ] +[ main::current_y#4 main::current_y#9 ] +[ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +[ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] +[ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] +[ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +[ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +[ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] +[ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +[ sgn_u16::return#4 ] +[ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] +[ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] +[ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] +[ spline_8segB::n#2 spline_8segB::n#1 ] +[ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] +[ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#3 ] +[ memset::dst#2 memset::dst#3 memset::dst#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +[ main::$206 ] +[ main::$44 ] +[ main::segment_type#0 ] +[ main::current_x#8 ] +[ main::current_y#8 ] +[ main::segment_via_x#0 ] +[ main::segment_via_y#0 ] +[ spline_8segB::p0_x#0 ] +[ spline_8segB::p0_y#0 ] +[ spline_8segB::p1_x#0 ] +[ spline_8segB::p1_y#0 ] +[ spline_8segB::p2_x#0 ] +[ spline_8segB::p2_y#0 ] +[ bitmap_plot_spline_8seg::$7 ] +[ bitmap_plot_spline_8seg::to_x#0 ] +[ bitmap_plot_spline_8seg::to_y#0 ] +[ abs_u16::return#0 ] +[ bitmap_line::dx#0 ] +[ abs_u16::return#1 ] +[ bitmap_line::dy#0 ] +[ sgn_u16::return#0 ] +[ bitmap_line::sx#0 ] +[ sgn_u16::return#1 ] +[ bitmap_line::sy#0 ] +[ bitmap_plot::plotter#0 ] +[ bitmap_plot::$1 ] +[ bitmap_plot::plotter#1 ] +[ bitmap_plot::$2 ] +[ sgn_u16::$0 ] +[ sgn_u16::$1 ] +[ abs_u16::$0 ] +[ abs_u16::$1 ] +[ spline_8segB::$0 ] +[ spline_8segB::$1 ] +[ spline_8segB::a_x#0 ] +[ spline_8segB::$3 ] +[ spline_8segB::$4 ] +[ spline_8segB::a_y#0 ] +[ spline_8segB::$6 ] +[ spline_8segB::b_x#0 ] +[ spline_8segB::$8 ] +[ spline_8segB::b_y#0 ] +[ spline_8segB::$10 ] +[ spline_8segB::$12 ] +[ spline_8segB::j_x#0 ] +[ spline_8segB::j_y#0 ] +[ spline_8segB::$22 ] +[ spline_8segB::$23 ] +[ spline_8segB::$24 ] +[ spline_8segB::$25 ] +[ spline_8segB::$31 ] +[ spline_8segB::$18 ] +[ spline_8segB::$19 ] +[ spline_8segB::$20 ] +[ spline_8segB::$21 ] +[ memset::end#0 ] +[ bitmap_init::$7 ] +[ bitmap_init::$4 ] +[ bitmap_init::$5 ] +[ bitmap_init::$6 ] +Allocated zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +Allocated zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 ] +Allocated zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 ] +Allocated zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Allocated zp ZP_WORD:8 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] +Allocated zp ZP_WORD:10 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] +Allocated zp ZP_WORD:12 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +Allocated zp ZP_WORD:14 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +Allocated zp ZP_WORD:16 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +Allocated zp ZP_WORD:18 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] +Allocated zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] +Allocated zp ZP_WORD:22 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +Allocated zp ZP_BYTE:24 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +Allocated zp ZP_WORD:25 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] +Allocated zp ZP_WORD:27 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +Allocated zp ZP_WORD:29 [ sgn_u16::return#4 ] +Allocated zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] +Allocated zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] +Allocated zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] +Allocated zp ZP_BYTE:37 [ spline_8segB::n#2 spline_8segB::n#1 ] +Allocated zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] +Allocated zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] +Allocated zp ZP_WORD:42 [ memset::num#2 ] +Allocated zp ZP_WORD:44 [ memset::str#3 ] +Allocated zp ZP_BYTE:46 [ memset::c#3 ] +Allocated zp ZP_WORD:47 [ memset::dst#2 memset::dst#3 memset::dst#1 ] +Allocated zp ZP_BYTE:49 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +Allocated zp ZP_BYTE:50 [ bitmap_init::x#2 bitmap_init::x#1 ] +Allocated zp ZP_BYTE:51 [ bitmap_init::y#2 bitmap_init::y#1 ] +Allocated zp ZP_WORD:52 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated zp ZP_BYTE:54 [ main::$206 ] +Allocated zp ZP_BYTE:55 [ main::$44 ] +Allocated zp ZP_BYTE:56 [ main::segment_type#0 ] +Allocated zp ZP_WORD:57 [ main::current_x#8 ] +Allocated zp ZP_WORD:59 [ main::current_y#8 ] +Allocated zp ZP_WORD:61 [ main::segment_via_x#0 ] +Allocated zp ZP_WORD:63 [ main::segment_via_y#0 ] +Allocated zp ZP_WORD:65 [ spline_8segB::p0_x#0 ] +Allocated zp ZP_WORD:67 [ spline_8segB::p0_y#0 ] +Allocated zp ZP_WORD:69 [ spline_8segB::p1_x#0 ] +Allocated zp ZP_WORD:71 [ spline_8segB::p1_y#0 ] +Allocated zp ZP_WORD:73 [ spline_8segB::p2_x#0 ] +Allocated zp ZP_WORD:75 [ spline_8segB::p2_y#0 ] +Allocated zp ZP_BYTE:77 [ bitmap_plot_spline_8seg::$7 ] +Allocated zp ZP_WORD:78 [ bitmap_plot_spline_8seg::to_x#0 ] +Allocated zp ZP_WORD:80 [ bitmap_plot_spline_8seg::to_y#0 ] +Allocated zp ZP_WORD:82 [ abs_u16::return#0 ] +Allocated zp ZP_WORD:84 [ bitmap_line::dx#0 ] +Allocated zp ZP_WORD:86 [ abs_u16::return#1 ] +Allocated zp ZP_WORD:88 [ bitmap_line::dy#0 ] +Allocated zp ZP_WORD:90 [ sgn_u16::return#0 ] +Allocated zp ZP_WORD:92 [ bitmap_line::sx#0 ] +Allocated zp ZP_WORD:94 [ sgn_u16::return#1 ] +Allocated zp ZP_WORD:96 [ bitmap_line::sy#0 ] +Allocated zp ZP_WORD:98 [ bitmap_plot::plotter#0 ] +Allocated zp ZP_WORD:100 [ bitmap_plot::$1 ] +Allocated zp ZP_WORD:102 [ bitmap_plot::plotter#1 ] +Allocated zp ZP_BYTE:104 [ bitmap_plot::$2 ] +Allocated zp ZP_BYTE:105 [ sgn_u16::$0 ] +Allocated zp ZP_BYTE:106 [ sgn_u16::$1 ] +Allocated zp ZP_BYTE:107 [ abs_u16::$0 ] +Allocated zp ZP_BYTE:108 [ abs_u16::$1 ] +Allocated zp ZP_WORD:109 [ spline_8segB::$0 ] +Allocated zp ZP_WORD:111 [ spline_8segB::$1 ] +Allocated zp ZP_WORD:113 [ spline_8segB::a_x#0 ] +Allocated zp ZP_WORD:115 [ spline_8segB::$3 ] +Allocated zp ZP_WORD:117 [ spline_8segB::$4 ] +Allocated zp ZP_WORD:119 [ spline_8segB::a_y#0 ] +Allocated zp ZP_WORD:121 [ spline_8segB::$6 ] +Allocated zp ZP_WORD:123 [ spline_8segB::b_x#0 ] +Allocated zp ZP_WORD:125 [ spline_8segB::$8 ] +Allocated zp ZP_WORD:127 [ spline_8segB::b_y#0 ] +Allocated zp ZP_WORD:129 [ spline_8segB::$10 ] +Allocated zp ZP_WORD:131 [ spline_8segB::$12 ] +Allocated zp ZP_WORD:133 [ spline_8segB::j_x#0 ] +Allocated zp ZP_WORD:135 [ spline_8segB::j_y#0 ] +Allocated zp ZP_WORD:137 [ spline_8segB::$22 ] +Allocated zp ZP_WORD:139 [ spline_8segB::$23 ] +Allocated zp ZP_WORD:141 [ spline_8segB::$24 ] +Allocated zp ZP_WORD:143 [ spline_8segB::$25 ] +Allocated zp ZP_BYTE:145 [ spline_8segB::$31 ] +Allocated zp ZP_WORD:146 [ spline_8segB::$18 ] +Allocated zp ZP_WORD:148 [ spline_8segB::$19 ] +Allocated zp ZP_WORD:150 [ spline_8segB::$20 ] +Allocated zp ZP_WORD:152 [ spline_8segB::$21 ] +Allocated zp ZP_WORD:154 [ memset::end#0 ] +Allocated zp ZP_BYTE:156 [ bitmap_init::$7 ] +Allocated zp ZP_BYTE:157 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:158 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:159 [ bitmap_init::$6 ] + +INITIAL ASM + // File Comments +// Show a few simple splines using the splines library + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + .const MOVE_TO = 0 + .const SPLINE_TO = 1 + .const LINE_TO = 2 + .const SIZEOF_STRUCT_SEGMENT = 9 + .const SIZEOF_STRUCT_SPLINEVECTOR16 = 4 + .const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2 + .const OFFSET_STRUCT_SEGMENT_TO = 1 + .const OFFSET_STRUCT_SEGMENT_VIA = 5 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + .const WHITE = 1 + .label PRINT_SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label _44 = $37 + .label segment_type = $38 + .label segment_via_x = $3d + .label segment_via_y = $3f + .label i = 2 + .label current_x = 3 + .label current_y = 5 + .label current_x_8 = $39 + .label current_y_8 = $3b + .label _206 = $36 + // [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO -- _deref_pbuc1=vbuc2 + lda #MOVE_TO + sta letter_c + // [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1 + // [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1 + // [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+1*SIZEOF_STRUCT_SEGMENT + // [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 -- _deref_pwsc1=vwsc2 + lda #<$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT + lda #>$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT+1 + // [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 -- _deref_pwsc1=vwsc2 + lda #<$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT+1 + // [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 -- _deref_pwsc1=vwsc2 + lda #<$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+2*SIZEOF_STRUCT_SEGMENT + // [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b -- _deref_pwsc1=vwsc2 + lda #<$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT + lda #>$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT+1 + // [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b -- _deref_pwsc1=vwsc2 + lda #<$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT + lda #>$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT+1 + // [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+3*SIZEOF_STRUCT_SEGMENT + // [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 -- _deref_pwsc1=vwsc2 + lda #<$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT + lda #>$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT+1 + // [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 -- _deref_pwsc1=vwsc2 + lda #<$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 -- _deref_pwsc1=vwsc2 + lda #<$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT + lda #>$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT+1 + // [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+4*SIZEOF_STRUCT_SEGMENT + // [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT+1 + // [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 -- _deref_pwsc1=vwsc2 + lda #<$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT+1 + // [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 -- _deref_pwsc1=vwsc2 + lda #<$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+5*SIZEOF_STRUCT_SEGMENT + // [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 -- _deref_pwsc1=vwsc2 + lda #<$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT + lda #>$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT+1 + // [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 -- _deref_pwsc1=vwsc2 + lda #<$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT+1 + // [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+6*SIZEOF_STRUCT_SEGMENT + // [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 -- _deref_pwsc1=vwsc2 + lda #<$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT + lda #>$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT+1 + // [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a -- _deref_pwsc1=vwsc2 + lda #<$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT + lda #>$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT+1 + // [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+7*SIZEOF_STRUCT_SEGMENT + // [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT+1 + // [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT+1 + // [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+8*SIZEOF_STRUCT_SEGMENT + // [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT+1 + // [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT+1 + // [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+9*SIZEOF_STRUCT_SEGMENT + // [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 -- _deref_pwsc1=vwsc2 + lda #<$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT + lda #>$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT+1 + // [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a -- _deref_pwsc1=vwsc2 + lda #<$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT+1 + // [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$a*SIZEOF_STRUCT_SEGMENT + // [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT+1 + // [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT+1 + // [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$b*SIZEOF_STRUCT_SEGMENT + // [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 -- _deref_pwsc1=vwsc2 + lda #<$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT + lda #>$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT+1 + // [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 -- _deref_pwsc1=vwsc2 + lda #<$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT + lda #>$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT+1 + // [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$c*SIZEOF_STRUCT_SEGMENT + // [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT+1 + // [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT+1 + // [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 -- _deref_pwsc1=vwsc2 + lda #<$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$d*SIZEOF_STRUCT_SEGMENT + // [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 -- _deref_pwsc1=vwsc2 + lda #<$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT + lda #>$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT+1 + // [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT+1 + // [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 -- _deref_pwsc1=vwsc2 + lda #<$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$e*SIZEOF_STRUCT_SEGMENT + // [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d -- _deref_pwsc1=vwsc2 + lda #<$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT + lda #>$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT+1 + // [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT+1 + // [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$f*SIZEOF_STRUCT_SEGMENT + // [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT+1 + // [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 -- _deref_pwsc1=vwsc2 + lda #<$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT + lda #>$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT+1 + // [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$10*SIZEOF_STRUCT_SEGMENT + // [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT+1 + // [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 -- _deref_pwsc1=vwsc2 + lda #<$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT+1 + // [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 -- _deref_pwsc1=vwsc2 + lda #<$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$11*SIZEOF_STRUCT_SEGMENT + // [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT+1 + // [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e -- _deref_pwsc1=vwsc2 + lda #<$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT+1 + // [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e -- _deref_pwsc1=vwsc2 + lda #<$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$12*SIZEOF_STRUCT_SEGMENT + // [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 -- _deref_pwsc1=vwsc2 + lda #<$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT + lda #>$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT+1 + // [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 -- _deref_pwsc1=vwsc2 + lda #<$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT + lda #>$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT+1 + // [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$13*SIZEOF_STRUCT_SEGMENT + // [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b -- _deref_pwsc1=vwsc2 + lda #<$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT + lda #>$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT+1 + // [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 -- _deref_pwsc1=vwsc2 + lda #<$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 -- _deref_pwsc1=vwsc2 + lda #<$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT + lda #>$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT+1 + // [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$14*SIZEOF_STRUCT_SEGMENT + // [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT+1 + // [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 -- _deref_pwsc1=vwsc2 + lda #<$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT+1 + // [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 -- _deref_pwsc1=vwsc2 + lda #<$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO -- _deref_pbuc1=vbuc2 + lda #LINE_TO + sta letter_c+$15*SIZEOF_STRUCT_SEGMENT + // [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT+1 + // [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT+1 + // [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // [114] call bitmap_init + // [294] phi from main to bitmap_init [phi:main->bitmap_init] + bitmap_init_from_main: + jsr bitmap_init + // [115] phi from main to main::@8 [phi:main->main::@8] + b8_from_main: + jmp b8 + // main::@8 + b8: + // [116] call bitmap_clear + // [280] phi from main::@8 to bitmap_clear [phi:main::@8->bitmap_clear] + bitmap_clear_from_b8: + jsr bitmap_clear + jmp vicSelectGfxBank1 + // main::vicSelectGfxBank1 + vicSelectGfxBank1: + // [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [118] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + // main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + // [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [120] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + // main::toD0181 + toD0181: + jmp b7 + // main::@7 + b7: + // [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // [123] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + b1_from_b7: + // [123] phi (signed word) main::current_y#4 = (signed byte) 0 [phi:main::@7->main::@1#0] -- vwsz1=vbsc1 + lda #<0 + sta current_y + lda #>0 + sta current_y+1 + // [123] phi (signed word) main::current_x#4 = (signed byte) 0 [phi:main::@7->main::@1#1] -- vwsz1=vbsc1 + lda #<0 + sta current_x + lda #>0 + sta current_x+1 + // [123] phi (byte) main::i#10 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + // main::@1 + b1: + // [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 + lda i + asl + asl + asl + sta _206 + // [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda _206 + clc + adc i + sta _44 + // [126] (byte) main::segment_type#0 ← *((byte*)(const struct Segment[$15]) letter_c#0 + (byte~) main::$44) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _44 + lda letter_c,y + sta segment_type + // [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _44 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO,y + sta current_x_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,y + sta current_x_8+1 + // [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _44 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta current_y_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta current_y_8+1 + // [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _44 + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y + sta segment_via_x + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y + sta segment_via_x+1 + // [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _44 + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta segment_via_y + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta segment_via_y+1 + // [131] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@3 -- vbuz1_eq_vbuc1_then_la1 + lda #MOVE_TO + cmp segment_type + beq b3 + jmp b4 + // main::@4 + b4: + // [132] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@2 -- vbuz1_eq_vbuc1_then_la1 + lda #SPLINE_TO + cmp segment_type + beq b2 + jmp b5 + // main::@5 + b5: + // [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 -- vwuz1=vwuz2 + lda current_x + sta bitmap_line.x1 + lda current_x+1 + sta bitmap_line.x1+1 + // [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 -- vwuz1=vwuz2 + lda current_y + sta bitmap_line.y1 + lda current_y+1 + sta bitmap_line.y1+1 + // [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 -- vwuz1=vwuz2 + lda current_x_8 + sta bitmap_line.x2 + lda current_x_8+1 + sta bitmap_line.x2+1 + // [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 -- vwuz1=vwuz2 + lda current_y_8 + sta bitmap_line.y2 + lda current_y_8+1 + sta bitmap_line.y2+1 + // [137] call bitmap_line + // [168] phi from main::@5 to bitmap_line [phi:main::@5->bitmap_line] + bitmap_line_from_b5: + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:main::@5->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:main::@5->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:main::@5->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:main::@5->bitmap_line#3] -- register_copy + jsr bitmap_line + jmp b3 + // main::@3 + b3: + // [138] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + inc i + // [139] if((byte) main::i#1!=(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT+(byte) 1) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + lda #$15*SIZEOF_STRUCT_SEGMENT/SIZEOF_STRUCT_SEGMENT+1 + cmp i + bne b10 + jmp b6 + // main::@6 + b6: + // [140] *((const byte*) PRINT_SCREEN#0+(word) $3e7) ← ++ *((const byte*) PRINT_SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc PRINT_SCREEN+$3e7 + jmp b6 + // main::@10 + b10: + // [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 -- vwsz1=vwsz2 + lda current_x_8 + sta current_x + lda current_x_8+1 + sta current_x+1 + // [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 -- vwsz1=vwsz2 + lda current_y_8 + sta current_y + lda current_y_8+1 + sta current_y+1 + // [123] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + b1_from_b10: + // [123] phi (signed word) main::current_y#4 = (signed word~) main::current_y#9 [phi:main::@10->main::@1#0] -- register_copy + // [123] phi (signed word) main::current_x#4 = (signed word~) main::current_x#9 [phi:main::@10->main::@1#1] -- register_copy + // [123] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@10->main::@1#2] -- register_copy + jmp b1 + // main::@2 + b2: + // [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 -- vwsz1=vwsz2 + lda current_x + sta spline_8segB.p0_x + lda current_x+1 + sta spline_8segB.p0_x+1 + // [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 -- vwsz1=vwsz2 + lda current_y + sta spline_8segB.p0_y + lda current_y+1 + sta spline_8segB.p0_y+1 + // [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 -- vwsz1=vwsz2 + lda segment_via_x + sta spline_8segB.p1_x + lda segment_via_x+1 + sta spline_8segB.p1_x+1 + // [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 -- vwsz1=vwsz2 + lda segment_via_y + sta spline_8segB.p1_y + lda segment_via_y+1 + sta spline_8segB.p1_y+1 + // [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 -- vwsz1=vwsz2 + lda current_x_8 + sta spline_8segB.p2_x + lda current_x_8+1 + sta spline_8segB.p2_x+1 + // [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 -- vwsz1=vwsz2 + lda current_y_8 + sta spline_8segB.p2_y + lda current_y_8+1 + sta spline_8segB.p2_y+1 + // [149] call spline_8segB + jsr spline_8segB + // [150] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + b9_from_b2: + jmp b9 + // main::@9 + b9: + // [151] call bitmap_plot_spline_8seg + jsr bitmap_plot_spline_8seg + jmp b3 +} + // bitmap_plot_spline_8seg +// Plot the spline in the SPLINE_8SEG array +bitmap_plot_spline_8seg: { + .label _7 = $4d + .label current_x = 8 + .label current_y = $a + .label to_x = $4e + .label to_y = $50 + .label n = 7 + // [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG + sta current_x + lda SPLINE_8SEG+1 + sta current_x+1 + // [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta current_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + b1_from_bitmap_plot_spline_8seg: + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + lda #1 + sta n + jmp b1 + // bitmap_plot_spline_8seg::@1 + b1: + // [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda n + asl + asl + sta _7 + // [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _7 + lda SPLINE_8SEG,y + sta to_x + lda SPLINE_8SEG+1,y + sta to_x+1 + // [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _7 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta to_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta to_y+1 + // [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 -- vwuz1=vwuz2 + lda current_x + sta bitmap_line.x1 + lda current_x+1 + sta bitmap_line.x1+1 + // [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 -- vwuz1=vwuz2 + lda current_y + sta bitmap_line.y1 + lda current_y+1 + sta bitmap_line.y1+1 + // [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 -- vwuz1=vwuz2 + lda to_x + sta bitmap_line.x2 + lda to_x+1 + sta bitmap_line.x2+1 + // [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 -- vwuz1=vwuz2 + lda to_y + sta bitmap_line.y2 + lda to_y+1 + sta bitmap_line.y2+1 + // [162] call bitmap_line + // [168] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + bitmap_line_from_b1: + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + jsr bitmap_line + jmp b2 + // bitmap_plot_spline_8seg::@2 + b2: + // [163] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + inc n + // [164] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp n + bne b3 + jmp breturn + // bitmap_plot_spline_8seg::@return + breturn: + // [165] return + rts + // bitmap_plot_spline_8seg::@3 + b3: + // [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 -- vwsz1=vwsz2 + lda to_x + sta current_x + lda to_x+1 + sta current_x+1 + // [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 -- vwsz1=vwsz2 + lda to_y + sta current_y + lda to_y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg::@3 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1] + b1_from_b3: + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word~) bitmap_plot_spline_8seg::current_y#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word~) bitmap_plot_spline_8seg::current_x#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#2] -- register_copy + jmp b1 +} + // bitmap_line +// Draw a line on the bitmap using bresenhams algorithm +// bitmap_line(word zeropage($14) x1, word zeropage($12) y1, word zeropage($c) x2, word zeropage($e) y2) +bitmap_line: { + .label x = $14 + .label y = $12 + .label dx = $54 + .label dy = $58 + .label sx = $5c + .label sy = $60 + .label e1 = $16 + .label e = $10 + .label x1 = $14 + .label y1 = $12 + .label x2 = $c + .label y2 = $e + // [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta abs_u16.w + lda x2+1 + sbc x+1 + sta abs_u16.w+1 + // [170] call abs_u16 + // [234] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + abs_u16_from_bitmap_line: + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + jsr abs_u16 + // [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 + lda abs_u16.return_4 + sta abs_u16.return + lda abs_u16.return_4+1 + sta abs_u16.return+1 + jmp b12 + // bitmap_line::@12 + b12: + // [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + lda abs_u16.return + sta dx + lda abs_u16.return+1 + sta dx+1 + // [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta abs_u16.w + lda y2+1 + sbc y+1 + sta abs_u16.w+1 + // [174] call abs_u16 + // [234] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + abs_u16_from_b12: + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + jsr abs_u16 + // [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 + lda abs_u16.return_4 + sta abs_u16.return_1 + lda abs_u16.return_4+1 + sta abs_u16.return_1+1 + jmp b13 + // bitmap_line::@13 + b13: + // [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 -- vwuz1=vwuz2 + lda abs_u16.return_1 + sta dy + lda abs_u16.return_1+1 + sta dy+1 + // [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + jmp b18 + // bitmap_line::@18 + b18: + // [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + beq b4 + !: + jmp b1 + // bitmap_line::@1 + b1: + // [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta sgn_u16.w + lda x2+1 + sbc x+1 + sta sgn_u16.w+1 + // [180] call sgn_u16 + // [227] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + sgn_u16_from_b1: + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + jsr sgn_u16 + // [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + lda sgn_u16.return_4 + sta sgn_u16.return + lda sgn_u16.return_4+1 + sta sgn_u16.return+1 + jmp b14 + // bitmap_line::@14 + b14: + // [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + lda sgn_u16.return + sta sx + lda sgn_u16.return+1 + sta sx+1 + // [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta sgn_u16.w + lda y2+1 + sbc y+1 + sta sgn_u16.w+1 + // [184] call sgn_u16 + // [227] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + sgn_u16_from_b14: + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + jsr sgn_u16 + // [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + lda sgn_u16.return_4 + sta sgn_u16.return_1 + lda sgn_u16.return_4+1 + sta sgn_u16.return_1+1 + jmp b15 + // bitmap_line::@15 + b15: + // [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 + lda sgn_u16.return_1 + sta sy + lda sgn_u16.return_1+1 + sta sy+1 + // [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + lda dy+1 + cmp dx+1 + bcc b2 + bne !+ + lda dy + cmp dx + bcc b2 + !: + jmp b5 + // bitmap_line::@5 + b5: + // [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dx+1 + lsr + sta e+1 + lda dx + ror + sta e + // [189] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + b6_from_b5: + b6_from_b7: + // [189] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [189] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [189] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + jmp b6 + // bitmap_line::@6 + b6: + // [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuz1=_byte_vwuz2 + lda y + sta bitmap_plot.y + // [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 -- vwuz1=vwuz2 + lda x + sta bitmap_plot.x + lda x+1 + sta bitmap_plot.x+1 + // [192] call bitmap_plot + // [220] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + bitmap_plot_from_b6: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp b16 + // bitmap_line::@16 + b16: + // [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e + clc + adc dx + sta e + lda e+1 + adc dx+1 + sta e+1 + // [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + lda e+1 + cmp dy+1 + bne !+ + lda e + cmp dy + beq b7_from_b16 + !: + bcc b7_from_b16 + jmp b8 + // bitmap_line::@8 + b8: + // [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e + sec + sbc dy + sta e + lda e+1 + sbc dy+1 + sta e+1 + // [198] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + b7_from_b16: + b7_from_b8: + // [198] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [198] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + jmp b7 + // bitmap_line::@7 + b7: + // [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + lda y+1 + cmp y2+1 + bne b6_from_b7 + lda y + cmp y2 + bne b6_from_b7 + // [200] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + b3_from_b10: + b3_from_b7: + // [200] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [200] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + jmp b3 + // bitmap_line::@3 + b3: + // [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuz1=_byte_vwuz2 + lda y + sta bitmap_plot.y + // [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 + lda x + sta bitmap_plot.x + lda x+1 + sta bitmap_plot.x+1 + // [203] call bitmap_plot + // [220] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + bitmap_plot_from_b3: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn + // bitmap_line::@return + breturn: + // [204] return + rts + // bitmap_line::@2 + b2: + // [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dy+1 + lsr + sta e1+1 + lda dy + ror + sta e1 + // [206] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + b9_from_b10: + b9_from_b2: + // [206] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [206] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [206] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + jmp b9 + // bitmap_line::@9 + b9: + // [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuz1=_byte_vwuz2 + lda y + sta bitmap_plot.y + // [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 -- vwuz1=vwuz2 + lda x + sta bitmap_plot.x + lda x+1 + sta bitmap_plot.x+1 + // [209] call bitmap_plot + // [220] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + bitmap_plot_from_b9: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp b17 + // bitmap_line::@17 + b17: + // [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e1 + clc + adc dy + sta e1 + lda e1+1 + adc dy+1 + sta e1+1 + // [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + lda e1+1 + cmp dx+1 + bne !+ + lda e1 + cmp dx + beq b10_from_b17 + !: + bcc b10_from_b17 + jmp b11 + // bitmap_line::@11 + b11: + // [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e1 + sec + sbc dx + sta e1 + lda e1+1 + sbc dx+1 + sta e1+1 + // [215] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + b10_from_b11: + b10_from_b17: + // [215] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [215] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + jmp b10 + // bitmap_line::@10 + b10: + // [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + lda x+1 + cmp x2+1 + bne b9_from_b10 + lda x + cmp x2 + bne b9_from_b10 + jmp b3_from_b10 + // bitmap_line::@4 + b4: + // [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuz1=_byte_vwuz2 + lda y + sta bitmap_plot.y + // [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 -- vwuz1=vwuz2 + lda x + sta bitmap_plot.x + lda x+1 + sta bitmap_plot.x+1 + // [219] call bitmap_plot + // [220] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + bitmap_plot_from_b4: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage($19) x, byte zeropage($18) y) +bitmap_plot: { + .label _1 = $64 + .label _2 = $68 + .label plotter = $62 + .label plotter_1 = $66 + .label x = $19 + .label y = $18 + // [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + ldy y + lda bitmap_plot_yhi,y + sta plotter+1 + lda bitmap_plot_ylo,y + sta plotter + // [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + lda plotter + clc + adc _1 + sta plotter_1 + lda plotter+1 + adc _1+1 + sta plotter_1+1 + // [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuz1=_lo_vwuz2 + lda x + sta _2 + // [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + ldy #0 + lda (plotter_1),y + ldy _2 + ora bitmap_plot_bit,y + ldy #0 + sta (plotter_1),y + jmp breturn + // bitmap_plot::@return + breturn: + // [226] return + rts +} + // sgn_u16 +// Get the sign of a 16-bit unsigned number treated as a signed number. +// Returns unsigned -1 if the number is +// sgn_u16(word zeropage($1b) w) +sgn_u16: { + .label _0 = $69 + .label _1 = $6a + .label w = $1b + .label return = $5a + .label return_1 = $5e + .label return_4 = $1d + // [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 + lda w+1 + sta _0 + // [229] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + lda #$80 + and _0 + sta _1 + // [230] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp _1 + bne b1_from_sgn_u16 + // [232] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + breturn_from_sgn_u16: + // [232] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<1 + sta return_4 + lda #>1 + sta return_4+1 + jmp breturn + // [231] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + b1_from_sgn_u16: + jmp b1 + // sgn_u16::@1 + b1: + // [232] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + breturn_from_b1: + // [232] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<-1 + sta return_4 + lda #>-1 + sta return_4+1 + jmp breturn + // sgn_u16::@return + breturn: + // [233] return + rts +} + // abs_u16 +// Get the absolute value of a 16-bit unsigned number treated as a signed number. +// abs_u16(word zeropage($1f) w) +abs_u16: { + .label _0 = $6b + .label _1 = $6c + .label w = $1f + .label return = $52 + .label return_1 = $56 + .label return_2 = $1f + .label return_4 = $1f + // [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 + lda w+1 + sta _0 + // [236] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + lda #$80 + and _0 + sta _1 + // [237] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp _1 + bne b1 + // [239] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + breturn_from_abs_u16: + breturn_from_b1: + // [239] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + jmp breturn + // abs_u16::@1 + b1: + // [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + sec + lda #0 + sbc return_2 + sta return_2 + lda #0 + sbc return_2+1 + sta return_2+1 + jmp breturn_from_b1 + // abs_u16::@return + breturn: + // [240] return + rts +} + // spline_8segB +// Generate a 8-segment quadratic spline using 16-bit fixed point 1/64-format math (6 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// Point values must be within [-200 ; 1ff] for the calculation to not overflow. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// spline_8segB(signed word zeropage($41) p0_x, signed word zeropage($43) p0_y, signed word zeropage($45) p1_x, signed word zeropage($47) p1_y, signed word zeropage($49) p2_x, signed word zeropage($4b) p2_y) +spline_8segB: { + .label _0 = $6d + .label _1 = $6f + .label _3 = $73 + .label _4 = $75 + .label _6 = $79 + .label _8 = $7d + .label _10 = $81 + .label _12 = $83 + .label _18 = $92 + .label _19 = $94 + .label _20 = $96 + .label _21 = $98 + .label _22 = $89 + .label _23 = $8b + .label _24 = $8d + .label _25 = $8f + .label _31 = $91 + .label a_x = $71 + .label a_y = $77 + .label b_x = $7b + .label b_y = $7f + .label i_x = $26 + .label i_y = $28 + .label j_x = $85 + .label j_y = $87 + .label p_x = $21 + .label p_y = $23 + .label n = $25 + .label p0_x = $41 + .label p0_y = $43 + .label p1_x = $45 + .label p1_y = $47 + .label p2_x = $49 + .label p2_y = $4b + // [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_x + asl + sta _0 + lda p1_x+1 + rol + sta _0+1 + // [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz3 + lda p2_x + sec + sbc _0 + sta _1 + lda p2_x+1 + sbc _0+1 + sta _1+1 + // [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_plus_vwsz3 + lda _1 + clc + adc p0_x + sta a_x + lda _1+1 + adc p0_x+1 + sta a_x+1 + // [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_y + asl + sta _3 + lda p1_y+1 + rol + sta _3+1 + // [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz3 + lda p2_y + sec + sbc _3 + sta _4 + lda p2_y+1 + sbc _3+1 + sta _4+1 + // [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_plus_vwsz3 + lda _4 + clc + adc p0_y + sta a_y + lda _4+1 + adc p0_y+1 + sta a_y+1 + // [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_minus_vwsz3 + lda p1_x + sec + sbc p0_x + sta _6 + lda p1_x+1 + sbc p0_x+1 + sta _6+1 + // [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda _6 + asl + sta b_x + lda _6+1 + rol + sta b_x+1 + // [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_minus_vwsz3 + lda p1_y + sec + sbc p0_y + sta _8 + lda p1_y+1 + sbc p0_y+1 + sta _8+1 + // [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda _8 + asl + sta b_y + lda _8+1 + rol + sta b_y+1 + // [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 + lda b_x + asl + sta _10 + lda b_x+1 + rol + sta _10+1 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + // [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz3 + lda a_x + clc + adc _10 + sta i_x + lda a_x+1 + adc _10+1 + sta i_x+1 + // [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 + lda b_y + asl + sta _12 + lda b_y+1 + rol + sta _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + // [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz3 + lda a_y + clc + adc _12 + sta i_y + lda a_y+1 + adc _12+1 + sta i_y+1 + // [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda a_x + asl + sta j_x + lda a_x+1 + rol + sta j_x+1 + // [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda a_y + asl + sta j_y + lda a_y+1 + rol + sta j_y+1 + // [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 + lda p_x + sta $ff + lda p_x+1 + sta p_x + lda #0 + bit p_x+1 + bpl !+ + lda #$ff + !: + sta p_x+1 + rol $ff + rol p_x + rol p_x+1 + rol $ff + rol p_x + rol p_x+1 + lda p0_x + asl + sta p_x + lda p0_x+1 + rol + sta p_x+1 + asl p_x + rol p_x+1 + asl p_x + rol p_x+1 + asl p_x + rol p_x+1 + asl p_x + rol p_x+1 + asl p_x + rol p_x+1 + // [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 + lda p_y + sta $ff + lda p_y+1 + sta p_y + lda #0 + bit p_y+1 + bpl !+ + lda #$ff + !: + sta p_y+1 + rol $ff + rol p_y + rol p_y+1 + rol $ff + rol p_y + rol p_y+1 + lda p0_y + asl + sta p_y + lda p0_y+1 + rol + sta p_y+1 + asl p_y + rol p_y+1 + asl p_y + rol p_y+1 + asl p_y + rol p_y+1 + asl p_y + rol p_y+1 + asl p_y + rol p_y+1 + // [259] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + b1_from_spline_8segB: + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuz1=vbuc1 + lda #0 + sta n + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + jmp b1 + // [259] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + b1_from_b1: + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + jmp b1 + // spline_8segB::@1 + b1: + // [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_x + clc + adc #<$20 + sta _22 + lda p_x+1 + adc #>$20 + sta _22+1 + // [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + lda _22 + sta $ff + lda _22+1 + sta _23 + lda #0 + bit _22+1 + bpl !+ + lda #$ff + !: + sta _23+1 + rol $ff + rol _23 + rol _23+1 + rol $ff + rol _23 + rol _23+1 + // [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_y + clc + adc #<$20 + sta _24 + lda p_y+1 + adc #>$20 + sta _24+1 + // [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + lda _24 + sta $ff + lda _24+1 + sta _25 + lda #0 + bit _24+1 + bpl !+ + lda #$ff + !: + sta _25+1 + rol $ff + rol _25 + rol _25+1 + rol $ff + rol _25 + rol _25+1 + // [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda n + asl + asl + sta _31 + // [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuz1=vwsz2 + ldy _31 + lda _23 + sta SPLINE_8SEG,y + lda _23+1 + sta SPLINE_8SEG+1,y + // [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuz1=vwsz2 + ldy _31 + lda _25 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + lda _25+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + // [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + // [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + // [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + // [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + // [271] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuz1=_inc_vbuz1 + inc n + // [272] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #8 + cmp n + bne b1_from_b1 + jmp b2 + // spline_8segB::@2 + b2: + // [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_x + clc + adc #<$20 + sta _18 + lda p_x+1 + adc #>$20 + sta _18+1 + // [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + lda _18 + sta $ff + lda _18+1 + sta _19 + lda #0 + bit _18+1 + bpl !+ + lda #$ff + !: + sta _19+1 + rol $ff + rol _19 + rol _19+1 + rol $ff + rol _19 + rol _19+1 + // [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_y + clc + adc #<$20 + sta _20 + lda p_y+1 + adc #>$20 + sta _20+1 + // [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + lda _20 + sta $ff + lda _20+1 + sta _21 + lda #0 + bit _20+1 + bpl !+ + lda #$ff + !: + sta _21+1 + rol $ff + rol _21 + rol _21+1 + rol $ff + rol _21 + rol _21+1 + // [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + lda _19 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _19+1 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + // [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + lda _21 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _21+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + jmp breturn + // spline_8segB::@return + breturn: + // [279] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // [281] call memset + // [285] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + memset_from_bitmap_clear: + // [285] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + lda #col + sta memset.c + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [282] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + jmp b1 + // bitmap_clear::@1 + b1: + // [283] call memset + // [285] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + memset_from_b1: + // [285] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + lda #0 + sta memset.c + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + jmp breturn + // bitmap_clear::@return + breturn: + // [284] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($2c) str, byte zeropage($2e) c, word zeropage($2a) num) +memset: { + .label end = $9a + .label dst = $2f + .label num = $2a + .label str = $2c + .label c = $2e + // [286] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + jmp b1 + // memset::@1 + b1: + // [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + lda str + clc + adc num + sta end + lda str+1 + adc num+1 + sta end+1 + // [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + lda str + sta dst + lda str+1 + sta dst+1 + // [289] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + b2_from_b1: + b2_from_b2: + // [289] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + jmp b2 + // memset::@2 + b2: + // [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 + lda c + ldy #0 + sta (dst),y + // [291] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2_from_b2 + lda dst + cmp end + bne b2_from_b2 + jmp breturn + // memset::@return + breturn: + // [293] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _4 = $9d + .label _5 = $9e + .label _6 = $9f + .label _7 = $9c + .label bits = $31 + .label x = $32 + .label y = $33 + .label yoffs = $34 + // [295] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + // [295] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + lda #0 + sta x + // [295] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b1 + // [295] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + // [295] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [295] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + // bitmap_init::@1 + b1: + // [296] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + lda bits + ldy x + sta bitmap_plot_bit,y + // [297] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + lsr bits + // [298] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 + lda bits + cmp #0 + bne b6_from_b1 + // [300] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + // [300] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b2 + // [299] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + b6_from_b1: + jmp b6 + // bitmap_init::@6 + b6: + // [300] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + b2_from_b6: + // [300] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + jmp b2 + // bitmap_init::@2 + b2: + // [301] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + inc x + // [302] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + lda x + cmp #0 + bne b1_from_b2 + // [303] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + // [303] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [303] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + lda #0 + sta y + jmp b3 + // [303] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + // [303] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [303] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + // bitmap_init::@3 + b3: + // [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and y + sta _7 + // [305] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + lda yoffs + sta _4 + // [306] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + lda _7 + ora _4 + sta _5 + // [307] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _5 + ldy y + sta bitmap_plot_ylo,y + // [308] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + lda yoffs+1 + sta _6 + // [309] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _6 + ldy y + sta bitmap_plot_yhi,y + // [310] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4_from_b3 + jmp b5 + // bitmap_init::@5 + b5: + // [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [312] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + b4_from_b3: + b4_from_b5: + // [312] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + jmp b4 + // bitmap_init::@4 + b4: + // [313] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + inc y + // [314] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + lda y + cmp #0 + bne b3_from_b4 + jmp breturn + // bitmap_init::@return + breturn: + // [315] return + rts +} + // File Data + // Array filled with spline segment points by splinePlot_8() + SPLINE_8SEG: .fill 4*9, 0 + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + // True type letter a + letter_c: .fill 9*$15, 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Equivalence Class zp ZP_BYTE:157 [ bitmap_init::$4 ] has ALU potential. +Statement [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 [ main::i#10 main::current_x#4 main::current_y#4 main::$206 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$206 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +Statement [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 ] ) always clobbers reg byte a +Statement [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ main::$44 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ main::segment_type#0 ] +Statement [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 ] ) always clobbers reg byte a +Statement [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 ] ) always clobbers reg byte a +Statement [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 ] ) always clobbers reg byte a +Statement [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 bitmap_line::x1#0 ] ( main:2 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 bitmap_line::x1#0 ] ) always clobbers reg byte a +Statement [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a +Statement [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a +Statement [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a +Statement [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 [ main::i#1 main::current_x#9 main::current_y#8 ] ( main:2 [ main::i#1 main::current_x#9 main::current_y#8 ] ) always clobbers reg byte a +Statement [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 [ main::i#1 main::current_x#9 main::current_y#9 ] ( main:2 [ main::i#1 main::current_x#9 main::current_y#9 ] ) always clobbers reg byte a +Statement [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 ] ) always clobbers reg byte a +Statement [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ) always clobbers reg byte a +Statement [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ) always clobbers reg byte a +Statement [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ) always clobbers reg byte a +Statement [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ) always clobbers reg byte a +Statement [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ) always clobbers reg byte a +Statement [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::current_x#0 ] ) always clobbers reg byte a +Statement [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ) always clobbers reg byte a +Statement [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Statement [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 bitmap_plot_spline_8seg::to_x#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 bitmap_plot_spline_8seg::to_x#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:77 [ bitmap_plot_spline_8seg::$7 ] +Statement [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a +Statement [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 ] ) always clobbers reg byte a +Statement [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 ] ) always clobbers reg byte a +Statement [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 ] ) always clobbers reg byte a +Statement [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 bitmap_line::y2#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 bitmap_line::y2#1 ] ) always clobbers reg byte a +Statement [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 [ bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::to_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a +Statement [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 [ bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::current_y#4 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::current_y#4 ] ) always clobbers reg byte a +Statement [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ) always clobbers reg byte a +Statement [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ) always clobbers reg byte a +Statement [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ) always clobbers reg byte a +Statement [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a +Statement [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a +Statement [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a +Statement [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a +Statement [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a +Statement [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a +Statement [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a +Statement [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a +Statement [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a +Statement [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +Statement [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a +Statement [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a +Statement [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a +Statement [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a +Statement [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#6 bitmap_plot::y#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a +Statement [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::y#2 bitmap_plot::x#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a +Statement [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a +Statement [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a +Statement [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a +Statement [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a +Statement [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a +Statement [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a +Statement [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a +Statement [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_plot::y#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::y#0 bitmap_plot::x#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Statement [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:137::sgn_u16:180 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::sgn_u16:180 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:137::sgn_u16:184 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::sgn_u16:184 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a +Statement [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:137::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:137::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a +Statement [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:137::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::bitmap_line:137::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a +Statement [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ) always clobbers reg byte a +Statement [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ) always clobbers reg byte a +Statement [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ) always clobbers reg byte a +Statement [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ) always clobbers reg byte a +Statement [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ) always clobbers reg byte a +Statement [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ) always clobbers reg byte a +Statement [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ) always clobbers reg byte a +Statement [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ) always clobbers reg byte a +Statement [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ) always clobbers reg byte a +Statement [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ) always clobbers reg byte a +Statement [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ) always clobbers reg byte a +Statement [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ) always clobbers reg byte a +Statement [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ) always clobbers reg byte a +Statement [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ) always clobbers reg byte a +Statement [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ) always clobbers reg byte a +Statement [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ) always clobbers reg byte a +Statement [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ) always clobbers reg byte a +Statement [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ) always clobbers reg byte a +Statement [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ spline_8segB::n#2 spline_8segB::n#1 ] +Statement [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ) always clobbers reg byte a +Statement [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ) always clobbers reg byte a +Statement [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ) always clobbers reg byte a +Statement [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a +Statement [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:145 [ spline_8segB::$31 ] +Statement [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ) always clobbers reg byte a +Statement [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ) always clobbers reg byte a +Statement [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ) always clobbers reg byte a +Statement [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ) always clobbers reg byte a +Statement [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ) always clobbers reg byte a +Statement [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p_y#1 spline_8segB::$18 ] ) always clobbers reg byte a +Statement [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p_y#1 spline_8segB::$19 ] ) always clobbers reg byte a +Statement [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$19 spline_8segB::$20 ] ) always clobbers reg byte a +Statement [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$19 spline_8segB::$21 ] ) always clobbers reg byte a +Statement [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$21 ] ) always clobbers reg byte a +Statement [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 ] ) always clobbers reg byte a +Statement [286] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:116::memset:281 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:116::memset:283 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ memset::c#3 ] +Statement [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:116::memset:281 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:116::memset:283 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:46 [ memset::c#3 ] +Statement [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:114 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ bitmap_init::y#2 bitmap_init::y#1 ] +Statement [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 [ main::i#10 main::current_x#4 main::current_y#4 main::$206 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$206 ] ) always clobbers reg byte a +Statement [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 ] ) always clobbers reg byte a +Statement [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 ] ) always clobbers reg byte a +Statement [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 ] ) always clobbers reg byte a +Statement [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::$44 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 ] ) always clobbers reg byte a +Statement [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) [ main::i#10 main::current_x#4 main::current_y#4 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 ] ( main:2 [ main::i#10 main::current_x#4 main::current_y#4 main::segment_type#0 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 ] ) always clobbers reg byte a +Statement [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 bitmap_line::x1#0 ] ( main:2 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 bitmap_line::x1#0 ] ) always clobbers reg byte a +Statement [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a +Statement [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a +Statement [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a +Statement [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 [ main::i#1 main::current_x#9 main::current_y#8 ] ( main:2 [ main::i#1 main::current_x#9 main::current_y#8 ] ) always clobbers reg byte a +Statement [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 [ main::i#1 main::current_x#9 main::current_y#9 ] ( main:2 [ main::i#1 main::current_x#9 main::current_y#9 ] ) always clobbers reg byte a +Statement [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 ] ( main:2 [ main::i#10 main::current_y#4 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 ] ) always clobbers reg byte a +Statement [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_x#0 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ) always clobbers reg byte a +Statement [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 main::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ) always clobbers reg byte a +Statement [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ) always clobbers reg byte a +Statement [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ) always clobbers reg byte a +Statement [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( main:2 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ) always clobbers reg byte a +Statement [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) [ bitmap_plot_spline_8seg::current_x#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::current_x#0 ] ) always clobbers reg byte a +Statement [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ) always clobbers reg byte a +Statement [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 ] ) always clobbers reg byte a +Statement [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 bitmap_plot_spline_8seg::to_x#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$7 bitmap_plot_spline_8seg::to_x#0 ] ) always clobbers reg byte a +Statement [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a +Statement [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 ] ) always clobbers reg byte a +Statement [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 ] ) always clobbers reg byte a +Statement [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 ] ) always clobbers reg byte a +Statement [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 bitmap_line::y2#1 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#1 bitmap_line::y2#1 ] ) always clobbers reg byte a +Statement [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 [ bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::to_y#0 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a +Statement [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 [ bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::current_y#4 ] ( main:2::bitmap_plot_spline_8seg:151 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#1 bitmap_plot_spline_8seg::current_x#4 bitmap_plot_spline_8seg::current_y#4 ] ) always clobbers reg byte a +Statement [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ) always clobbers reg byte a +Statement [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ) always clobbers reg byte a +Statement [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ) always clobbers reg byte a +Statement [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a +Statement [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a +Statement [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a +Statement [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a +Statement [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a +Statement [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a +Statement [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a +Statement [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a +Statement [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a +Statement [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a +Statement [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a +Statement [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a +Statement [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a +Statement [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a +Statement [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a +Statement [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a +Statement [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#6 bitmap_plot::y#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a +Statement [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::y#2 bitmap_plot::x#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a +Statement [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a +Statement [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a +Statement [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a +Statement [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a +Statement [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a +Statement [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a +Statement [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a +Statement [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a +Statement [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_plot::y#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:137 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::y#0 bitmap_plot::x#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:137::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:192 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:137::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:203 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] main:2::bitmap_line:137::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:209 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:137::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::bitmap_plot:219 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 ] ) always clobbers reg byte a reg byte y +Statement [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:137::sgn_u16:180 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::sgn_u16:180 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:137::sgn_u16:184 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::sgn_u16:184 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a +Statement [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:137::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:137::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a +Statement [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:137::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:170 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] main:2::bitmap_line:137::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] main:2::bitmap_plot_spline_8seg:151::bitmap_line:162::abs_u16:174 [ main::i#10 main::current_x#8 main::current_y#8 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::to_x#0 bitmap_plot_spline_8seg::to_y#0 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a +Statement [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ) always clobbers reg byte a +Statement [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ) always clobbers reg byte a +Statement [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ) always clobbers reg byte a +Statement [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ) always clobbers reg byte a +Statement [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ) always clobbers reg byte a +Statement [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ) always clobbers reg byte a +Statement [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ) always clobbers reg byte a +Statement [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ) always clobbers reg byte a +Statement [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ) always clobbers reg byte a +Statement [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ) always clobbers reg byte a +Statement [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ) always clobbers reg byte a +Statement [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ) always clobbers reg byte a +Statement [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ) always clobbers reg byte a +Statement [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ) always clobbers reg byte a +Statement [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ) always clobbers reg byte a +Statement [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ) always clobbers reg byte a +Statement [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ) always clobbers reg byte a +Statement [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ) always clobbers reg byte a +Statement [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ) always clobbers reg byte a +Statement [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ) always clobbers reg byte a +Statement [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ) always clobbers reg byte a +Statement [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ) always clobbers reg byte a +Statement [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a +Statement [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ) always clobbers reg byte a +Statement [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ) always clobbers reg byte a +Statement [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ) always clobbers reg byte a +Statement [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ) always clobbers reg byte a +Statement [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ) always clobbers reg byte a +Statement [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ) always clobbers reg byte a +Statement [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p_y#1 spline_8segB::$18 ] ) always clobbers reg byte a +Statement [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::p_y#1 spline_8segB::$19 ] ) always clobbers reg byte a +Statement [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$19 spline_8segB::$20 ] ) always clobbers reg byte a +Statement [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$19 spline_8segB::$21 ] ) always clobbers reg byte a +Statement [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 spline_8segB::$21 ] ) always clobbers reg byte a +Statement [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( main:2::spline_8segB:149 [ main::i#10 main::current_x#8 main::current_y#8 ] ) always clobbers reg byte a +Statement [286] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:116::memset:281 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:116::memset:283 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Statement [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:116::memset:281 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:116::memset:283 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:116::memset:281 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:116::memset:283 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:114 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:114 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#10 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 ] : zp ZP_WORD:3 , +Potential registers zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 ] : zp ZP_WORD:5 , +Potential registers zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] : zp ZP_BYTE:7 , reg byte x , +Potential registers zp ZP_WORD:8 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] : zp ZP_WORD:8 , +Potential registers zp ZP_WORD:10 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] : zp ZP_WORD:10 , +Potential registers zp ZP_WORD:12 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:14 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] : zp ZP_WORD:14 , +Potential registers zp ZP_WORD:16 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:18 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp ZP_WORD:18 , +Potential registers zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp ZP_WORD:20 , +Potential registers zp ZP_WORD:22 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp ZP_WORD:22 , +Potential registers zp ZP_BYTE:24 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:25 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_WORD:27 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp ZP_WORD:27 , +Potential registers zp ZP_WORD:29 [ sgn_u16::return#4 ] : zp ZP_WORD:29 , +Potential registers zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp ZP_WORD:31 , +Potential registers zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] : zp ZP_WORD:33 , +Potential registers zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] : zp ZP_WORD:35 , +Potential registers zp ZP_BYTE:37 [ spline_8segB::n#2 spline_8segB::n#1 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] : zp ZP_WORD:38 , +Potential registers zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] : zp ZP_WORD:40 , +Potential registers zp ZP_WORD:42 [ memset::num#2 ] : zp ZP_WORD:42 , +Potential registers zp ZP_WORD:44 [ memset::str#3 ] : zp ZP_WORD:44 , +Potential registers zp ZP_BYTE:46 [ memset::c#3 ] : zp ZP_BYTE:46 , reg byte x , +Potential registers zp ZP_WORD:47 [ memset::dst#2 memset::dst#3 memset::dst#1 ] : zp ZP_WORD:47 , +Potential registers zp ZP_BYTE:49 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:52 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:52 , +Potential registers zp ZP_BYTE:54 [ main::$206 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ main::$44 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ main::segment_type#0 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:57 [ main::current_x#8 ] : zp ZP_WORD:57 , +Potential registers zp ZP_WORD:59 [ main::current_y#8 ] : zp ZP_WORD:59 , +Potential registers zp ZP_WORD:61 [ main::segment_via_x#0 ] : zp ZP_WORD:61 , +Potential registers zp ZP_WORD:63 [ main::segment_via_y#0 ] : zp ZP_WORD:63 , +Potential registers zp ZP_WORD:65 [ spline_8segB::p0_x#0 ] : zp ZP_WORD:65 , +Potential registers zp ZP_WORD:67 [ spline_8segB::p0_y#0 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ spline_8segB::p1_x#0 ] : zp ZP_WORD:69 , +Potential registers zp ZP_WORD:71 [ spline_8segB::p1_y#0 ] : zp ZP_WORD:71 , +Potential registers zp ZP_WORD:73 [ spline_8segB::p2_x#0 ] : zp ZP_WORD:73 , +Potential registers zp ZP_WORD:75 [ spline_8segB::p2_y#0 ] : zp ZP_WORD:75 , +Potential registers zp ZP_BYTE:77 [ bitmap_plot_spline_8seg::$7 ] : zp ZP_BYTE:77 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:78 [ bitmap_plot_spline_8seg::to_x#0 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ bitmap_plot_spline_8seg::to_y#0 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ abs_u16::return#0 ] : zp ZP_WORD:82 , +Potential registers zp ZP_WORD:84 [ bitmap_line::dx#0 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ abs_u16::return#1 ] : zp ZP_WORD:86 , +Potential registers zp ZP_WORD:88 [ bitmap_line::dy#0 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ sgn_u16::return#0 ] : zp ZP_WORD:90 , +Potential registers zp ZP_WORD:92 [ bitmap_line::sx#0 ] : zp ZP_WORD:92 , +Potential registers zp ZP_WORD:94 [ sgn_u16::return#1 ] : zp ZP_WORD:94 , +Potential registers zp ZP_WORD:96 [ bitmap_line::sy#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ bitmap_plot::plotter#0 ] : zp ZP_WORD:98 , +Potential registers zp ZP_WORD:100 [ bitmap_plot::$1 ] : zp ZP_WORD:100 , +Potential registers zp ZP_WORD:102 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:102 , +Potential registers zp ZP_BYTE:104 [ bitmap_plot::$2 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ sgn_u16::$0 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ sgn_u16::$1 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ abs_u16::$0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ abs_u16::$1 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:109 [ spline_8segB::$0 ] : zp ZP_WORD:109 , +Potential registers zp ZP_WORD:111 [ spline_8segB::$1 ] : zp ZP_WORD:111 , +Potential registers zp ZP_WORD:113 [ spline_8segB::a_x#0 ] : zp ZP_WORD:113 , +Potential registers zp ZP_WORD:115 [ spline_8segB::$3 ] : zp ZP_WORD:115 , +Potential registers zp ZP_WORD:117 [ spline_8segB::$4 ] : zp ZP_WORD:117 , +Potential registers zp ZP_WORD:119 [ spline_8segB::a_y#0 ] : zp ZP_WORD:119 , +Potential registers zp ZP_WORD:121 [ spline_8segB::$6 ] : zp ZP_WORD:121 , +Potential registers zp ZP_WORD:123 [ spline_8segB::b_x#0 ] : zp ZP_WORD:123 , +Potential registers zp ZP_WORD:125 [ spline_8segB::$8 ] : zp ZP_WORD:125 , +Potential registers zp ZP_WORD:127 [ spline_8segB::b_y#0 ] : zp ZP_WORD:127 , +Potential registers zp ZP_WORD:129 [ spline_8segB::$10 ] : zp ZP_WORD:129 , +Potential registers zp ZP_WORD:131 [ spline_8segB::$12 ] : zp ZP_WORD:131 , +Potential registers zp ZP_WORD:133 [ spline_8segB::j_x#0 ] : zp ZP_WORD:133 , +Potential registers zp ZP_WORD:135 [ spline_8segB::j_y#0 ] : zp ZP_WORD:135 , +Potential registers zp ZP_WORD:137 [ spline_8segB::$22 ] : zp ZP_WORD:137 , +Potential registers zp ZP_WORD:139 [ spline_8segB::$23 ] : zp ZP_WORD:139 , +Potential registers zp ZP_WORD:141 [ spline_8segB::$24 ] : zp ZP_WORD:141 , +Potential registers zp ZP_WORD:143 [ spline_8segB::$25 ] : zp ZP_WORD:143 , +Potential registers zp ZP_BYTE:145 [ spline_8segB::$31 ] : zp ZP_BYTE:145 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:146 [ spline_8segB::$18 ] : zp ZP_WORD:146 , +Potential registers zp ZP_WORD:148 [ spline_8segB::$19 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ spline_8segB::$20 ] : zp ZP_WORD:150 , +Potential registers zp ZP_WORD:152 [ spline_8segB::$21 ] : zp ZP_WORD:152 , +Potential registers zp ZP_WORD:154 [ memset::end#0 ] : zp ZP_WORD:154 , +Potential registers zp ZP_BYTE:156 [ bitmap_init::$7 ] : zp ZP_BYTE:156 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:157 [ bitmap_init::$4 ] : zp ZP_BYTE:157 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:158 [ bitmap_init::$5 ] : zp ZP_BYTE:158 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:159 [ bitmap_init::$6 ] : zp ZP_BYTE:159 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [bitmap_line] 737.41: zp ZP_WORD:18 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 658.27: zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 532.97: zp ZP_WORD:16 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp ZP_WORD:22 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 230.78: zp ZP_WORD:14 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] 118.78: zp ZP_WORD:12 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] 8.64: zp ZP_WORD:88 [ bitmap_line::dy#0 ] 7.85: zp ZP_WORD:96 [ bitmap_line::sy#0 ] 7.78: zp ZP_WORD:84 [ bitmap_line::dx#0 ] 6.8: zp ZP_WORD:92 [ bitmap_line::sx#0 ] +Uplift Scope [spline_8segB] 202: zp ZP_WORD:137 [ spline_8segB::$22 ] 202: zp ZP_WORD:141 [ spline_8segB::$24 ] 176.75: zp ZP_BYTE:37 [ spline_8segB::n#2 spline_8segB::n#1 ] 151.5: zp ZP_BYTE:145 [ spline_8segB::$31 ] 95.86: zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] 81.57: zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] 74.12: zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] 67.33: zp ZP_WORD:143 [ spline_8segB::$25 ] 67.03: zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] 50.5: zp ZP_WORD:139 [ spline_8segB::$23 ] 6.06: zp ZP_WORD:135 [ spline_8segB::j_y#0 ] 5.72: zp ZP_WORD:133 [ spline_8segB::j_x#0 ] 4.33: zp ZP_WORD:73 [ spline_8segB::p2_x#0 ] 4: zp ZP_WORD:109 [ spline_8segB::$0 ] 4: zp ZP_WORD:111 [ spline_8segB::$1 ] 4: zp ZP_WORD:115 [ spline_8segB::$3 ] 4: zp ZP_WORD:117 [ spline_8segB::$4 ] 4: zp ZP_WORD:121 [ spline_8segB::$6 ] 4: zp ZP_WORD:125 [ spline_8segB::$8 ] 4: zp ZP_WORD:129 [ spline_8segB::$10 ] 4: zp ZP_WORD:131 [ spline_8segB::$12 ] 4: zp ZP_WORD:146 [ spline_8segB::$18 ] 4: zp ZP_WORD:150 [ spline_8segB::$20 ] 2.6: zp ZP_WORD:75 [ spline_8segB::p2_y#0 ] 2: zp ZP_WORD:152 [ spline_8segB::$21 ] 1.5: zp ZP_WORD:69 [ spline_8segB::p1_x#0 ] 1.36: zp ZP_WORD:71 [ spline_8segB::p1_y#0 ] 1.33: zp ZP_WORD:123 [ spline_8segB::b_x#0 ] 1.33: zp ZP_WORD:127 [ spline_8segB::b_y#0 ] 1.33: zp ZP_WORD:148 [ spline_8segB::$19 ] 0.77: zp ZP_WORD:65 [ spline_8segB::p0_x#0 ] 0.77: zp ZP_WORD:67 [ spline_8segB::p0_y#0 ] 0.6: zp ZP_WORD:119 [ spline_8segB::a_y#0 ] 0.5: zp ZP_WORD:113 [ spline_8segB::a_x#0 ] +Uplift Scope [bitmap_plot] 464.5: zp ZP_WORD:25 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 416: zp ZP_BYTE:24 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 4: zp ZP_WORD:100 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:104 [ bitmap_plot::$2 ] 3: zp ZP_WORD:102 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:98 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_plot_spline_8seg] 226.6: zp ZP_WORD:10 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] 151.5: zp ZP_BYTE:77 [ bitmap_plot_spline_8seg::$7 ] 128.75: zp ZP_WORD:8 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] 109.42: zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] 22.44: zp ZP_WORD:78 [ bitmap_plot_spline_8seg::to_x#0 ] 22.44: zp ZP_WORD:80 [ bitmap_plot_spline_8seg::to_y#0 ] +Uplift Scope [bitmap_init] 39.88: zp ZP_WORD:52 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:49 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp ZP_BYTE:50 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:51 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:157 [ bitmap_init::$4 ] 22: zp ZP_BYTE:158 [ bitmap_init::$5 ] 22: zp ZP_BYTE:159 [ bitmap_init::$6 ] 5.5: zp ZP_BYTE:156 [ bitmap_init::$7 ] +Uplift Scope [main] 23.83: zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 ] 22: zp ZP_BYTE:54 [ main::$206 ] 13.2: zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 ] 13.2: zp ZP_BYTE:55 [ main::$44 ] 10.08: zp ZP_BYTE:2 [ main::i#10 main::i#1 ] 5.5: zp ZP_BYTE:56 [ main::segment_type#0 ] 3.67: zp ZP_WORD:61 [ main::segment_via_x#0 ] 3.67: zp ZP_WORD:63 [ main::segment_via_y#0 ] 1.5: zp ZP_WORD:57 [ main::current_x#8 ] 1.5: zp ZP_WORD:59 [ main::current_y#8 ] +Uplift Scope [memset] 38: zp ZP_WORD:47 [ memset::dst#2 memset::dst#3 memset::dst#1 ] 2.17: zp ZP_WORD:154 [ memset::end#0 ] 2: zp ZP_WORD:42 [ memset::num#2 ] 1.38: zp ZP_BYTE:46 [ memset::c#3 ] 0: zp ZP_WORD:44 [ memset::str#3 ] +Uplift Scope [abs_u16] 16.5: zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 4: zp ZP_WORD:82 [ abs_u16::return#0 ] 4: zp ZP_WORD:86 [ abs_u16::return#1 ] 4: zp ZP_BYTE:107 [ abs_u16::$0 ] 4: zp ZP_BYTE:108 [ abs_u16::$1 ] +Uplift Scope [sgn_u16] 14: zp ZP_WORD:27 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 4: zp ZP_WORD:90 [ sgn_u16::return#0 ] 4: zp ZP_WORD:94 [ sgn_u16::return#1 ] 4: zp ZP_BYTE:105 [ sgn_u16::$0 ] 4: zp ZP_BYTE:106 [ sgn_u16::$1 ] 1: zp ZP_WORD:29 [ sgn_u16::return#4 ] +Uplift Scope [SplineVector16] +Uplift Scope [SplineVector32] +Uplift Scope [bitmap_clear] +Uplift Scope [SegmentType] +Uplift Scope [Segment] +Uplift Scope [] + +Uplifting [bitmap_line] best 81970 combination zp ZP_WORD:18 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp ZP_WORD:16 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp ZP_WORD:22 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp ZP_WORD:14 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] zp ZP_WORD:12 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] zp ZP_WORD:88 [ bitmap_line::dy#0 ] zp ZP_WORD:96 [ bitmap_line::sy#0 ] zp ZP_WORD:84 [ bitmap_line::dx#0 ] zp ZP_WORD:92 [ bitmap_line::sx#0 ] +Uplifting [spline_8segB] best 80270 combination zp ZP_WORD:137 [ spline_8segB::$22 ] zp ZP_WORD:141 [ spline_8segB::$24 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] reg byte x [ spline_8segB::$31 ] zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] zp ZP_WORD:143 [ spline_8segB::$25 ] zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] zp ZP_WORD:139 [ spline_8segB::$23 ] zp ZP_WORD:135 [ spline_8segB::j_y#0 ] zp ZP_WORD:133 [ spline_8segB::j_x#0 ] zp ZP_WORD:73 [ spline_8segB::p2_x#0 ] zp ZP_WORD:109 [ spline_8segB::$0 ] zp ZP_WORD:111 [ spline_8segB::$1 ] zp ZP_WORD:115 [ spline_8segB::$3 ] zp ZP_WORD:117 [ spline_8segB::$4 ] zp ZP_WORD:121 [ spline_8segB::$6 ] zp ZP_WORD:125 [ spline_8segB::$8 ] zp ZP_WORD:129 [ spline_8segB::$10 ] zp ZP_WORD:131 [ spline_8segB::$12 ] zp ZP_WORD:146 [ spline_8segB::$18 ] zp ZP_WORD:150 [ spline_8segB::$20 ] zp ZP_WORD:75 [ spline_8segB::p2_y#0 ] zp ZP_WORD:152 [ spline_8segB::$21 ] zp ZP_WORD:69 [ spline_8segB::p1_x#0 ] zp ZP_WORD:71 [ spline_8segB::p1_y#0 ] zp ZP_WORD:123 [ spline_8segB::b_x#0 ] zp ZP_WORD:127 [ spline_8segB::b_y#0 ] zp ZP_WORD:148 [ spline_8segB::$19 ] zp ZP_WORD:65 [ spline_8segB::p0_x#0 ] zp ZP_WORD:67 [ spline_8segB::p0_y#0 ] zp ZP_WORD:119 [ spline_8segB::a_y#0 ] zp ZP_WORD:113 [ spline_8segB::a_x#0 ] +Uplifting [bitmap_plot] best 80061 combination zp ZP_WORD:25 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:100 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:102 [ bitmap_plot::plotter#1 ] zp ZP_WORD:98 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_plot_spline_8seg] best 79361 combination zp ZP_WORD:10 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] reg byte x [ bitmap_plot_spline_8seg::$7 ] zp ZP_WORD:8 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] zp ZP_WORD:78 [ bitmap_plot_spline_8seg::to_x#0 ] zp ZP_WORD:80 [ bitmap_plot_spline_8seg::to_y#0 ] +Uplifting [bitmap_init] best 78851 combination zp ZP_WORD:52 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:158 [ bitmap_init::$5 ] zp ZP_BYTE:159 [ bitmap_init::$6 ] zp ZP_BYTE:156 [ bitmap_init::$7 ] +Limited combination testing to 100 combinations of 15360 possible. +Uplifting [main] best 78541 combination zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 ] reg byte a [ main::$206 ] zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 ] reg byte y [ main::$44 ] zp ZP_BYTE:2 [ main::i#10 main::i#1 ] reg byte x [ main::segment_type#0 ] zp ZP_WORD:61 [ main::segment_via_x#0 ] zp ZP_WORD:63 [ main::segment_via_y#0 ] zp ZP_WORD:57 [ main::current_x#8 ] zp ZP_WORD:59 [ main::current_y#8 ] +Uplifting [memset] best 78525 combination zp ZP_WORD:47 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:154 [ memset::end#0 ] zp ZP_WORD:42 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:44 [ memset::str#3 ] +Uplifting [abs_u16] best 78513 combination zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp ZP_WORD:82 [ abs_u16::return#0 ] zp ZP_WORD:86 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] +Uplifting [sgn_u16] best 78501 combination zp ZP_WORD:27 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:90 [ sgn_u16::return#0 ] zp ZP_WORD:94 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp ZP_WORD:29 [ sgn_u16::return#4 ] +Uplifting [SplineVector16] best 78501 combination +Uplifting [SplineVector32] best 78501 combination +Uplifting [bitmap_clear] best 78501 combination +Uplifting [SegmentType] best 78501 combination +Uplifting [Segment] best 78501 combination +Uplifting [] best 78501 combination +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Uplifting [bitmap_plot_spline_8seg] best 78501 combination zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:158 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 78441 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:159 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 78381 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#10 main::i#1 ] +Uplifting [main] best 78381 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:156 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 78381 combination zp ZP_BYTE:156 [ bitmap_init::$7 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp ZP_WORD:25 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 4 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 ] ] with [ zp ZP_WORD:20 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp ZP_WORD:65 [ spline_8segB::p0_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 ] ] with [ zp ZP_WORD:18 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] with [ zp ZP_WORD:67 [ spline_8segB::p0_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ sgn_u16::return#4 ] ] with [ zp ZP_WORD:90 [ sgn_u16::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp ZP_WORD:94 [ sgn_u16::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp ZP_WORD:82 [ abs_u16::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp ZP_WORD:86 [ abs_u16::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] ] with [ zp ZP_WORD:146 [ spline_8segB::$18 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] ] with [ zp ZP_WORD:150 [ spline_8segB::$20 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] ] with [ zp ZP_WORD:129 [ spline_8segB::$10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] ] with [ zp ZP_WORD:131 [ spline_8segB::$12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ memset::num#2 ] ] with [ zp ZP_WORD:154 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:44 [ memset::str#3 ] ] with [ zp ZP_WORD:47 [ memset::dst#2 memset::dst#3 memset::dst#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:57 [ main::current_x#8 ] ] with [ zp ZP_WORD:73 [ spline_8segB::p2_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ main::current_y#8 ] ] with [ zp ZP_WORD:75 [ spline_8segB::p2_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ main::segment_via_x#0 ] ] with [ zp ZP_WORD:69 [ spline_8segB::p1_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:63 [ main::segment_via_y#0 ] ] with [ zp ZP_WORD:71 [ spline_8segB::p1_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:98 [ bitmap_plot::plotter#0 ] ] with [ zp ZP_WORD:102 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ spline_8segB::$0 ] ] with [ zp ZP_WORD:111 [ spline_8segB::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ spline_8segB::a_x#0 ] ] with [ zp ZP_WORD:133 [ spline_8segB::j_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:115 [ spline_8segB::$3 ] ] with [ zp ZP_WORD:117 [ spline_8segB::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:119 [ spline_8segB::a_y#0 ] ] with [ zp ZP_WORD:135 [ spline_8segB::j_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:121 [ spline_8segB::$6 ] ] with [ zp ZP_WORD:123 [ spline_8segB::b_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ spline_8segB::$8 ] ] with [ zp ZP_WORD:127 [ spline_8segB::b_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:137 [ spline_8segB::$22 ] ] with [ zp ZP_WORD:139 [ spline_8segB::$23 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:141 [ spline_8segB::$24 ] ] with [ zp ZP_WORD:143 [ spline_8segB::$25 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 spline_8segB::p0_x#0 ] ] with [ zp ZP_WORD:8 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 spline_8segB::p0_x#0 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 ] ] with [ zp ZP_WORD:33 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 ] ] with [ zp ZP_WORD:10 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 ] ] with [ zp ZP_WORD:35 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp ZP_WORD:96 [ bitmap_line::sy#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp ZP_WORD:88 [ bitmap_line::dy#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 ] ] with [ zp ZP_WORD:121 [ spline_8segB::$6 spline_8segB::b_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 ] ] with [ zp ZP_WORD:125 [ spline_8segB::$8 spline_8segB::b_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ spline_8segB::$0 spline_8segB::$1 ] ] with [ zp ZP_WORD:113 [ spline_8segB::a_x#0 spline_8segB::j_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:115 [ spline_8segB::$3 spline_8segB::$4 ] ] with [ zp ZP_WORD:119 [ spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 spline_8segB::p0_x#0 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 ] ] with [ zp ZP_WORD:148 [ spline_8segB::$19 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 ] ] with [ zp ZP_WORD:152 [ spline_8segB::$21 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 ] ] with [ zp ZP_WORD:61 [ main::segment_via_x#0 spline_8segB::p1_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 ] ] with [ zp ZP_WORD:63 [ main::segment_via_y#0 spline_8segB::p1_y#0 ] ] - score: 1 +Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:10 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +Allocated (was zp ZP_WORD:16) zp ZP_WORD:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +Allocated (was zp ZP_WORD:22) zp ZP_WORD:14 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +Allocated (was zp ZP_WORD:27) zp ZP_WORD:16 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +Allocated (was zp ZP_WORD:29) zp ZP_WORD:18 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] +Allocated (was zp ZP_WORD:31) zp ZP_WORD:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] +Allocated (was zp ZP_WORD:38) zp ZP_WORD:22 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 main::segment_via_x#0 spline_8segB::p1_x#0 ] +Allocated (was zp ZP_WORD:40) zp ZP_WORD:24 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 main::segment_via_y#0 spline_8segB::p1_y#0 ] +Allocated (was zp ZP_WORD:42) zp ZP_WORD:26 [ memset::num#2 memset::end#0 ] +Allocated (was zp ZP_WORD:44) zp ZP_WORD:28 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +Allocated (was zp ZP_WORD:52) zp ZP_WORD:30 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated (was zp ZP_WORD:57) zp ZP_WORD:32 [ main::current_x#8 spline_8segB::p2_x#0 ] +Allocated (was zp ZP_WORD:59) zp ZP_WORD:34 [ main::current_y#8 spline_8segB::p2_y#0 ] +Allocated (was zp ZP_WORD:78) zp ZP_WORD:36 [ bitmap_plot_spline_8seg::to_x#0 ] +Allocated (was zp ZP_WORD:80) zp ZP_WORD:38 [ bitmap_plot_spline_8seg::to_y#0 ] +Allocated (was zp ZP_WORD:84) zp ZP_WORD:40 [ bitmap_line::dx#0 ] +Allocated (was zp ZP_WORD:92) zp ZP_WORD:42 [ bitmap_line::sx#0 ] +Allocated (was zp ZP_WORD:98) zp ZP_WORD:44 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +Allocated (was zp ZP_WORD:100) zp ZP_WORD:46 [ bitmap_plot::$1 ] +Allocated (was zp ZP_WORD:109) zp ZP_WORD:48 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 ] +Allocated (was zp ZP_WORD:115) zp ZP_WORD:50 [ spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] +Allocated (was zp ZP_WORD:137) zp ZP_WORD:52 [ spline_8segB::$22 spline_8segB::$23 ] +Allocated (was zp ZP_WORD:141) zp ZP_WORD:54 [ spline_8segB::$24 spline_8segB::$25 ] +Allocated (was zp ZP_BYTE:156) zp ZP_BYTE:56 [ bitmap_init::$7 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Show a few simple splines using the splines library + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + .const MOVE_TO = 0 + .const SPLINE_TO = 1 + .const LINE_TO = 2 + .const SIZEOF_STRUCT_SEGMENT = 9 + .const SIZEOF_STRUCT_SPLINEVECTOR16 = 4 + .const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2 + .const OFFSET_STRUCT_SEGMENT_TO = 1 + .const OFFSET_STRUCT_SEGMENT_VIA = 5 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + .const WHITE = 1 + .label PRINT_SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label segment_via_x = $16 + .label segment_via_y = $18 + .label i = 2 + .label current_x = 3 + .label current_y = 5 + .label current_x_8 = $20 + .label current_y_8 = $22 + // [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO -- _deref_pbuc1=vbuc2 + lda #MOVE_TO + sta letter_c + // [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1 + // [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1 + // [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+1*SIZEOF_STRUCT_SEGMENT + // [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 -- _deref_pwsc1=vwsc2 + lda #<$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT + lda #>$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT+1 + // [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 -- _deref_pwsc1=vwsc2 + lda #<$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT+1 + // [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 -- _deref_pwsc1=vwsc2 + lda #<$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+2*SIZEOF_STRUCT_SEGMENT + // [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b -- _deref_pwsc1=vwsc2 + lda #<$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT + lda #>$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT+1 + // [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b -- _deref_pwsc1=vwsc2 + lda #<$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT + lda #>$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT+1 + // [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+3*SIZEOF_STRUCT_SEGMENT + // [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 -- _deref_pwsc1=vwsc2 + lda #<$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT + lda #>$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT+1 + // [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 -- _deref_pwsc1=vwsc2 + lda #<$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 -- _deref_pwsc1=vwsc2 + lda #<$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT + lda #>$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT+1 + // [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+4*SIZEOF_STRUCT_SEGMENT + // [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT+1 + // [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 -- _deref_pwsc1=vwsc2 + lda #<$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT+1 + // [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 -- _deref_pwsc1=vwsc2 + lda #<$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+5*SIZEOF_STRUCT_SEGMENT + // [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 -- _deref_pwsc1=vwsc2 + lda #<$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT + lda #>$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT+1 + // [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 -- _deref_pwsc1=vwsc2 + lda #<$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT+1 + // [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+6*SIZEOF_STRUCT_SEGMENT + // [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 -- _deref_pwsc1=vwsc2 + lda #<$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT + lda #>$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT+1 + // [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a -- _deref_pwsc1=vwsc2 + lda #<$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT + lda #>$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT+1 + // [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+7*SIZEOF_STRUCT_SEGMENT + // [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT+1 + // [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT+1 + // [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+8*SIZEOF_STRUCT_SEGMENT + // [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT+1 + // [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT+1 + // [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+9*SIZEOF_STRUCT_SEGMENT + // [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 -- _deref_pwsc1=vwsc2 + lda #<$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT + lda #>$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT+1 + // [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a -- _deref_pwsc1=vwsc2 + lda #<$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT+1 + // [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$a*SIZEOF_STRUCT_SEGMENT + // [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT+1 + // [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT+1 + // [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$b*SIZEOF_STRUCT_SEGMENT + // [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 -- _deref_pwsc1=vwsc2 + lda #<$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT + lda #>$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT+1 + // [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 -- _deref_pwsc1=vwsc2 + lda #<$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT + lda #>$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT+1 + // [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$c*SIZEOF_STRUCT_SEGMENT + // [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT+1 + // [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT+1 + // [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 -- _deref_pwsc1=vwsc2 + lda #<$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$d*SIZEOF_STRUCT_SEGMENT + // [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 -- _deref_pwsc1=vwsc2 + lda #<$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT + lda #>$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT+1 + // [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT+1 + // [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 -- _deref_pwsc1=vwsc2 + lda #<$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$e*SIZEOF_STRUCT_SEGMENT + // [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d -- _deref_pwsc1=vwsc2 + lda #<$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT + lda #>$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT+1 + // [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT+1 + // [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$f*SIZEOF_STRUCT_SEGMENT + // [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT+1 + // [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 -- _deref_pwsc1=vwsc2 + lda #<$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT + lda #>$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT+1 + // [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$10*SIZEOF_STRUCT_SEGMENT + // [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT+1 + // [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 -- _deref_pwsc1=vwsc2 + lda #<$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT+1 + // [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 -- _deref_pwsc1=vwsc2 + lda #<$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$11*SIZEOF_STRUCT_SEGMENT + // [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT+1 + // [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e -- _deref_pwsc1=vwsc2 + lda #<$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT+1 + // [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e -- _deref_pwsc1=vwsc2 + lda #<$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$12*SIZEOF_STRUCT_SEGMENT + // [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 -- _deref_pwsc1=vwsc2 + lda #<$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT + lda #>$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT+1 + // [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 -- _deref_pwsc1=vwsc2 + lda #<$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT + lda #>$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT+1 + // [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$13*SIZEOF_STRUCT_SEGMENT + // [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b -- _deref_pwsc1=vwsc2 + lda #<$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT + lda #>$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT+1 + // [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 -- _deref_pwsc1=vwsc2 + lda #<$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 -- _deref_pwsc1=vwsc2 + lda #<$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT + lda #>$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT+1 + // [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$14*SIZEOF_STRUCT_SEGMENT + // [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT+1 + // [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 -- _deref_pwsc1=vwsc2 + lda #<$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT+1 + // [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 -- _deref_pwsc1=vwsc2 + lda #<$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO -- _deref_pbuc1=vbuc2 + lda #LINE_TO + sta letter_c+$15*SIZEOF_STRUCT_SEGMENT + // [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT+1 + // [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT+1 + // [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // [114] call bitmap_init + // [294] phi from main to bitmap_init [phi:main->bitmap_init] + bitmap_init_from_main: + jsr bitmap_init + // [115] phi from main to main::@8 [phi:main->main::@8] + b8_from_main: + jmp b8 + // main::@8 + b8: + // [116] call bitmap_clear + // [280] phi from main::@8 to bitmap_clear [phi:main::@8->bitmap_clear] + bitmap_clear_from_b8: + jsr bitmap_clear + jmp vicSelectGfxBank1 + // main::vicSelectGfxBank1 + vicSelectGfxBank1: + // [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [118] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + // main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + // [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [120] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + // main::toD0181 + toD0181: + jmp b7 + // main::@7 + b7: + // [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // [123] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + b1_from_b7: + // [123] phi (signed word) main::current_y#4 = (signed byte) 0 [phi:main::@7->main::@1#0] -- vwsz1=vbsc1 + lda #<0 + sta current_y + lda #>0 + sta current_y+1 + // [123] phi (signed word) main::current_x#4 = (signed byte) 0 [phi:main::@7->main::@1#1] -- vwsz1=vbsc1 + lda #<0 + sta current_x + lda #>0 + sta current_x+1 + // [123] phi (byte) main::i#10 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + // main::@1 + b1: + // [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + lda i + asl + asl + asl + // [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 -- vbuyy=vbuaa_plus_vbuz1 + clc + adc i + tay + // [126] (byte) main::segment_type#0 ← *((byte*)(const struct Segment[$15]) letter_c#0 + (byte~) main::$44) -- vbuxx=pbuc1_derefidx_vbuyy + ldx letter_c,y + // [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_TO,y + sta current_x_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,y + sta current_x_8+1 + // [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta current_y_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta current_y_8+1 + // [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y + sta segment_via_x + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y + sta segment_via_x+1 + // [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta segment_via_y + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta segment_via_y+1 + // [131] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@3 -- vbuxx_eq_vbuc1_then_la1 + cpx #MOVE_TO + beq b3 + jmp b4 + // main::@4 + b4: + // [132] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@2 -- vbuxx_eq_vbuc1_then_la1 + cpx #SPLINE_TO + beq b2 + jmp b5 + // main::@5 + b5: + // [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 + // [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 + // [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 -- vwuz1=vwuz2 + lda current_x_8 + sta bitmap_line.x2 + lda current_x_8+1 + sta bitmap_line.x2+1 + // [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 -- vwuz1=vwuz2 + lda current_y_8 + sta bitmap_line.y2 + lda current_y_8+1 + sta bitmap_line.y2+1 + // [137] call bitmap_line + // [168] phi from main::@5 to bitmap_line [phi:main::@5->bitmap_line] + bitmap_line_from_b5: + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:main::@5->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:main::@5->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:main::@5->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:main::@5->bitmap_line#3] -- register_copy + jsr bitmap_line + jmp b3 + // main::@3 + b3: + // [138] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + inc i + // [139] if((byte) main::i#1!=(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT+(byte) 1) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + lda #$15*SIZEOF_STRUCT_SEGMENT/SIZEOF_STRUCT_SEGMENT+1 + cmp i + bne b10 + jmp b6 + // main::@6 + b6: + // [140] *((const byte*) PRINT_SCREEN#0+(word) $3e7) ← ++ *((const byte*) PRINT_SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc PRINT_SCREEN+$3e7 + jmp b6 + // main::@10 + b10: + // [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 -- vwsz1=vwsz2 + lda current_x_8 + sta current_x + lda current_x_8+1 + sta current_x+1 + // [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 -- vwsz1=vwsz2 + lda current_y_8 + sta current_y + lda current_y_8+1 + sta current_y+1 + // [123] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + b1_from_b10: + // [123] phi (signed word) main::current_y#4 = (signed word~) main::current_y#9 [phi:main::@10->main::@1#0] -- register_copy + // [123] phi (signed word) main::current_x#4 = (signed word~) main::current_x#9 [phi:main::@10->main::@1#1] -- register_copy + // [123] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@10->main::@1#2] -- register_copy + jmp b1 + // main::@2 + b2: + // [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 + // [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 + // [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 + // [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 + // [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 + // [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 + // [149] call spline_8segB + jsr spline_8segB + // [150] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + b9_from_b2: + jmp b9 + // main::@9 + b9: + // [151] call bitmap_plot_spline_8seg + jsr bitmap_plot_spline_8seg + jmp b3 +} + // bitmap_plot_spline_8seg +// Plot the spline in the SPLINE_8SEG array +bitmap_plot_spline_8seg: { + .label current_x = 3 + .label current_y = 5 + .label to_x = $24 + .label to_y = $26 + .label n = 7 + // [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG + sta current_x + lda SPLINE_8SEG+1 + sta current_x+1 + // [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta current_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + b1_from_bitmap_plot_spline_8seg: + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + lda #1 + sta n + jmp b1 + // bitmap_plot_spline_8seg::@1 + b1: + // [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 + lda n + asl + asl + tax + // [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuxx + lda SPLINE_8SEG,x + sta to_x + lda SPLINE_8SEG+1,x + sta to_x+1 + // [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuxx + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + sta to_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + sta to_y+1 + // [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + // [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + // [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 -- vwuz1=vwuz2 + lda to_x + sta bitmap_line.x2 + lda to_x+1 + sta bitmap_line.x2+1 + // [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 -- vwuz1=vwuz2 + lda to_y + sta bitmap_line.y2 + lda to_y+1 + sta bitmap_line.y2+1 + // [162] call bitmap_line + // [168] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + bitmap_line_from_b1: + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + jsr bitmap_line + jmp b2 + // bitmap_plot_spline_8seg::@2 + b2: + // [163] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + inc n + // [164] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp n + bne b3 + jmp breturn + // bitmap_plot_spline_8seg::@return + breturn: + // [165] return + rts + // bitmap_plot_spline_8seg::@3 + b3: + // [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 -- vwsz1=vwsz2 + lda to_x + sta current_x + lda to_x+1 + sta current_x+1 + // [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 -- vwsz1=vwsz2 + lda to_y + sta current_y + lda to_y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg::@3 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1] + b1_from_b3: + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word~) bitmap_plot_spline_8seg::current_y#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word~) bitmap_plot_spline_8seg::current_x#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#2] -- register_copy + jmp b1 +} + // bitmap_line +// Draw a line on the bitmap using bresenhams algorithm +// bitmap_line(word zeropage(3) x1, word zeropage(5) y1, word zeropage(8) x2, word zeropage($a) y2) +bitmap_line: { + .label x = 3 + .label y = 5 + .label dx = $28 + .label dy = $14 + .label sx = $2a + .label sy = $12 + .label e1 = $e + .label e = $c + .label x1 = 3 + .label y1 = 5 + .label x2 = 8 + .label y2 = $a + // [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta abs_u16.w + lda x2+1 + sbc x+1 + sta abs_u16.w+1 + // [170] call abs_u16 + // [234] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + abs_u16_from_bitmap_line: + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + jsr abs_u16 + // [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + jmp b12 + // bitmap_line::@12 + b12: + // [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + lda abs_u16.return + sta dx + lda abs_u16.return+1 + sta dx+1 + // [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta abs_u16.w + lda y2+1 + sbc y+1 + sta abs_u16.w+1 + // [174] call abs_u16 + // [234] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + abs_u16_from_b12: + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + jsr abs_u16 + // [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + jmp b13 + // bitmap_line::@13 + b13: + // [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + // [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + jmp b18 + // bitmap_line::@18 + b18: + // [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + beq b4 + !: + jmp b1 + // bitmap_line::@1 + b1: + // [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta sgn_u16.w + lda x2+1 + sbc x+1 + sta sgn_u16.w+1 + // [180] call sgn_u16 + // [227] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + sgn_u16_from_b1: + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + jsr sgn_u16 + // [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + jmp b14 + // bitmap_line::@14 + b14: + // [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + lda sgn_u16.return + sta sx + lda sgn_u16.return+1 + sta sx+1 + // [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta sgn_u16.w + lda y2+1 + sbc y+1 + sta sgn_u16.w+1 + // [184] call sgn_u16 + // [227] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + sgn_u16_from_b14: + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + jsr sgn_u16 + // [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + jmp b15 + // bitmap_line::@15 + b15: + // [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + lda dy+1 + cmp dx+1 + bcc b2 + bne !+ + lda dy + cmp dx + bcc b2 + !: + jmp b5 + // bitmap_line::@5 + b5: + // [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dx+1 + lsr + sta e+1 + lda dx + ror + sta e + // [189] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + b6_from_b5: + b6_from_b7: + // [189] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [189] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [189] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + jmp b6 + // bitmap_line::@6 + b6: + // [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 + lda y + tax + // [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [192] call bitmap_plot + // [220] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + bitmap_plot_from_b6: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp b16 + // bitmap_line::@16 + b16: + // [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e + clc + adc dx + sta e + lda e+1 + adc dx+1 + sta e+1 + // [195] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + lda e+1 + cmp dy+1 + bne !+ + lda e + cmp dy + beq b7_from_b16 + !: + bcc b7_from_b16 + jmp b8 + // bitmap_line::@8 + b8: + // [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e + sec + sbc dy + sta e + lda e+1 + sbc dy+1 + sta e+1 + // [198] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + b7_from_b16: + b7_from_b8: + // [198] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [198] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + jmp b7 + // bitmap_line::@7 + b7: + // [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + lda y+1 + cmp y2+1 + bne b6_from_b7 + lda y + cmp y2 + bne b6_from_b7 + // [200] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + b3_from_b10: + b3_from_b7: + // [200] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [200] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + jmp b3 + // bitmap_line::@3 + b3: + // [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 + lda y + tax + // [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [203] call bitmap_plot + // [220] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + bitmap_plot_from_b3: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn + // bitmap_line::@return + breturn: + // [204] return + rts + // bitmap_line::@2 + b2: + // [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dy+1 + lsr + sta e1+1 + lda dy + ror + sta e1 + // [206] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + b9_from_b10: + b9_from_b2: + // [206] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [206] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [206] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + jmp b9 + // bitmap_line::@9 + b9: + // [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 + lda y + tax + // [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [209] call bitmap_plot + // [220] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + bitmap_plot_from_b9: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp b17 + // bitmap_line::@17 + b17: + // [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e1 + clc + adc dy + sta e1 + lda e1+1 + adc dy+1 + sta e1+1 + // [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + lda e1+1 + cmp dx+1 + bne !+ + lda e1 + cmp dx + beq b10_from_b17 + !: + bcc b10_from_b17 + jmp b11 + // bitmap_line::@11 + b11: + // [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e1 + sec + sbc dx + sta e1 + lda e1+1 + sbc dx+1 + sta e1+1 + // [215] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + b10_from_b11: + b10_from_b17: + // [215] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [215] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + jmp b10 + // bitmap_line::@10 + b10: + // [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + lda x+1 + cmp x2+1 + bne b9_from_b10 + lda x + cmp x2 + bne b9_from_b10 + jmp b3_from_b10 + // bitmap_line::@4 + b4: + // [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuxx=_byte_vwuz1 + lda y + tax + // [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + // [219] call bitmap_plot + // [220] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + bitmap_plot_from_b4: + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + jmp breturn +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage(3) x, byte register(X) y) +bitmap_plot: { + .label _1 = $2e + .label plotter = $2c + .label x = 3 + // [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x + sta plotter+1 + lda bitmap_plot_ylo,x + sta plotter + // [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + // [224] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 + lda x + // [225] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + ldy #0 + sta (plotter),y + jmp breturn + // bitmap_plot::@return + breturn: + // [226] return + rts +} + // sgn_u16 +// Get the sign of a 16-bit unsigned number treated as a signed number. +// Returns unsigned -1 if the number is +// sgn_u16(word zeropage($10) w) +sgn_u16: { + .label w = $10 + .label return = $12 + // [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + lda w+1 + // [229] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + and #$80 + // [230] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + cmp #0 + bne b1_from_sgn_u16 + // [232] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + breturn_from_sgn_u16: + // [232] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<1 + sta return + lda #>1 + sta return+1 + jmp breturn + // [231] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + b1_from_sgn_u16: + jmp b1 + // sgn_u16::@1 + b1: + // [232] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + breturn_from_b1: + // [232] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<-1 + sta return + lda #>-1 + sta return+1 + jmp breturn + // sgn_u16::@return + breturn: + // [233] return + rts +} + // abs_u16 +// Get the absolute value of a 16-bit unsigned number treated as a signed number. +// abs_u16(word zeropage($14) w) +abs_u16: { + .label w = $14 + .label return = $14 + // [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + lda w+1 + // [236] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + and #$80 + // [237] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + cmp #0 + bne b1 + // [239] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + breturn_from_abs_u16: + breturn_from_b1: + // [239] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + jmp breturn + // abs_u16::@1 + b1: + // [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + sec + lda #0 + sbc return + sta return + lda #0 + sbc return+1 + sta return+1 + jmp breturn_from_b1 + // abs_u16::@return + breturn: + // [240] return + rts +} + // spline_8segB +// Generate a 8-segment quadratic spline using 16-bit fixed point 1/64-format math (6 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// Point values must be within [-200 ; 1ff] for the calculation to not overflow. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// spline_8segB(signed word zeropage(3) p0_x, signed word zeropage(5) p0_y, signed word zeropage($16) p1_x, signed word zeropage($18) p1_y, signed word zeropage($20) p2_x, signed word zeropage($22) p2_y) +spline_8segB: { + .label _0 = $30 + .label _1 = $30 + .label _3 = $32 + .label _4 = $32 + .label _6 = $16 + .label _8 = $18 + .label _10 = $16 + .label _12 = $18 + .label _18 = 3 + .label _19 = 3 + .label _20 = 5 + .label _21 = 5 + .label _22 = $34 + .label _23 = $34 + .label _24 = $36 + .label _25 = $36 + .label a_x = $30 + .label a_y = $32 + .label b_x = $16 + .label b_y = $18 + .label i_x = $16 + .label i_y = $18 + .label j_x = $30 + .label j_y = $32 + .label p_x = 3 + .label p_y = 5 + .label p0_x = 3 + .label p0_y = 5 + .label p1_x = $16 + .label p1_y = $18 + .label p2_x = $20 + .label p2_y = $22 + // [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_x + asl + sta _0 + lda p1_x+1 + rol + sta _0+1 + // [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 + lda p2_x + sec + sbc _1 + sta _1 + lda p2_x+1 + sbc _1+1 + sta _1+1 + // [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + // [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_y + asl + sta _3 + lda p1_y+1 + rol + sta _3+1 + // [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 + lda p2_y + sec + sbc _4 + sta _4 + lda p2_y+1 + sbc _4+1 + sta _4+1 + // [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + // [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 + lda _6 + sec + sbc p0_x + sta _6 + lda _6+1 + sbc p0_x+1 + sta _6+1 + // [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl b_x + rol b_x+1 + // [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 + lda _8 + sec + sbc p0_y + sta _8 + lda _8+1 + sbc p0_y+1 + sta _8+1 + // [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl b_y + rol b_y+1 + // [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + // [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 + lda i_x + clc + adc a_x + sta i_x + lda i_x+1 + adc a_x+1 + sta i_x+1 + // [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + // [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 + lda i_y + clc + adc a_y + sta i_y + lda i_y+1 + adc a_y+1 + sta i_y+1 + // [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl j_x + rol j_x+1 + // [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl j_y + rol j_y+1 + // [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + lda p_x+1 + sta $ff + lda p_x + sta p_x+1 + lda #0 + sta p_x + lsr $ff + ror p_x+1 + ror p_x + lsr $ff + ror p_x+1 + ror p_x + // [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + lda p_y+1 + sta $ff + lda p_y + sta p_y+1 + lda #0 + sta p_y + lsr $ff + ror p_y+1 + ror p_y + lsr $ff + ror p_y+1 + ror p_y + // [259] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + b1_from_spline_8segB: + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 + ldy #0 + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + jmp b1 + // [259] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + b1_from_b1: + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + jmp b1 + // spline_8segB::@1 + b1: + // [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_x + clc + adc #<$20 + sta _22 + lda p_x+1 + adc #>$20 + sta _22+1 + // [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _23 + sta $ff + lda _23+1 + sta _23 + lda #0 + bit _23+1 + bpl !+ + lda #$ff + !: + sta _23+1 + rol $ff + rol _23 + rol _23+1 + rol $ff + rol _23 + rol _23+1 + // [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_y + clc + adc #<$20 + sta _24 + lda p_y+1 + adc #>$20 + sta _24+1 + // [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _25 + sta $ff + lda _25+1 + sta _25 + lda #0 + bit _25+1 + bpl !+ + lda #$ff + !: + sta _25+1 + rol $ff + rol _25 + rol _25+1 + rol $ff + rol _25 + rol _25+1 + // [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + tya + asl + asl + tax + // [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 + lda _23 + sta SPLINE_8SEG,x + lda _23+1 + sta SPLINE_8SEG+1,x + // [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 + lda _25 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + lda _25+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + // [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + // [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + // [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + // [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + // [271] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy + iny + // [272] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #8 + bne b1_from_b1 + jmp b2 + // spline_8segB::@2 + b2: + // [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + lda _18 + clc + adc #<$20 + sta _18 + lda _18+1 + adc #>$20 + sta _18+1 + // [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _19 + sta $ff + lda _19+1 + sta _19 + lda #0 + bit _19+1 + bpl !+ + lda #$ff + !: + sta _19+1 + rol $ff + rol _19 + rol _19+1 + rol $ff + rol _19 + rol _19+1 + // [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + lda _20 + clc + adc #<$20 + sta _20 + lda _20+1 + adc #>$20 + sta _20+1 + // [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _21 + sta $ff + lda _21+1 + sta _21 + lda #0 + bit _21+1 + bpl !+ + lda #$ff + !: + sta _21+1 + rol $ff + rol _21 + rol _21+1 + rol $ff + rol _21 + rol _21+1 + // [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + lda _19 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _19+1 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + // [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + lda _21 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _21+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + jmp breturn + // spline_8segB::@return + breturn: + // [279] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // [281] call memset + // [285] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + memset_from_bitmap_clear: + // [285] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + ldx #col + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [282] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + jmp b1 + // bitmap_clear::@1 + b1: + // [283] call memset + // [285] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + memset_from_b1: + // [285] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + ldx #0 + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + jmp breturn + // bitmap_clear::@return + breturn: + // [284] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($1c) str, byte register(X) c, word zeropage($1a) num) +memset: { + .label end = $1a + .label dst = $1c + .label num = $1a + .label str = $1c + // [286] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + jmp b1 + // memset::@1 + b1: + // [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + // [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [289] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + b2_from_b1: + b2_from_b2: + // [289] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + jmp b2 + // memset::@2 + b2: + // [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (dst),y + // [291] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2_from_b2 + lda dst + cmp end + bne b2_from_b2 + jmp breturn + // memset::@return + breturn: + // [293] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $38 + .label yoffs = $1e + // [295] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + // [295] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [295] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + jmp b1 + // [295] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + // [295] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [295] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + // bitmap_init::@1 + b1: + // [296] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + // [297] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + lsr + // [298] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + cmp #0 + bne b6_from_b1 + // [300] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + // [300] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + jmp b2 + // [299] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + b6_from_b1: + jmp b6 + // bitmap_init::@6 + b6: + // [300] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + b2_from_b6: + // [300] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + jmp b2 + // bitmap_init::@2 + b2: + // [301] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + inx + // [302] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1_from_b2 + // [303] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + // [303] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [303] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + jmp b3 + // [303] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + // [303] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [303] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + // bitmap_init::@3 + b3: + // [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + lda #7 + sax _7 + // [305] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + lda yoffs + // [306] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + ora _7 + // [307] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_ylo,x + // [308] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + lda yoffs+1 + // [309] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + // [310] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4_from_b3 + jmp b5 + // bitmap_init::@5 + b5: + // [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [312] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + b4_from_b3: + b4_from_b5: + // [312] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + jmp b4 + // bitmap_init::@4 + b4: + // [313] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + inx + // [314] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3_from_b4 + jmp breturn + // bitmap_init::@return + breturn: + // [315] return + rts +} + // File Data + // Array filled with spline segment points by splinePlot_8() + SPLINE_8SEG: .fill 4*9, 0 + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + // True type letter a + letter_c: .fill 9*$15, 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b8 +Removing instruction jmp vicSelectGfxBank1 +Removing instruction jmp vicSelectGfxBank1_toDd001 +Removing instruction jmp vicSelectGfxBank1_b1 +Removing instruction jmp toD0181 +Removing instruction jmp b7 +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp b3 +Removing instruction jmp b6 +Removing instruction jmp b9 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b12 +Removing instruction jmp b13 +Removing instruction jmp b18 +Removing instruction jmp b1 +Removing instruction jmp b14 +Removing instruction jmp b15 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b16 +Removing instruction jmp b8 +Removing instruction jmp b7 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b9 +Removing instruction jmp b17 +Removing instruction jmp b11 +Removing instruction jmp b10 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b6 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b5 +Removing instruction jmp b4 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #>0 +Removing instruction lda #<0 +Removing instruction lda #>0 +Removing instruction lda #>0 +Removing instruction lda #<0 +Removing instruction lda #>0 +Removing instruction lda #>0 +Removing instruction lda #<0 +Removing instruction lda #>0 +Removing instruction lda #0 +Removing instruction lda e+1 +Removing instruction lda e1+1 +Removing instruction ldy #0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b7_from_b16 with b7 +Replacing label b7_from_b16 with b7 +Replacing label b6_from_b7 with b6 +Replacing label b6_from_b7 with b6 +Replacing label b10_from_b17 with b10 +Replacing label b10_from_b17 with b10 +Replacing label b9_from_b10 with b9 +Replacing label b9_from_b10 with b9 +Replacing label b3_from_b10 with b3 +Replacing label b1_from_sgn_u16 with b1 +Replacing label b1_from_b1 with b1 +Replacing label b2_from_b2 with b2 +Replacing label b2_from_b2 with b2 +Replacing label b6_from_b1 with b2 +Replacing label b1_from_b2 with b1 +Replacing label b4_from_b3 with b4 +Replacing label b3_from_b4 with b3 +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction bend_from_b1: +Removing instruction b8_from_main: +Removing instruction bitmap_clear_from_b8: +Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_toDd001: +Removing instruction toD0181_from_vicSelectGfxBank1_b1: +Removing instruction toD0181: +Removing instruction b9_from_b2: +Removing instruction b6_from_b5: +Removing instruction b6_from_b7: +Removing instruction b7_from_b16: +Removing instruction b7_from_b8: +Removing instruction b3_from_b10: +Removing instruction b3_from_b7: +Removing instruction b9_from_b10: +Removing instruction b9_from_b2: +Removing instruction b10_from_b11: +Removing instruction b10_from_b17: +Removing instruction b1_from_sgn_u16: +Removing instruction breturn_from_b1: +Removing instruction breturn_from_abs_u16: +Removing instruction b1_from_b1: +Removing instruction b1_from_bitmap_clear: +Removing instruction memset_from_b1: +Removing instruction b2_from_b1: +Removing instruction b2_from_b2: +Removing instruction b1_from_b2: +Removing instruction b6_from_b1: +Removing instruction b6: +Removing instruction b2_from_b6: +Removing instruction b3_from_b4: +Removing instruction b4_from_b3: +Removing instruction b4_from_b5: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction bitmap_init_from_main: +Removing instruction b8: +Removing instruction vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_b1: +Removing instruction b7: +Removing instruction b1_from_b7: +Removing instruction b4: +Removing instruction b5: +Removing instruction bitmap_line_from_b5: +Removing instruction b1_from_b10: +Removing instruction b9: +Removing instruction b1_from_bitmap_plot_spline_8seg: +Removing instruction bitmap_line_from_b1: +Removing instruction b2: +Removing instruction breturn: +Removing instruction b1_from_b3: +Removing instruction abs_u16_from_bitmap_line: +Removing instruction b12: +Removing instruction abs_u16_from_b12: +Removing instruction b13: +Removing instruction b18: +Removing instruction sgn_u16_from_b1: +Removing instruction b14: +Removing instruction sgn_u16_from_b14: +Removing instruction b15: +Removing instruction b5: +Removing instruction bitmap_plot_from_b6: +Removing instruction b16: +Removing instruction b8: +Removing instruction bitmap_plot_from_b3: +Removing instruction bitmap_plot_from_b9: +Removing instruction b17: +Removing instruction b11: +Removing instruction bitmap_plot_from_b4: +Removing instruction breturn: +Removing instruction breturn_from_sgn_u16: +Removing instruction b1_from_spline_8segB: +Removing instruction b2: +Removing instruction breturn: +Removing instruction memset_from_bitmap_clear: +Removing instruction b1: +Removing instruction breturn: +Removing instruction b1: +Removing instruction b1_from_bitmap_init: +Removing instruction b2_from_b1: +Removing instruction b3_from_b2: +Removing instruction b5: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Replacing jump to rts with rts in jmp breturn +Skipping double jump to breturn in jmp breturn_from_b1 +Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label breturn_from_b1 to b2 +Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction ldy #0 with TAY +Removing instruction bbegin: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction b2: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Fixing long branch [1061] bne b1 to beq +Fixing long branch [599] beq b4 to bne + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(const byte*) BITMAP_GRAPHICS#0 BITMAP_GRAPHICS = (byte*) 24576 +(byte*) BITMAP_SCREEN +(const byte*) BITMAP_SCREEN#0 BITMAP_SCREEN = (byte*) 23552 +(byte) BLACK +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = (byte*) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = (byte*) 56578 +(byte*) D011 +(const byte*) D011#0 D011 = (byte*) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = (byte*) 53272 +(const byte) LINE_TO LINE_TO = (byte) 2 +(const byte) MOVE_TO MOVE_TO = (byte) 0 +(const byte) OFFSET_STRUCT_SEGMENT_TO OFFSET_STRUCT_SEGMENT_TO = (byte) 1 +(const byte) OFFSET_STRUCT_SEGMENT_VIA OFFSET_STRUCT_SEGMENT_VIA = (byte) 5 +(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y OFFSET_STRUCT_SPLINEVECTOR16_Y = (byte) 2 +(byte*) PRINT_SCREEN +(const byte*) PRINT_SCREEN#0 PRINT_SCREEN = (byte*) 1024 +(const byte) SIZEOF_STRUCT_SEGMENT SIZEOF_STRUCT_SEGMENT = (byte) 9 +(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4 +(struct SplineVector16[9]) SPLINE_8SEG +(const struct SplineVector16[9]) SPLINE_8SEG#0 SPLINE_8SEG = { fill( 9, 0) } +(const byte) SPLINE_TO SPLINE_TO = (byte) 1 +(struct SplineVector16) Segment::to +(byte) Segment::type +(struct SplineVector16) Segment::via +(const byte) SegmentType::LINE_TO LINE_TO = (byte) 2 +(const byte) SegmentType::MOVE_TO MOVE_TO = (byte) 0 +(const byte) SegmentType::SPLINE_TO SPLINE_TO = (byte) 1 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte) $20 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte) $10 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte) 1 +(word()) abs_u16((word) abs_u16::w) +(byte~) abs_u16::$0 reg byte a 4.0 +(byte~) abs_u16::$1 reg byte a 4.0 +(label) abs_u16::@1 +(label) abs_u16::@return +(word) abs_u16::return +(word) abs_u16::return#0 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#1 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#2 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#4 return zp ZP_WORD:20 2.0 +(word) abs_u16::w +(word) abs_u16::w#0 w zp ZP_WORD:20 4.0 +(word) abs_u16::w#1 w zp ZP_WORD:20 4.0 +(word) abs_u16::w#2 w zp ZP_WORD:20 2.5 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(label) bitmap_clear::@1 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10 +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 $7 zp ZP_BYTE:56 5.5 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:30 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:30 6.875 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:30 11.0 +(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) +(label) bitmap_line::@1 +(label) bitmap_line::@10 +(label) bitmap_line::@11 +(label) bitmap_line::@12 +(label) bitmap_line::@13 +(label) bitmap_line::@14 +(label) bitmap_line::@15 +(label) bitmap_line::@16 +(label) bitmap_line::@17 +(label) bitmap_line::@18 +(label) bitmap_line::@2 +(label) bitmap_line::@3 +(label) bitmap_line::@4 +(label) bitmap_line::@5 +(label) bitmap_line::@6 +(label) bitmap_line::@7 +(label) bitmap_line::@8 +(label) bitmap_line::@9 +(label) bitmap_line::@return +(word) bitmap_line::dx +(word) bitmap_line::dx#0 dx zp ZP_WORD:40 7.775 +(word) bitmap_line::dy +(word) bitmap_line::dy#0 dy zp ZP_WORD:20 8.638888888888888 +(word) bitmap_line::e +(word) bitmap_line::e#0 e zp ZP_WORD:12 4.0 +(word) bitmap_line::e#1 e zp ZP_WORD:12 134.66666666666666 +(word) bitmap_line::e#2 e zp ZP_WORD:12 202.0 +(word) bitmap_line::e#3 e zp ZP_WORD:12 40.8 +(word) bitmap_line::e#6 e zp ZP_WORD:12 151.5 +(word) bitmap_line::e1 +(word) bitmap_line::e1#0 e1 zp ZP_WORD:14 4.0 +(word) bitmap_line::e1#1 e1 zp ZP_WORD:14 134.66666666666666 +(word) bitmap_line::e1#2 e1 zp ZP_WORD:14 202.0 +(word) bitmap_line::e1#3 e1 zp ZP_WORD:14 40.8 +(word) bitmap_line::e1#6 e1 zp ZP_WORD:14 151.5 +(word) bitmap_line::sx +(word) bitmap_line::sx#0 sx zp ZP_WORD:42 6.800000000000001 +(word) bitmap_line::sy +(word) bitmap_line::sy#0 sy zp ZP_WORD:18 7.846153846153847 +(word) bitmap_line::x +(word) bitmap_line::x#0 x zp ZP_WORD:3 5.304347826086959 +(word) bitmap_line::x#1 x zp ZP_WORD:3 101.0 +(word) bitmap_line::x#12 x zp ZP_WORD:3 202.0 +(word) bitmap_line::x#13 x zp ZP_WORD:3 58.00000000000001 +(word) bitmap_line::x#15 x zp ZP_WORD:3 57.714285714285715 +(word) bitmap_line::x#6 x zp ZP_WORD:3 102.0 +(word) bitmap_line::x#7 x zp ZP_WORD:3 76.25 +(word) bitmap_line::x1 +(word) bitmap_line::x1#0 x1 zp ZP_WORD:3 5.5 +(word) bitmap_line::x1#1 x1 zp ZP_WORD:3 50.5 +(word) bitmap_line::x2 +(word) bitmap_line::x2#0 x2 zp ZP_WORD:8 11.0 +(word) bitmap_line::x2#1 x2 zp ZP_WORD:8 101.0 +(word) bitmap_line::x2#10 x2 zp ZP_WORD:8 6.78125 +(word) bitmap_line::y +(word) bitmap_line::y#0 y zp ZP_WORD:5 5.454545454545454 +(word) bitmap_line::y#1 y zp ZP_WORD:5 57.714285714285715 +(word) bitmap_line::y#13 y zp ZP_WORD:5 202.0 +(word) bitmap_line::y#15 y zp ZP_WORD:5 43.57142857142858 +(word) bitmap_line::y#2 y zp ZP_WORD:5 101.0 +(word) bitmap_line::y#4 y zp ZP_WORD:5 51.0 +(word) bitmap_line::y#7 y zp ZP_WORD:5 202.0 +(word) bitmap_line::y1 +(word) bitmap_line::y1#0 y1 zp ZP_WORD:5 7.333333333333333 +(word) bitmap_line::y1#1 y1 zp ZP_WORD:5 67.33333333333333 +(word) bitmap_line::y2 +(word) bitmap_line::y2#0 y2 zp ZP_WORD:10 22.0 +(word) bitmap_line::y2#1 y2 zp ZP_WORD:10 202.0 +(word) bitmap_line::y2#11 y2 zp ZP_WORD:10 6.78125 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:46 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 plotter zp ZP_WORD:44 1.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:44 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:3 4.0 +(word) bitmap_plot::x#1 x zp ZP_WORD:3 202.0 +(word) bitmap_plot::x#2 x zp ZP_WORD:3 4.0 +(word) bitmap_plot::x#3 x zp ZP_WORD:3 202.0 +(word) bitmap_plot::x#4 x zp ZP_WORD:3 52.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte x 2.0 +(byte) bitmap_plot::y#1 reg byte x 101.0 +(byte) bitmap_plot::y#2 reg byte x 2.0 +(byte) bitmap_plot::y#3 reg byte x 101.0 +(byte) bitmap_plot::y#4 reg byte x 210.0 +(byte[$100]) bitmap_plot_bit +(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } +(void()) bitmap_plot_spline_8seg() +(byte~) bitmap_plot_spline_8seg::$7 reg byte x 151.5 +(label) bitmap_plot_spline_8seg::@1 +(label) bitmap_plot_spline_8seg::@2 +(label) bitmap_plot_spline_8seg::@3 +(label) bitmap_plot_spline_8seg::@return +(signed word) bitmap_plot_spline_8seg::current_x +(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp ZP_WORD:3 2.0 +(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp ZP_WORD:3 25.75 +(signed word~) bitmap_plot_spline_8seg::current_x#4 current_x zp ZP_WORD:3 101.0 +(signed word) bitmap_plot_spline_8seg::current_y +(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp ZP_WORD:5 4.0 +(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp ZP_WORD:5 20.599999999999998 +(signed word~) bitmap_plot_spline_8seg::current_y#4 current_y zp ZP_WORD:5 202.0 +(byte) bitmap_plot_spline_8seg::n +(byte) bitmap_plot_spline_8seg::n#1 n zp ZP_BYTE:7 75.75 +(byte) bitmap_plot_spline_8seg::n#2 n zp ZP_BYTE:7 33.666666666666664 +(signed word) bitmap_plot_spline_8seg::to_x +(signed word) bitmap_plot_spline_8seg::to_x#0 to_x zp ZP_WORD:36 22.444444444444443 +(signed word) bitmap_plot_spline_8seg::to_y +(signed word) bitmap_plot_spline_8seg::to_y#0 to_y zp ZP_WORD:38 22.444444444444443 +(byte[$100]) bitmap_plot_yhi +(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) } +(byte[$100]) bitmap_plot_ylo +(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) } +(byte*) bitmap_screen +(struct Segment[$15]) letter_c +(const struct Segment[$15]) letter_c#0 letter_c = { fill( $15, 0) } +(void()) main() +(byte) main::$206 reg byte a 22.0 +(byte~) main::$44 reg byte y 13.2 +(label) main::@1 +(label) main::@10 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@9 +(signed word) main::current_x +(signed word) main::current_x#4 current_x zp ZP_WORD:3 2.2 +(signed word) main::current_x#8 current_x#8 zp ZP_WORD:32 1.5 +(signed word~) main::current_x#9 current_x zp ZP_WORD:3 11.0 +(signed word) main::current_y +(signed word) main::current_y#4 current_y zp ZP_WORD:5 1.8333333333333333 +(signed word) main::current_y#8 current_y#8 zp ZP_WORD:34 1.5 +(signed word~) main::current_y#9 current_y zp ZP_WORD:5 22.0 +(byte) main::i +(byte) main::i#1 i zp ZP_BYTE:2 8.25 +(byte) main::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(signed word) main::segment_to_x +(signed word) main::segment_to_y +(byte) main::segment_type +(byte) main::segment_type#0 reg byte x 5.5 +(signed word) main::segment_via_x +(signed word) main::segment_via_x#0 segment_via_x zp ZP_WORD:22 3.6666666666666665 +(signed word) main::segment_via_y +(signed word) main::segment_via_y#0 segment_via_y zp ZP_WORD:24 3.6666666666666665 +(signed word) main::to1_x +(signed word) main::to1_y +(label) main::toD0181 +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +(byte*) main::toD0181_screen +(signed word) main::to_x +(signed word) main::to_y +(signed word) main::via_x +(signed word) main::via_y +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(label) memset::@1 +(label) memset::@2 +(label) memset::@return +(byte) memset::c +(byte) memset::c#3 reg byte x 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 dst zp ZP_WORD:28 16.5 +(byte*) memset::dst#2 dst zp ZP_WORD:28 17.5 +(byte*~) memset::dst#3 dst zp ZP_WORD:28 4.0 +(byte*) memset::end +(byte*) memset::end#0 end zp ZP_WORD:26 2.1666666666666665 +(word) memset::num +(word) memset::num#2 num zp ZP_WORD:26 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 str zp ZP_WORD:28 +(word()) sgn_u16((word) sgn_u16::w) +(byte~) sgn_u16::$0 reg byte a 4.0 +(byte~) sgn_u16::$1 reg byte a 4.0 +(label) sgn_u16::@1 +(label) sgn_u16::@return +(word) sgn_u16::return +(word) sgn_u16::return#0 return zp ZP_WORD:18 4.0 +(word) sgn_u16::return#1 return zp ZP_WORD:18 4.0 +(word) sgn_u16::return#4 return zp ZP_WORD:18 1.0 +(word) sgn_u16::w +(word) sgn_u16::w#0 w zp ZP_WORD:16 4.0 +(word) sgn_u16::w#1 w zp ZP_WORD:16 4.0 +(word) sgn_u16::w#2 w zp ZP_WORD:16 6.0 +(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) +(signed word~) spline_8segB::$0 $0 zp ZP_WORD:48 4.0 +(signed word~) spline_8segB::$1 $1 zp ZP_WORD:48 4.0 +(signed word~) spline_8segB::$10 $10 zp ZP_WORD:22 4.0 +(signed word~) spline_8segB::$12 $12 zp ZP_WORD:24 4.0 +(signed word~) spline_8segB::$18 $18 zp ZP_WORD:3 4.0 +(signed word~) spline_8segB::$19 $19 zp ZP_WORD:3 1.3333333333333333 +(signed word~) spline_8segB::$20 $20 zp ZP_WORD:5 4.0 +(signed word~) spline_8segB::$21 $21 zp ZP_WORD:5 2.0 +(signed word~) spline_8segB::$22 $22 zp ZP_WORD:52 202.0 +(signed word~) spline_8segB::$23 $23 zp ZP_WORD:52 50.5 +(signed word~) spline_8segB::$24 $24 zp ZP_WORD:54 202.0 +(signed word~) spline_8segB::$25 $25 zp ZP_WORD:54 67.33333333333333 +(signed word~) spline_8segB::$3 $3 zp ZP_WORD:50 4.0 +(byte~) spline_8segB::$31 reg byte x 151.5 +(signed word~) spline_8segB::$4 $4 zp ZP_WORD:50 4.0 +(signed word~) spline_8segB::$6 $6 zp ZP_WORD:22 4.0 +(signed word~) spline_8segB::$8 $8 zp ZP_WORD:24 4.0 +(label) spline_8segB::@1 +(label) spline_8segB::@2 +(label) spline_8segB::@return +(signed word) spline_8segB::a_x +(signed word) spline_8segB::a_x#0 a_x zp ZP_WORD:48 0.5 +(signed word) spline_8segB::a_y +(signed word) spline_8segB::a_y#0 a_y zp ZP_WORD:50 0.6000000000000001 +(signed word) spline_8segB::b_x +(signed word) spline_8segB::b_x#0 b_x zp ZP_WORD:22 1.3333333333333333 +(signed word) spline_8segB::b_y +(signed word) spline_8segB::b_y#0 b_y zp ZP_WORD:24 1.3333333333333333 +(signed word) spline_8segB::i_x +(signed word) spline_8segB::i_x#0 i_x zp ZP_WORD:22 0.5714285714285714 +(signed word) spline_8segB::i_x#1 i_x zp ZP_WORD:22 50.5 +(signed word) spline_8segB::i_x#2 i_x zp ZP_WORD:22 30.5 +(signed word) spline_8segB::i_y +(signed word) spline_8segB::i_y#0 i_y zp ZP_WORD:24 0.8 +(signed word) spline_8segB::i_y#1 i_y zp ZP_WORD:24 67.33333333333333 +(signed word) spline_8segB::i_y#2 i_y zp ZP_WORD:24 27.727272727272727 +(signed word) spline_8segB::j_x +(signed word) spline_8segB::j_x#0 j_x zp ZP_WORD:48 5.722222222222221 +(signed word) spline_8segB::j_y +(signed word) spline_8segB::j_y#0 j_y zp ZP_WORD:50 6.0588235294117645 +(byte) spline_8segB::n +(byte) spline_8segB::n#1 reg byte y 151.5 +(byte) spline_8segB::n#2 reg byte y 25.25 +(struct SplineVector16) spline_8segB::p0 +(signed word) spline_8segB::p0_x +(signed word) spline_8segB::p0_x#0 p0_x zp ZP_WORD:3 0.7727272727272728 +(signed word) spline_8segB::p0_y +(signed word) spline_8segB::p0_y#0 p0_y zp ZP_WORD:5 0.7727272727272728 +(struct SplineVector16) spline_8segB::p1 +(signed word) spline_8segB::p1_x +(signed word) spline_8segB::p1_x#0 p1_x zp ZP_WORD:22 1.5 +(signed word) spline_8segB::p1_y +(signed word) spline_8segB::p1_y#0 p1_y zp ZP_WORD:24 1.3636363636363638 +(struct SplineVector16) spline_8segB::p2 +(signed word) spline_8segB::p2_x +(signed word) spline_8segB::p2_x#0 p2_x zp ZP_WORD:32 4.333333333333333 +(signed word) spline_8segB::p2_y +(signed word) spline_8segB::p2_y#0 p2_y zp ZP_WORD:34 2.6 +(signed word) spline_8segB::p_x +(signed word) spline_8segB::p_x#0 p_x zp ZP_WORD:3 2.0 +(signed word) spline_8segB::p_x#1 p_x zp ZP_WORD:3 34.0 +(signed word) spline_8segB::p_x#2 p_x zp ZP_WORD:3 38.125 +(signed word) spline_8segB::p_y +(signed word) spline_8segB::p_y#0 p_y zp ZP_WORD:5 4.0 +(signed word) spline_8segB::p_y#1 p_y zp ZP_WORD:5 29.142857142857142 +(signed word) spline_8segB::p_y#2 p_y zp ZP_WORD:5 33.888888888888886 + +zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 spline_8segB::p0_x#0 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 spline_8segB::$19 ] +zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 spline_8segB::$21 ] +zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +zp ZP_WORD:8 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +zp ZP_WORD:10 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +zp ZP_WORD:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +zp ZP_WORD:14 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +zp ZP_WORD:16 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +zp ZP_WORD:18 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] +zp ZP_WORD:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] +reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] +zp ZP_WORD:22 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 main::segment_via_x#0 spline_8segB::p1_x#0 ] +zp ZP_WORD:24 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 main::segment_via_y#0 spline_8segB::p1_y#0 ] +zp ZP_WORD:26 [ memset::num#2 memset::end#0 ] +zp ZP_WORD:28 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +reg byte x [ memset::c#3 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +zp ZP_WORD:30 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +reg byte a [ main::$206 ] +reg byte y [ main::$44 ] +reg byte x [ main::segment_type#0 ] +zp ZP_WORD:32 [ main::current_x#8 spline_8segB::p2_x#0 ] +zp ZP_WORD:34 [ main::current_y#8 spline_8segB::p2_y#0 ] +reg byte x [ bitmap_plot_spline_8seg::$7 ] +zp ZP_WORD:36 [ bitmap_plot_spline_8seg::to_x#0 ] +zp ZP_WORD:38 [ bitmap_plot_spline_8seg::to_y#0 ] +zp ZP_WORD:40 [ bitmap_line::dx#0 ] +zp ZP_WORD:42 [ bitmap_line::sx#0 ] +zp ZP_WORD:44 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +zp ZP_WORD:46 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +reg byte a [ sgn_u16::$0 ] +reg byte a [ sgn_u16::$1 ] +reg byte a [ abs_u16::$0 ] +reg byte a [ abs_u16::$1 ] +zp ZP_WORD:48 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 ] +zp ZP_WORD:50 [ spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] +zp ZP_WORD:52 [ spline_8segB::$22 spline_8segB::$23 ] +zp ZP_WORD:54 [ spline_8segB::$24 spline_8segB::$25 ] +reg byte x [ spline_8segB::$31 ] +zp ZP_BYTE:56 [ bitmap_init::$7 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] + + +FINAL ASSEMBLER +Score: 67992 + + // File Comments +// Show a few simple splines using the splines library + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .const MOVE_TO = 0 + .const SPLINE_TO = 1 + .const LINE_TO = 2 + .const SIZEOF_STRUCT_SEGMENT = 9 + .const SIZEOF_STRUCT_SPLINEVECTOR16 = 4 + .const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2 + .const OFFSET_STRUCT_SEGMENT_TO = 1 + .const OFFSET_STRUCT_SEGMENT_VIA = 5 + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + .const WHITE = 1 + .label PRINT_SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label segment_via_x = $16 + .label segment_via_y = $18 + .label i = 2 + .label current_x = 3 + .label current_y = 5 + .label current_x_8 = $20 + .label current_y_8 = $22 + // letter_c[0] = { MOVE_TO, {108,146}, {0,0} } + // [4] *((byte*)(const struct Segment[$15]) letter_c#0) ← (const byte) MOVE_TO -- _deref_pbuc1=vbuc2 + lda #MOVE_TO + sta letter_c + // [5] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1 + // [6] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // [7] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1 + // [8] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + // letter_c[1] = { SPLINE_TO, {89,182}, {103,169} } + // [9] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+1*SIZEOF_STRUCT_SEGMENT + // [10] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $59 -- _deref_pwsc1=vwsc2 + lda #<$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT + lda #>$59 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+1*SIZEOF_STRUCT_SEGMENT+1 + // [11] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b6 -- _deref_pwsc1=vwsc2 + lda #<$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$b6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // [12] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+1*SIZEOF_STRUCT_SEGMENT+1 + // [13] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 1*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a9 -- _deref_pwsc1=vwsc2 + lda #<$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT + lda #>$a9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[2] = { SPLINE_TO, {59,195}, {75,195} } + // [14] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+2*SIZEOF_STRUCT_SEGMENT + // [15] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3b -- _deref_pwsc1=vwsc2 + lda #<$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT + lda #>$3b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+2*SIZEOF_STRUCT_SEGMENT+1 + // [16] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // [17] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4b -- _deref_pwsc1=vwsc2 + lda #<$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT + lda #>$4b + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+2*SIZEOF_STRUCT_SEGMENT+1 + // [18] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 2*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+2*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[3] = { SPLINE_TO, {23,178}, {38,195} } + // [19] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+3*SIZEOF_STRUCT_SEGMENT + // [20] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $17 -- _deref_pwsc1=vwsc2 + lda #<$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT + lda #>$17 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+3*SIZEOF_STRUCT_SEGMENT+1 + // [21] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $b2 -- _deref_pwsc1=vwsc2 + lda #<$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$b2 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // [22] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $26 -- _deref_pwsc1=vwsc2 + lda #<$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT + lda #>$26 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+3*SIZEOF_STRUCT_SEGMENT+1 + // [23] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 3*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $c3 -- _deref_pwsc1=vwsc2 + lda #<$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT + lda #>$c3 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+3*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[4] = { SPLINE_TO, {9,132}, {9,161} } + // [24] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+4*SIZEOF_STRUCT_SEGMENT + // [25] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+4*SIZEOF_STRUCT_SEGMENT+1 + // [26] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $84 -- _deref_pwsc1=vwsc2 + lda #<$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$84 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // [27] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+4*SIZEOF_STRUCT_SEGMENT+1 + // [28] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 4*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a1 -- _deref_pwsc1=vwsc2 + lda #<$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT + lda #>$a1 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+4*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[5] = { SPLINE_TO, {25,87}, {9,104} } + // [29] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+5*SIZEOF_STRUCT_SEGMENT + // [30] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $19 -- _deref_pwsc1=vwsc2 + lda #<$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT + lda #>$19 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+5*SIZEOF_STRUCT_SEGMENT+1 + // [31] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $57 -- _deref_pwsc1=vwsc2 + lda #<$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$57 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // [32] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 9 -- _deref_pwsc1=vwsc2 + lda #<9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT + lda #>9 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+5*SIZEOF_STRUCT_SEGMENT+1 + // [33] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 5*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+5*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[6] = { SPLINE_TO, {65,69}, {42,69} } + // [34] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+6*SIZEOF_STRUCT_SEGMENT + // [35] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $41 -- _deref_pwsc1=vwsc2 + lda #<$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT + lda #>$41 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+6*SIZEOF_STRUCT_SEGMENT+1 + // [36] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // [37] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $2a -- _deref_pwsc1=vwsc2 + lda #<$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT + lda #>$2a + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+6*SIZEOF_STRUCT_SEGMENT+1 + // [38] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 6*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+6*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[7] = { SPLINE_TO, {93,79}, {82,69} } + // [39] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+7*SIZEOF_STRUCT_SEGMENT + // [40] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+7*SIZEOF_STRUCT_SEGMENT+1 + // [41] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // [42] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+7*SIZEOF_STRUCT_SEGMENT+1 + // [43] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 7*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+7*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[8] = { SPLINE_TO, {105,98}, {105,88} } + // [44] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+8*SIZEOF_STRUCT_SEGMENT + // [45] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+8*SIZEOF_STRUCT_SEGMENT+1 + // [46] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // [47] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+8*SIZEOF_STRUCT_SEGMENT+1 + // [48] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[9] = { SPLINE_TO, {102,106}, {105,103} } + // [49] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+9*SIZEOF_STRUCT_SEGMENT + // [50] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $66 -- _deref_pwsc1=vwsc2 + lda #<$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT + lda #>$66 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+9*SIZEOF_STRUCT_SEGMENT+1 + // [51] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6a -- _deref_pwsc1=vwsc2 + lda #<$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$6a + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // [52] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $69 -- _deref_pwsc1=vwsc2 + lda #<$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT + lda #>$69 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+9*SIZEOF_STRUCT_SEGMENT+1 + // [53] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 9*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $67 -- _deref_pwsc1=vwsc2 + lda #<$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT + lda #>$67 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+9*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[10] = { SPLINE_TO, {93,109}, {98,109} } + // [54] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$a*SIZEOF_STRUCT_SEGMENT + // [55] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$a*SIZEOF_STRUCT_SEGMENT+1 + // [56] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // [57] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$a*SIZEOF_STRUCT_SEGMENT+1 + // [58] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $a*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$a*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[11] = { SPLINE_TO, {81,104}, {85,109} } + // [59] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$b*SIZEOF_STRUCT_SEGMENT + // [60] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $51 -- _deref_pwsc1=vwsc2 + lda #<$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT + lda #>$51 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$b*SIZEOF_STRUCT_SEGMENT+1 + // [61] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // [62] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $55 -- _deref_pwsc1=vwsc2 + lda #<$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT + lda #>$55 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$b*SIZEOF_STRUCT_SEGMENT+1 + // [63] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $b*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6d -- _deref_pwsc1=vwsc2 + lda #<$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT + lda #>$6d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$b*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[12] = { SPLINE_TO, {78,93}, {79,101} } + // [64] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$c*SIZEOF_STRUCT_SEGMENT + // [65] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$c*SIZEOF_STRUCT_SEGMENT+1 + // [66] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5d -- _deref_pwsc1=vwsc2 + lda #<$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$5d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // [67] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4f -- _deref_pwsc1=vwsc2 + lda #<$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT + lda #>$4f + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$c*SIZEOF_STRUCT_SEGMENT+1 + // [68] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $c*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $65 -- _deref_pwsc1=vwsc2 + lda #<$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT + lda #>$65 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$c*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[13] = { SPLINE_TO, {73,82}, {78,86} } + // [69] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$d*SIZEOF_STRUCT_SEGMENT + // [70] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $49 -- _deref_pwsc1=vwsc2 + lda #<$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT + lda #>$49 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$d*SIZEOF_STRUCT_SEGMENT+1 + // [71] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $52 -- _deref_pwsc1=vwsc2 + lda #<$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$52 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // [72] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$d*SIZEOF_STRUCT_SEGMENT+1 + // [73] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $d*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $56 -- _deref_pwsc1=vwsc2 + lda #<$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT + lda #>$56 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$d*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[14] = { SPLINE_TO, {61,78}, {69,78} } + // [74] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$e*SIZEOF_STRUCT_SEGMENT + // [75] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $3d -- _deref_pwsc1=vwsc2 + lda #<$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT + lda #>$3d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$e*SIZEOF_STRUCT_SEGMENT+1 + // [76] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // [77] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $45 -- _deref_pwsc1=vwsc2 + lda #<$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT + lda #>$45 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$e*SIZEOF_STRUCT_SEGMENT+1 + // [78] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $e*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$e*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[15] = { SPLINE_TO, {40,88}, {48,78} } + // [79] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$f*SIZEOF_STRUCT_SEGMENT + // [80] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$f*SIZEOF_STRUCT_SEGMENT+1 + // [81] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $58 -- _deref_pwsc1=vwsc2 + lda #<$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$58 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // [82] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $30 -- _deref_pwsc1=vwsc2 + lda #<$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT + lda #>$30 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$f*SIZEOF_STRUCT_SEGMENT+1 + // [83] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $f*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $4e -- _deref_pwsc1=vwsc2 + lda #<$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT + lda #>$4e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$f*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[16] = { SPLINE_TO, {29,121}, {29,100} } + // [84] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$10*SIZEOF_STRUCT_SEGMENT + // [85] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$10*SIZEOF_STRUCT_SEGMENT+1 + // [86] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $79 -- _deref_pwsc1=vwsc2 + lda #<$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$79 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // [87] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$10*SIZEOF_STRUCT_SEGMENT+1 + // [88] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $10*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $64 -- _deref_pwsc1=vwsc2 + lda #<$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT + lda #>$64 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$10*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[17] = { SPLINE_TO, {40,158}, {29,142} } + // [89] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$11*SIZEOF_STRUCT_SEGMENT + // [90] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $28 -- _deref_pwsc1=vwsc2 + lda #<$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT + lda #>$28 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$11*SIZEOF_STRUCT_SEGMENT+1 + // [91] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $9e -- _deref_pwsc1=vwsc2 + lda #<$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$9e + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // [92] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $1d -- _deref_pwsc1=vwsc2 + lda #<$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT + lda #>$1d + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$11*SIZEOF_STRUCT_SEGMENT+1 + // [93] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $11*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $8e -- _deref_pwsc1=vwsc2 + lda #<$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT + lda #>$8e + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$11*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[18] = { SPLINE_TO, {68,174}, {50,174} } + // [94] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$12*SIZEOF_STRUCT_SEGMENT + // [95] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $44 -- _deref_pwsc1=vwsc2 + lda #<$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT + lda #>$44 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$12*SIZEOF_STRUCT_SEGMENT+1 + // [96] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // [97] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $32 -- _deref_pwsc1=vwsc2 + lda #<$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT + lda #>$32 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$12*SIZEOF_STRUCT_SEGMENT+1 + // [98] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $12*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$12*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[19] = { SPLINE_TO, {91,166}, {80,174} } + // [99] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$13*SIZEOF_STRUCT_SEGMENT + // [100] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $5b -- _deref_pwsc1=vwsc2 + lda #<$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT + lda #>$5b + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$13*SIZEOF_STRUCT_SEGMENT+1 + // [101] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a6 -- _deref_pwsc1=vwsc2 + lda #<$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$a6 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // [102] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $50 -- _deref_pwsc1=vwsc2 + lda #<$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT + lda #>$50 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$13*SIZEOF_STRUCT_SEGMENT+1 + // [103] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $13*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $ae -- _deref_pwsc1=vwsc2 + lda #<$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT + lda #>$ae + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$13*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[20] = { SPLINE_TO, {104,144}, {98,160} } + // [104] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) SPLINE_TO -- _deref_pbuc1=vbuc2 + lda #SPLINE_TO + sta letter_c+$14*SIZEOF_STRUCT_SEGMENT + // [105] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $68 -- _deref_pwsc1=vwsc2 + lda #<$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT + lda #>$68 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$14*SIZEOF_STRUCT_SEGMENT+1 + // [106] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $90 -- _deref_pwsc1=vwsc2 + lda #<$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$90 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // [107] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $62 -- _deref_pwsc1=vwsc2 + lda #<$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT + lda #>$62 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$14*SIZEOF_STRUCT_SEGMENT+1 + // [108] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $14*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $a0 -- _deref_pwsc1=vwsc2 + lda #<$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT + lda #>$a0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$14*SIZEOF_STRUCT_SEGMENT+1 + // letter_c[21] = { LINE_TO, {108,146}, {0,0} } + // [109] *((byte*)(const struct Segment[$15]) letter_c#0+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (const byte) LINE_TO -- _deref_pbuc1=vbuc2 + lda #LINE_TO + sta letter_c+$15*SIZEOF_STRUCT_SEGMENT + // [110] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) $6c -- _deref_pwsc1=vwsc2 + lda #<$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT + lda #>$6c + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+$15*SIZEOF_STRUCT_SEGMENT+1 + // [111] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed word) $92 -- _deref_pwsc1=vwsc2 + lda #<$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + lda #>$92 + sta letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // [112] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + lda #<0 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+$15*SIZEOF_STRUCT_SEGMENT+1 + // [113] *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT) ← (signed byte) 0 -- _deref_pwsc1=vwsc2 + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT + sta letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+$15*SIZEOF_STRUCT_SEGMENT+1 + // bitmap_init(BITMAP_GRAPHICS, BITMAP_SCREEN) + // [114] call bitmap_init + // [294] phi from main to bitmap_init [phi:main->bitmap_init] + jsr bitmap_init + // [115] phi from main to main::@8 [phi:main->main::@8] + // main::@8 + // bitmap_clear(BLACK, WHITE) + // [116] call bitmap_clear + // [280] phi from main::@8 to bitmap_clear [phi:main::@8->bitmap_clear] + jsr bitmap_clear + // main::vicSelectGfxBank1 + // *CIA2_PORT_A_DDR = %00000011 + // [117] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [118] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + // main::vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_@1 + // *CIA2_PORT_A = toDd00(gfx) + // [119] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [120] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + // main::toD0181 + // main::@7 + // *D018 = toD018(BITMAP_SCREEN, BITMAP_GRAPHICS) + // [121] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 + // [122] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // [123] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + // [123] phi (signed word) main::current_y#4 = (signed byte) 0 [phi:main::@7->main::@1#0] -- vwsz1=vbsc1 + lda #<0 + sta current_y + sta current_y+1 + // [123] phi (signed word) main::current_x#4 = (signed byte) 0 [phi:main::@7->main::@1#1] -- vwsz1=vbsc1 + sta current_x + sta current_x+1 + // [123] phi (byte) main::i#10 = (byte) 0 [phi:main::@7->main::@1#2] -- vbuz1=vbuc1 + sta i + // main::@1 + b1: + // segment = letter_c[i] + // [124] (byte) main::$206 ← (byte) main::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + lda i + asl + asl + asl + // [125] (byte~) main::$44 ← (byte) main::$206 + (byte) main::i#10 -- vbuyy=vbuaa_plus_vbuz1 + clc + adc i + tay + // [126] (byte) main::segment_type#0 ← *((byte*)(const struct Segment[$15]) letter_c#0 + (byte~) main::$44) -- vbuxx=pbuc1_derefidx_vbuyy + ldx letter_c,y + // [127] (signed word) main::current_x#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_TO,y + sta current_x_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,y + sta current_x_8+1 + // [128] (signed word) main::current_y#8 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta current_y_8 + lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta current_y_8+1 + // [129] (signed word) main::segment_via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y + sta segment_via_x + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y + sta segment_via_x+1 + // [130] (signed word) main::segment_via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment[$15]) letter_c#0+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) main::$44) -- vwsz1=pwsc1_derefidx_vbuyy + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta segment_via_y + lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta segment_via_y+1 + // if(segment.type==MOVE_TO) + // [131] if((byte) main::segment_type#0==(const byte) MOVE_TO) goto main::@3 -- vbuxx_eq_vbuc1_then_la1 + cpx #MOVE_TO + beq b3 + // main::@4 + // if(segment.type==SPLINE_TO) + // [132] if((byte) main::segment_type#0==(const byte) SPLINE_TO) goto main::@2 -- vbuxx_eq_vbuc1_then_la1 + cpx #SPLINE_TO + beq b2 + // main::@5 + // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)to.x, (unsigned int)to.y) + // [133] (word) bitmap_line::x1#0 ← (word)(signed word) main::current_x#4 + // [134] (word) bitmap_line::y1#0 ← (word)(signed word) main::current_y#4 + // [135] (word) bitmap_line::x2#0 ← (word)(signed word) main::current_x#8 -- vwuz1=vwuz2 + lda current_x_8 + sta bitmap_line.x2 + lda current_x_8+1 + sta bitmap_line.x2+1 + // [136] (word) bitmap_line::y2#0 ← (word)(signed word) main::current_y#8 -- vwuz1=vwuz2 + lda current_y_8 + sta bitmap_line.y2 + lda current_y_8+1 + sta bitmap_line.y2+1 + // [137] call bitmap_line + // [168] phi from main::@5 to bitmap_line [phi:main::@5->bitmap_line] + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:main::@5->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:main::@5->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:main::@5->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:main::@5->bitmap_line#3] -- register_copy + jsr bitmap_line + // main::@3 + b3: + // for( byte i: 0..sizeof(letter_c)/sizeof(struct Segment)) + // [138] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + inc i + // [139] if((byte) main::i#1!=(byte) $15*(const byte) SIZEOF_STRUCT_SEGMENT/(const byte) SIZEOF_STRUCT_SEGMENT+(byte) 1) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + lda #$15*SIZEOF_STRUCT_SEGMENT/SIZEOF_STRUCT_SEGMENT+1 + cmp i + bne b10 + // main::@6 + b6: + // (*(PRINT_SCREEN+999))++; + // [140] *((const byte*) PRINT_SCREEN#0+(word) $3e7) ← ++ *((const byte*) PRINT_SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 + inc PRINT_SCREEN+$3e7 + jmp b6 + // main::@10 + b10: + // [141] (signed word~) main::current_x#9 ← (signed word) main::current_x#8 -- vwsz1=vwsz2 + lda current_x_8 + sta current_x + lda current_x_8+1 + sta current_x+1 + // [142] (signed word~) main::current_y#9 ← (signed word) main::current_y#8 -- vwsz1=vwsz2 + lda current_y_8 + sta current_y + lda current_y_8+1 + sta current_y+1 + // [123] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + // [123] phi (signed word) main::current_y#4 = (signed word~) main::current_y#9 [phi:main::@10->main::@1#0] -- register_copy + // [123] phi (signed word) main::current_x#4 = (signed word~) main::current_x#9 [phi:main::@10->main::@1#1] -- register_copy + // [123] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@10->main::@1#2] -- register_copy + jmp b1 + // main::@2 + b2: + // spline_8segB(current, via, to) + // [143] (signed word) spline_8segB::p0_x#0 ← (signed word) main::current_x#4 + // [144] (signed word) spline_8segB::p0_y#0 ← (signed word) main::current_y#4 + // [145] (signed word) spline_8segB::p1_x#0 ← (signed word) main::segment_via_x#0 + // [146] (signed word) spline_8segB::p1_y#0 ← (signed word) main::segment_via_y#0 + // [147] (signed word) spline_8segB::p2_x#0 ← (signed word) main::current_x#8 + // [148] (signed word) spline_8segB::p2_y#0 ← (signed word) main::current_y#8 + // [149] call spline_8segB + jsr spline_8segB + // [150] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + // main::@9 + // bitmap_plot_spline_8seg() + // [151] call bitmap_plot_spline_8seg + jsr bitmap_plot_spline_8seg + jmp b3 +} + // bitmap_plot_spline_8seg +// Plot the spline in the SPLINE_8SEG array +bitmap_plot_spline_8seg: { + .label current_x = 3 + .label current_y = 5 + .label to_x = $24 + .label to_y = $26 + .label n = 7 + // current = SPLINE_8SEG[0] + // [152] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG + sta current_x + lda SPLINE_8SEG+1 + sta current_x+1 + // [153] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y + sta current_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + lda #1 + sta n + // bitmap_plot_spline_8seg::@1 + b1: + // to = SPLINE_8SEG[n] + // [155] (byte~) bitmap_plot_spline_8seg::$7 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 + lda n + asl + asl + tax + // [156] (signed word) bitmap_plot_spline_8seg::to_x#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuxx + lda SPLINE_8SEG,x + sta to_x + lda SPLINE_8SEG+1,x + sta to_x+1 + // [157] (signed word) bitmap_plot_spline_8seg::to_y#0 ← *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$7) -- vwsz1=pwsc1_derefidx_vbuxx + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + sta to_y + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + sta to_y+1 + // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)to.x, (unsigned int)to.y) + // [158] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + // [159] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + // [160] (word) bitmap_line::x2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_x#0 -- vwuz1=vwuz2 + lda to_x + sta bitmap_line.x2 + lda to_x+1 + sta bitmap_line.x2+1 + // [161] (word) bitmap_line::y2#1 ← (word)(signed word) bitmap_plot_spline_8seg::to_y#0 -- vwuz1=vwuz2 + lda to_y + sta bitmap_line.y2 + lda to_y+1 + sta bitmap_line.y2+1 + // [162] call bitmap_line + // [168] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + // [168] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [168] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [168] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [168] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + jsr bitmap_line + // bitmap_plot_spline_8seg::@2 + // for(char n:1..8) + // [163] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + inc n + // [164] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@3 -- vbuz1_neq_vbuc1_then_la1 + lda #9 + cmp n + bne b3 + // bitmap_plot_spline_8seg::@return + // } + // [165] return + rts + // bitmap_plot_spline_8seg::@3 + b3: + // [166] (signed word~) bitmap_plot_spline_8seg::current_x#4 ← (signed word) bitmap_plot_spline_8seg::to_x#0 -- vwsz1=vwsz2 + lda to_x + sta current_x + lda to_x+1 + sta current_x+1 + // [167] (signed word~) bitmap_plot_spline_8seg::current_y#4 ← (signed word) bitmap_plot_spline_8seg::to_y#0 -- vwsz1=vwsz2 + lda to_y + sta current_y + lda to_y+1 + sta current_y+1 + // [154] phi from bitmap_plot_spline_8seg::@3 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1] + // [154] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word~) bitmap_plot_spline_8seg::current_y#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [154] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word~) bitmap_plot_spline_8seg::current_x#4 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [154] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@3->bitmap_plot_spline_8seg::@1#2] -- register_copy + jmp b1 +} + // bitmap_line +// Draw a line on the bitmap using bresenhams algorithm +// bitmap_line(word zeropage(3) x1, word zeropage(5) y1, word zeropage(8) x2, word zeropage($a) y2) +bitmap_line: { + .label x = 3 + .label y = 5 + .label dx = $28 + .label dy = $14 + .label sx = $2a + .label sy = $12 + .label e1 = $e + .label e = $c + .label x1 = 3 + .label y1 = 5 + .label x2 = 8 + .label y2 = $a + // abs_u16(x2-x1) + // [169] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta abs_u16.w + lda x2+1 + sbc x+1 + sta abs_u16.w+1 + // [170] call abs_u16 + // [234] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + jsr abs_u16 + // abs_u16(x2-x1) + // [171] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + // bitmap_line::@12 + // dx = abs_u16(x2-x1) + // [172] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + lda abs_u16.return + sta dx + lda abs_u16.return+1 + sta dx+1 + // abs_u16(y2-y1) + // [173] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta abs_u16.w + lda y2+1 + sbc y+1 + sta abs_u16.w+1 + // [174] call abs_u16 + // [234] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + // [234] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + jsr abs_u16 + // abs_u16(y2-y1) + // [175] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + // bitmap_line::@13 + // dy = abs_u16(y2-y1) + // [176] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + // if(dx==0 && dy==0) + // [177] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + lda dx + bne b1 + lda dx+1 + bne b1 + // bitmap_line::@18 + // [178] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + lda dy + bne !+ + lda dy+1 + bne !b4+ + jmp b4 + !b4: + !: + // bitmap_line::@1 + b1: + // sgn_u16(x2-x1) + // [179] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + lda x2 + sec + sbc x + sta sgn_u16.w + lda x2+1 + sbc x+1 + sta sgn_u16.w+1 + // [180] call sgn_u16 + // [227] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + jsr sgn_u16 + // sgn_u16(x2-x1) + // [181] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + // bitmap_line::@14 + // sx = sgn_u16(x2-x1) + // [182] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + lda sgn_u16.return + sta sx + lda sgn_u16.return+1 + sta sx+1 + // sgn_u16(y2-y1) + // [183] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + lda y2 + sec + sbc y + sta sgn_u16.w + lda y2+1 + sbc y+1 + sta sgn_u16.w+1 + // [184] call sgn_u16 + // [227] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + // [227] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + jsr sgn_u16 + // sgn_u16(y2-y1) + // [185] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + // bitmap_line::@15 + // sy = sgn_u16(y2-y1) + // [186] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // if(dx > dy) + // [187] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + lda dy+1 + cmp dx+1 + bcc b2 + bne !+ + lda dy + cmp dx + bcc b2 + !: + // bitmap_line::@5 + // e = dx/2 + // [188] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dx+1 + lsr + sta e+1 + lda dx + ror + sta e + // [189] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + // [189] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [189] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [189] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + // bitmap_line::@6 + b6: + // bitmap_plot(x,(byte)y) + // [190] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 + lda y + tax + // [191] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [192] call bitmap_plot + // [220] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + jsr bitmap_plot + // bitmap_line::@16 + // y += sy + // [193] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // e += dx + // [194] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e + clc + adc dx + sta e + lda e+1 + adc dx+1 + sta e+1 + // if(dy=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + cmp dy+1 + bne !+ + lda e + cmp dy + beq b7 + !: + bcc b7 + // bitmap_line::@8 + // x += sx + // [196] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // e -= dy + // [197] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e + sec + sbc dy + sta e + lda e+1 + sbc dy+1 + sta e+1 + // [198] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + // [198] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [198] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + // bitmap_line::@7 + b7: + // while (y != y2) + // [199] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + lda y+1 + cmp y2+1 + bne b6 + lda y + cmp y2 + bne b6 + // [200] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + // [200] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [200] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + // bitmap_line::@3 + b3: + // bitmap_plot(x,(byte)y) + // [201] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 + lda y + tax + // [202] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [203] call bitmap_plot + // [220] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + jsr bitmap_plot + // bitmap_line::@return + // } + // [204] return + rts + // bitmap_line::@2 + b2: + // e = dy/2 + // [205] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + lda dy+1 + lsr + sta e1+1 + lda dy + ror + sta e1 + // [206] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + // [206] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [206] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [206] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + // bitmap_line::@9 + b9: + // bitmap_plot(x,(byte)y) + // [207] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 + lda y + tax + // [208] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [209] call bitmap_plot + // [220] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + jsr bitmap_plot + // bitmap_line::@17 + // x += sx + // [210] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc sx + sta x + lda x+1 + adc sx+1 + sta x+1 + // e += dy + // [211] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda e1 + clc + adc dy + sta e1 + lda e1+1 + adc dy+1 + sta e1+1 + // if(dx < e) + // [212] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + cmp dx+1 + bne !+ + lda e1 + cmp dx + beq b10 + !: + bcc b10 + // bitmap_line::@11 + // y += sy + // [213] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + lda y + clc + adc sy + sta y + lda y+1 + adc sy+1 + sta y+1 + // e -= dx + // [214] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + lda e1 + sec + sbc dx + sta e1 + lda e1+1 + sbc dx+1 + sta e1+1 + // [215] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + // [215] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [215] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + // bitmap_line::@10 + b10: + // while (x != x2) + // [216] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + lda x+1 + cmp x2+1 + bne b9 + lda x + cmp x2 + bne b9 + jmp b3 + // bitmap_line::@4 + b4: + // bitmap_plot(x,(byte)y) + // [217] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuxx=_byte_vwuz1 + lda y + tax + // [218] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + // [219] call bitmap_plot + // [220] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + // [220] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [220] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + jsr bitmap_plot + rts +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage(3) x, byte register(X) y) +bitmap_plot: { + .label _1 = $2e + .label plotter = $2c + .label x = 3 + // (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } + // [221] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda bitmap_plot_yhi,x + sta plotter+1 + lda bitmap_plot_ylo,x + sta plotter + // x & $fff8 + // [222] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // plotter += ( x & $fff8 ) + // [223] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + // w + // [228] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + lda w+1 + // >w&0x80 + // [229] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + and #$80 + // if(>w&0x80) + // [230] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + cmp #0 + bne b1 + // [232] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [232] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<1 + sta return + lda #>1 + sta return+1 + rts + // [231] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // sgn_u16::@1 + b1: + // [232] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [232] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + lda #<-1 + sta return + lda #>-1 + sta return+1 + // sgn_u16::@return + // } + // [233] return + rts +} + // abs_u16 +// Get the absolute value of a 16-bit unsigned number treated as a signed number. +// abs_u16(word zeropage($14) w) +abs_u16: { + .label w = $14 + .label return = $14 + // >w + // [235] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + lda w+1 + // >w&0x80 + // [236] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + and #$80 + // if(>w&0x80) + // [237] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + cmp #0 + bne b1 + // [239] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [239] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + rts + // abs_u16::@1 + b1: + // return -w; + // [238] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + sec + lda #0 + sbc return + sta return + lda #0 + sbc return+1 + sta return+1 + // abs_u16::@return + // } + // [240] return + rts +} + // spline_8segB +// Generate a 8-segment quadratic spline using 16-bit fixed point 1/64-format math (6 decimal bits). +// The resulting spline segment points are returned in SPLINE_8SEG[] +// Point values must be within [-200 ; 1ff] for the calculation to not overflow. +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// spline_8segB(signed word zeropage(3) p0_x, signed word zeropage(5) p0_y, signed word zeropage($16) p1_x, signed word zeropage($18) p1_y, signed word zeropage($20) p2_x, signed word zeropage($22) p2_y) +spline_8segB: { + .label _0 = $30 + .label _1 = $30 + .label _3 = $32 + .label _4 = $32 + .label _6 = $16 + .label _8 = $18 + .label _10 = $16 + .label _12 = $18 + .label _18 = 3 + .label _19 = 3 + .label _20 = 5 + .label _21 = 5 + .label _22 = $34 + .label _23 = $34 + .label _24 = $36 + .label _25 = $36 + .label a_x = $30 + .label a_y = $32 + .label b_x = $16 + .label b_y = $18 + .label i_x = $16 + .label i_y = $18 + .label j_x = $30 + .label j_y = $32 + .label p_x = 3 + .label p_y = 5 + .label p0_x = 3 + .label p0_y = 5 + .label p1_x = $16 + .label p1_y = $18 + .label p2_x = $20 + .label p2_y = $22 + // p1.x*2 + // [241] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_x + asl + sta _0 + lda p1_x+1 + rol + sta _0+1 + // p2.x - p1.x*2 + // [242] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 + lda p2_x + sec + sbc _1 + sta _1 + lda p2_x+1 + sbc _1+1 + sta _1+1 + // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} + // [243] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + // p1.y*2 + // [244] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_y + asl + sta _3 + lda p1_y+1 + rol + sta _3+1 + // p2.y - p1.y*2 + // [245] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 + lda p2_y + sec + sbc _4 + sta _4 + lda p2_y+1 + sbc _4+1 + sta _4+1 + // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} + // [246] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + // p1.x - p0.x + // [247] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 + lda _6 + sec + sbc p0_x + sta _6 + lda _6+1 + sbc p0_x+1 + sta _6+1 + // b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 } + // [248] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl b_x + rol b_x+1 + // p1.y - p0.y + // [249] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 + lda _8 + sec + sbc p0_y + sta _8 + lda _8+1 + sbc p0_y+1 + sta _8+1 + // b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 } + // [250] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl b_y + rol b_y+1 + // b.x*8 + // [251] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + asl _10 + rol _10+1 + // i = { a.x + b.x*8, a.y + b.y*8} + // [252] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 + lda i_x + clc + adc a_x + sta i_x + lda i_x+1 + adc a_x+1 + sta i_x+1 + // b.y*8 + // [253] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + asl _12 + rol _12+1 + // i = { a.x + b.x*8, a.y + b.y*8} + // [254] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 + lda i_y + clc + adc a_y + sta i_y + lda i_y+1 + adc a_y+1 + sta i_y+1 + // j = { a.x*2, a.y*2 } + // [255] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl j_x + rol j_x+1 + // [256] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl j_y + rol j_y+1 + // p = { p0.x*0x40, p0.y*0x40 } + // [257] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + lda p_x+1 + sta $ff + lda p_x + sta p_x+1 + lda #0 + sta p_x + lsr $ff + ror p_x+1 + ror p_x + lsr $ff + ror p_x+1 + ror p_x + // [258] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + lda p_y+1 + sta $ff + lda p_y + sta p_y+1 + lda #0 + sta p_y + lsr $ff + ror p_y+1 + ror p_y + lsr $ff + ror p_y+1 + ror p_y + // [259] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 + tay + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + // [259] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + // [259] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [259] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [259] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [259] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [259] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + // spline_8segB::@1 + b1: + // p.x+0x20 + // [260] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_x + clc + adc #<$20 + sta _22 + lda p_x+1 + adc #>$20 + sta _22+1 + // (p.x+0x20)/0x40 + // [261] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _23 + sta $ff + lda _23+1 + sta _23 + lda #0 + bit _23+1 + bpl !+ + lda #$ff + !: + sta _23+1 + rol $ff + rol _23 + rol _23+1 + rol $ff + rol _23 + rol _23+1 + // p.y+0x20 + // [262] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + lda p_y + clc + adc #<$20 + sta _24 + lda p_y+1 + adc #>$20 + sta _24+1 + // (p.y+0x20)/0x40 + // [263] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _25 + sta $ff + lda _25+1 + sta _25 + lda #0 + bit _25+1 + bpl !+ + lda #$ff + !: + sta _25+1 + rol $ff + rol _25 + rol _25+1 + rol $ff + rol _25 + rol _25+1 + // SPLINE_8SEG[n] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 } + // [264] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + tya + asl + asl + tax + // [265] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0 + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 + lda _23 + sta SPLINE_8SEG,x + lda _23+1 + sta SPLINE_8SEG+1,x + // [266] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 + lda _25 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + lda _25+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + // p = { p.x+i.x, p.y+i.y } + // [267] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + // [268] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + // i = { i.x+j.x, i.y+j.y } + // [269] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + // [270] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + // for( char n: 0..7) + // [271] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy + iny + // [272] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #8 + beq !b1+ + jmp b1 + !b1: + // spline_8segB::@2 + // p.x+0x20 + // [273] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + lda _18 + clc + adc #<$20 + sta _18 + lda _18+1 + adc #>$20 + sta _18+1 + // (p.x+0x20)/0x40 + // [274] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _19 + sta $ff + lda _19+1 + sta _19 + lda #0 + bit _19+1 + bpl !+ + lda #$ff + !: + sta _19+1 + rol $ff + rol _19 + rol _19+1 + rol $ff + rol _19 + rol _19+1 + // p.y+0x20 + // [275] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + lda _20 + clc + adc #<$20 + sta _20 + lda _20+1 + adc #>$20 + sta _20+1 + // (p.y+0x20)/0x40 + // [276] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + lda _21 + sta $ff + lda _21+1 + sta _21 + lda #0 + bit _21+1 + bpl !+ + lda #$ff + !: + sta _21+1 + rol $ff + rol _21 + rol _21+1 + rol $ff + rol _21 + rol _21+1 + // SPLINE_8SEG[8] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 } + // [277] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + lda _19 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _19+1 + sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + // [278] *((signed word*)(const struct SplineVector16[9]) SPLINE_8SEG#0+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + lda _21 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 + lda _21+1 + sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 + // spline_8segB::@return + // } + // [279] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // memset(bitmap_screen, col, 1000uw) + // [281] call memset + // [285] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [285] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + ldx #col + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [282] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + // bitmap_clear::@1 + // memset(bitmap_gfx, 0, 8000uw) + // [283] call memset + // [285] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [285] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + ldx #0 + // [285] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [285] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + // bitmap_clear::@return + // } + // [284] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($1c) str, byte register(X) c, word zeropage($1a) num) +memset: { + .label end = $1a + .label dst = $1c + .label num = $1a + .label str = $1c + // if(num>0) + // [286] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + // memset::@1 + // end = (char*)str + num + // [287] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + // [288] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [289] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + // [289] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + // memset::@2 + b2: + // *dst = c + // [290] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (dst),y + // for(char* dst = str; dst!=end; dst++) + // [291] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [292] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2 + lda dst + cmp end + bne b2 + // memset::@return + breturn: + // } + // [293] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $38 + .label yoffs = $1e + // [295] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + // [295] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [295] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + // [295] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + // [295] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [295] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + // bitmap_init::@1 + b1: + // bitmap_plot_bit[x] = bits + // [296] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + // bits >>= 1 + // [297] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + lsr + // if(bits==0) + // [298] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + cmp #0 + bne b2 + // [300] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + // [300] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + // [299] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + // bitmap_init::@6 + // [300] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + // [300] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + // bitmap_init::@2 + b2: + // for(byte x : 0..255) + // [301] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + inx + // [302] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1 + // [303] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + // [303] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [303] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + // [303] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + // [303] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [303] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + // bitmap_init::@3 + b3: + // y&$7 + // [304] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + lda #7 + sax _7 + // yoffs + // [308] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + lda yoffs+1 + // bitmap_plot_yhi[y] = >yoffs + // [309] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + // if((y&$7)==7) + // [310] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4 + // bitmap_init::@5 + // yoffs = yoffs + 40*8 + // [311] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [312] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + // [312] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + // bitmap_init::@4 + b4: + // for(byte y : 0..255) + // [313] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + inx + // [314] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3 + // bitmap_init::@return + // } + // [315] return + rts +} + // File Data + // Array filled with spline segment points by splinePlot_8() + SPLINE_8SEG: .fill 4*9, 0 + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + // True type letter a + letter_c: .fill 9*$15, 0 + diff --git a/src/test/ref/complex/splines/simple-splines.sym b/src/test/ref/complex/splines/simple-splines.sym new file mode 100644 index 000000000..8a0174751 --- /dev/null +++ b/src/test/ref/complex/splines/simple-splines.sym @@ -0,0 +1,425 @@ +(label) @1 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(const byte*) BITMAP_GRAPHICS#0 BITMAP_GRAPHICS = (byte*) 24576 +(byte*) BITMAP_SCREEN +(const byte*) BITMAP_SCREEN#0 BITMAP_SCREEN = (byte*) 23552 +(byte) BLACK +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = (byte*) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = (byte*) 56578 +(byte*) D011 +(const byte*) D011#0 D011 = (byte*) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = (byte*) 53272 +(const byte) LINE_TO LINE_TO = (byte) 2 +(const byte) MOVE_TO MOVE_TO = (byte) 0 +(const byte) OFFSET_STRUCT_SEGMENT_TO OFFSET_STRUCT_SEGMENT_TO = (byte) 1 +(const byte) OFFSET_STRUCT_SEGMENT_VIA OFFSET_STRUCT_SEGMENT_VIA = (byte) 5 +(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y OFFSET_STRUCT_SPLINEVECTOR16_Y = (byte) 2 +(byte*) PRINT_SCREEN +(const byte*) PRINT_SCREEN#0 PRINT_SCREEN = (byte*) 1024 +(const byte) SIZEOF_STRUCT_SEGMENT SIZEOF_STRUCT_SEGMENT = (byte) 9 +(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4 +(struct SplineVector16[9]) SPLINE_8SEG +(const struct SplineVector16[9]) SPLINE_8SEG#0 SPLINE_8SEG = { fill( 9, 0) } +(const byte) SPLINE_TO SPLINE_TO = (byte) 1 +(struct SplineVector16) Segment::to +(byte) Segment::type +(struct SplineVector16) Segment::via +(const byte) SegmentType::LINE_TO LINE_TO = (byte) 2 +(const byte) SegmentType::MOVE_TO MOVE_TO = (byte) 0 +(const byte) SegmentType::SPLINE_TO SPLINE_TO = (byte) 1 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte) $20 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte) $10 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte) 1 +(word()) abs_u16((word) abs_u16::w) +(byte~) abs_u16::$0 reg byte a 4.0 +(byte~) abs_u16::$1 reg byte a 4.0 +(label) abs_u16::@1 +(label) abs_u16::@return +(word) abs_u16::return +(word) abs_u16::return#0 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#1 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#2 return zp ZP_WORD:20 4.0 +(word) abs_u16::return#4 return zp ZP_WORD:20 2.0 +(word) abs_u16::w +(word) abs_u16::w#0 w zp ZP_WORD:20 4.0 +(word) abs_u16::w#1 w zp ZP_WORD:20 4.0 +(word) abs_u16::w#2 w zp ZP_WORD:20 2.5 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(label) bitmap_clear::@1 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10 +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 $7 zp ZP_BYTE:56 5.5 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:30 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:30 6.875 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:30 11.0 +(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) +(label) bitmap_line::@1 +(label) bitmap_line::@10 +(label) bitmap_line::@11 +(label) bitmap_line::@12 +(label) bitmap_line::@13 +(label) bitmap_line::@14 +(label) bitmap_line::@15 +(label) bitmap_line::@16 +(label) bitmap_line::@17 +(label) bitmap_line::@18 +(label) bitmap_line::@2 +(label) bitmap_line::@3 +(label) bitmap_line::@4 +(label) bitmap_line::@5 +(label) bitmap_line::@6 +(label) bitmap_line::@7 +(label) bitmap_line::@8 +(label) bitmap_line::@9 +(label) bitmap_line::@return +(word) bitmap_line::dx +(word) bitmap_line::dx#0 dx zp ZP_WORD:40 7.775 +(word) bitmap_line::dy +(word) bitmap_line::dy#0 dy zp ZP_WORD:20 8.638888888888888 +(word) bitmap_line::e +(word) bitmap_line::e#0 e zp ZP_WORD:12 4.0 +(word) bitmap_line::e#1 e zp ZP_WORD:12 134.66666666666666 +(word) bitmap_line::e#2 e zp ZP_WORD:12 202.0 +(word) bitmap_line::e#3 e zp ZP_WORD:12 40.8 +(word) bitmap_line::e#6 e zp ZP_WORD:12 151.5 +(word) bitmap_line::e1 +(word) bitmap_line::e1#0 e1 zp ZP_WORD:14 4.0 +(word) bitmap_line::e1#1 e1 zp ZP_WORD:14 134.66666666666666 +(word) bitmap_line::e1#2 e1 zp ZP_WORD:14 202.0 +(word) bitmap_line::e1#3 e1 zp ZP_WORD:14 40.8 +(word) bitmap_line::e1#6 e1 zp ZP_WORD:14 151.5 +(word) bitmap_line::sx +(word) bitmap_line::sx#0 sx zp ZP_WORD:42 6.800000000000001 +(word) bitmap_line::sy +(word) bitmap_line::sy#0 sy zp ZP_WORD:18 7.846153846153847 +(word) bitmap_line::x +(word) bitmap_line::x#0 x zp ZP_WORD:3 5.304347826086959 +(word) bitmap_line::x#1 x zp ZP_WORD:3 101.0 +(word) bitmap_line::x#12 x zp ZP_WORD:3 202.0 +(word) bitmap_line::x#13 x zp ZP_WORD:3 58.00000000000001 +(word) bitmap_line::x#15 x zp ZP_WORD:3 57.714285714285715 +(word) bitmap_line::x#6 x zp ZP_WORD:3 102.0 +(word) bitmap_line::x#7 x zp ZP_WORD:3 76.25 +(word) bitmap_line::x1 +(word) bitmap_line::x1#0 x1 zp ZP_WORD:3 5.5 +(word) bitmap_line::x1#1 x1 zp ZP_WORD:3 50.5 +(word) bitmap_line::x2 +(word) bitmap_line::x2#0 x2 zp ZP_WORD:8 11.0 +(word) bitmap_line::x2#1 x2 zp ZP_WORD:8 101.0 +(word) bitmap_line::x2#10 x2 zp ZP_WORD:8 6.78125 +(word) bitmap_line::y +(word) bitmap_line::y#0 y zp ZP_WORD:5 5.454545454545454 +(word) bitmap_line::y#1 y zp ZP_WORD:5 57.714285714285715 +(word) bitmap_line::y#13 y zp ZP_WORD:5 202.0 +(word) bitmap_line::y#15 y zp ZP_WORD:5 43.57142857142858 +(word) bitmap_line::y#2 y zp ZP_WORD:5 101.0 +(word) bitmap_line::y#4 y zp ZP_WORD:5 51.0 +(word) bitmap_line::y#7 y zp ZP_WORD:5 202.0 +(word) bitmap_line::y1 +(word) bitmap_line::y1#0 y1 zp ZP_WORD:5 7.333333333333333 +(word) bitmap_line::y1#1 y1 zp ZP_WORD:5 67.33333333333333 +(word) bitmap_line::y2 +(word) bitmap_line::y2#0 y2 zp ZP_WORD:10 22.0 +(word) bitmap_line::y2#1 y2 zp ZP_WORD:10 202.0 +(word) bitmap_line::y2#11 y2 zp ZP_WORD:10 6.78125 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:46 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 plotter zp ZP_WORD:44 1.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:44 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:3 4.0 +(word) bitmap_plot::x#1 x zp ZP_WORD:3 202.0 +(word) bitmap_plot::x#2 x zp ZP_WORD:3 4.0 +(word) bitmap_plot::x#3 x zp ZP_WORD:3 202.0 +(word) bitmap_plot::x#4 x zp ZP_WORD:3 52.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte x 2.0 +(byte) bitmap_plot::y#1 reg byte x 101.0 +(byte) bitmap_plot::y#2 reg byte x 2.0 +(byte) bitmap_plot::y#3 reg byte x 101.0 +(byte) bitmap_plot::y#4 reg byte x 210.0 +(byte[$100]) bitmap_plot_bit +(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } +(void()) bitmap_plot_spline_8seg() +(byte~) bitmap_plot_spline_8seg::$7 reg byte x 151.5 +(label) bitmap_plot_spline_8seg::@1 +(label) bitmap_plot_spline_8seg::@2 +(label) bitmap_plot_spline_8seg::@3 +(label) bitmap_plot_spline_8seg::@return +(signed word) bitmap_plot_spline_8seg::current_x +(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp ZP_WORD:3 2.0 +(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp ZP_WORD:3 25.75 +(signed word~) bitmap_plot_spline_8seg::current_x#4 current_x zp ZP_WORD:3 101.0 +(signed word) bitmap_plot_spline_8seg::current_y +(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp ZP_WORD:5 4.0 +(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp ZP_WORD:5 20.599999999999998 +(signed word~) bitmap_plot_spline_8seg::current_y#4 current_y zp ZP_WORD:5 202.0 +(byte) bitmap_plot_spline_8seg::n +(byte) bitmap_plot_spline_8seg::n#1 n zp ZP_BYTE:7 75.75 +(byte) bitmap_plot_spline_8seg::n#2 n zp ZP_BYTE:7 33.666666666666664 +(signed word) bitmap_plot_spline_8seg::to_x +(signed word) bitmap_plot_spline_8seg::to_x#0 to_x zp ZP_WORD:36 22.444444444444443 +(signed word) bitmap_plot_spline_8seg::to_y +(signed word) bitmap_plot_spline_8seg::to_y#0 to_y zp ZP_WORD:38 22.444444444444443 +(byte[$100]) bitmap_plot_yhi +(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) } +(byte[$100]) bitmap_plot_ylo +(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) } +(byte*) bitmap_screen +(struct Segment[$15]) letter_c +(const struct Segment[$15]) letter_c#0 letter_c = { fill( $15, 0) } +(void()) main() +(byte) main::$206 reg byte a 22.0 +(byte~) main::$44 reg byte y 13.2 +(label) main::@1 +(label) main::@10 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@9 +(signed word) main::current_x +(signed word) main::current_x#4 current_x zp ZP_WORD:3 2.2 +(signed word) main::current_x#8 current_x#8 zp ZP_WORD:32 1.5 +(signed word~) main::current_x#9 current_x zp ZP_WORD:3 11.0 +(signed word) main::current_y +(signed word) main::current_y#4 current_y zp ZP_WORD:5 1.8333333333333333 +(signed word) main::current_y#8 current_y#8 zp ZP_WORD:34 1.5 +(signed word~) main::current_y#9 current_y zp ZP_WORD:5 22.0 +(byte) main::i +(byte) main::i#1 i zp ZP_BYTE:2 8.25 +(byte) main::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(signed word) main::segment_to_x +(signed word) main::segment_to_y +(byte) main::segment_type +(byte) main::segment_type#0 reg byte x 5.5 +(signed word) main::segment_via_x +(signed word) main::segment_via_x#0 segment_via_x zp ZP_WORD:22 3.6666666666666665 +(signed word) main::segment_via_y +(signed word) main::segment_via_y#0 segment_via_y zp ZP_WORD:24 3.6666666666666665 +(signed word) main::to1_x +(signed word) main::to1_y +(label) main::toD0181 +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +(byte*) main::toD0181_screen +(signed word) main::to_x +(signed word) main::to_y +(signed word) main::via_x +(signed word) main::via_y +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(label) memset::@1 +(label) memset::@2 +(label) memset::@return +(byte) memset::c +(byte) memset::c#3 reg byte x 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 dst zp ZP_WORD:28 16.5 +(byte*) memset::dst#2 dst zp ZP_WORD:28 17.5 +(byte*~) memset::dst#3 dst zp ZP_WORD:28 4.0 +(byte*) memset::end +(byte*) memset::end#0 end zp ZP_WORD:26 2.1666666666666665 +(word) memset::num +(word) memset::num#2 num zp ZP_WORD:26 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 str zp ZP_WORD:28 +(word()) sgn_u16((word) sgn_u16::w) +(byte~) sgn_u16::$0 reg byte a 4.0 +(byte~) sgn_u16::$1 reg byte a 4.0 +(label) sgn_u16::@1 +(label) sgn_u16::@return +(word) sgn_u16::return +(word) sgn_u16::return#0 return zp ZP_WORD:18 4.0 +(word) sgn_u16::return#1 return zp ZP_WORD:18 4.0 +(word) sgn_u16::return#4 return zp ZP_WORD:18 1.0 +(word) sgn_u16::w +(word) sgn_u16::w#0 w zp ZP_WORD:16 4.0 +(word) sgn_u16::w#1 w zp ZP_WORD:16 4.0 +(word) sgn_u16::w#2 w zp ZP_WORD:16 6.0 +(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) +(signed word~) spline_8segB::$0 $0 zp ZP_WORD:48 4.0 +(signed word~) spline_8segB::$1 $1 zp ZP_WORD:48 4.0 +(signed word~) spline_8segB::$10 $10 zp ZP_WORD:22 4.0 +(signed word~) spline_8segB::$12 $12 zp ZP_WORD:24 4.0 +(signed word~) spline_8segB::$18 $18 zp ZP_WORD:3 4.0 +(signed word~) spline_8segB::$19 $19 zp ZP_WORD:3 1.3333333333333333 +(signed word~) spline_8segB::$20 $20 zp ZP_WORD:5 4.0 +(signed word~) spline_8segB::$21 $21 zp ZP_WORD:5 2.0 +(signed word~) spline_8segB::$22 $22 zp ZP_WORD:52 202.0 +(signed word~) spline_8segB::$23 $23 zp ZP_WORD:52 50.5 +(signed word~) spline_8segB::$24 $24 zp ZP_WORD:54 202.0 +(signed word~) spline_8segB::$25 $25 zp ZP_WORD:54 67.33333333333333 +(signed word~) spline_8segB::$3 $3 zp ZP_WORD:50 4.0 +(byte~) spline_8segB::$31 reg byte x 151.5 +(signed word~) spline_8segB::$4 $4 zp ZP_WORD:50 4.0 +(signed word~) spline_8segB::$6 $6 zp ZP_WORD:22 4.0 +(signed word~) spline_8segB::$8 $8 zp ZP_WORD:24 4.0 +(label) spline_8segB::@1 +(label) spline_8segB::@2 +(label) spline_8segB::@return +(signed word) spline_8segB::a_x +(signed word) spline_8segB::a_x#0 a_x zp ZP_WORD:48 0.5 +(signed word) spline_8segB::a_y +(signed word) spline_8segB::a_y#0 a_y zp ZP_WORD:50 0.6000000000000001 +(signed word) spline_8segB::b_x +(signed word) spline_8segB::b_x#0 b_x zp ZP_WORD:22 1.3333333333333333 +(signed word) spline_8segB::b_y +(signed word) spline_8segB::b_y#0 b_y zp ZP_WORD:24 1.3333333333333333 +(signed word) spline_8segB::i_x +(signed word) spline_8segB::i_x#0 i_x zp ZP_WORD:22 0.5714285714285714 +(signed word) spline_8segB::i_x#1 i_x zp ZP_WORD:22 50.5 +(signed word) spline_8segB::i_x#2 i_x zp ZP_WORD:22 30.5 +(signed word) spline_8segB::i_y +(signed word) spline_8segB::i_y#0 i_y zp ZP_WORD:24 0.8 +(signed word) spline_8segB::i_y#1 i_y zp ZP_WORD:24 67.33333333333333 +(signed word) spline_8segB::i_y#2 i_y zp ZP_WORD:24 27.727272727272727 +(signed word) spline_8segB::j_x +(signed word) spline_8segB::j_x#0 j_x zp ZP_WORD:48 5.722222222222221 +(signed word) spline_8segB::j_y +(signed word) spline_8segB::j_y#0 j_y zp ZP_WORD:50 6.0588235294117645 +(byte) spline_8segB::n +(byte) spline_8segB::n#1 reg byte y 151.5 +(byte) spline_8segB::n#2 reg byte y 25.25 +(struct SplineVector16) spline_8segB::p0 +(signed word) spline_8segB::p0_x +(signed word) spline_8segB::p0_x#0 p0_x zp ZP_WORD:3 0.7727272727272728 +(signed word) spline_8segB::p0_y +(signed word) spline_8segB::p0_y#0 p0_y zp ZP_WORD:5 0.7727272727272728 +(struct SplineVector16) spline_8segB::p1 +(signed word) spline_8segB::p1_x +(signed word) spline_8segB::p1_x#0 p1_x zp ZP_WORD:22 1.5 +(signed word) spline_8segB::p1_y +(signed word) spline_8segB::p1_y#0 p1_y zp ZP_WORD:24 1.3636363636363638 +(struct SplineVector16) spline_8segB::p2 +(signed word) spline_8segB::p2_x +(signed word) spline_8segB::p2_x#0 p2_x zp ZP_WORD:32 4.333333333333333 +(signed word) spline_8segB::p2_y +(signed word) spline_8segB::p2_y#0 p2_y zp ZP_WORD:34 2.6 +(signed word) spline_8segB::p_x +(signed word) spline_8segB::p_x#0 p_x zp ZP_WORD:3 2.0 +(signed word) spline_8segB::p_x#1 p_x zp ZP_WORD:3 34.0 +(signed word) spline_8segB::p_x#2 p_x zp ZP_WORD:3 38.125 +(signed word) spline_8segB::p_y +(signed word) spline_8segB::p_y#0 p_y zp ZP_WORD:5 4.0 +(signed word) spline_8segB::p_y#1 p_y zp ZP_WORD:5 29.142857142857142 +(signed word) spline_8segB::p_y#2 p_y zp ZP_WORD:5 33.888888888888886 + +zp ZP_BYTE:2 [ main::i#10 main::i#1 ] +zp ZP_WORD:3 [ main::current_x#4 main::current_x#9 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 spline_8segB::p0_x#0 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#4 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 spline_8segB::$19 ] +zp ZP_WORD:5 [ main::current_y#4 main::current_y#9 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#4 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 spline_8segB::$21 ] +zp ZP_BYTE:7 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +zp ZP_WORD:8 [ bitmap_line::x2#10 bitmap_line::x2#1 bitmap_line::x2#0 ] +zp ZP_WORD:10 [ bitmap_line::y2#11 bitmap_line::y2#1 bitmap_line::y2#0 ] +zp ZP_WORD:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] +zp ZP_WORD:14 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] +reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] +zp ZP_WORD:16 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +zp ZP_WORD:18 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] +zp ZP_WORD:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] +reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] +zp ZP_WORD:22 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 main::segment_via_x#0 spline_8segB::p1_x#0 ] +zp ZP_WORD:24 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 main::segment_via_y#0 spline_8segB::p1_y#0 ] +zp ZP_WORD:26 [ memset::num#2 memset::end#0 ] +zp ZP_WORD:28 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +reg byte x [ memset::c#3 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +zp ZP_WORD:30 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +reg byte a [ main::$206 ] +reg byte y [ main::$44 ] +reg byte x [ main::segment_type#0 ] +zp ZP_WORD:32 [ main::current_x#8 spline_8segB::p2_x#0 ] +zp ZP_WORD:34 [ main::current_y#8 spline_8segB::p2_y#0 ] +reg byte x [ bitmap_plot_spline_8seg::$7 ] +zp ZP_WORD:36 [ bitmap_plot_spline_8seg::to_x#0 ] +zp ZP_WORD:38 [ bitmap_plot_spline_8seg::to_y#0 ] +zp ZP_WORD:40 [ bitmap_line::dx#0 ] +zp ZP_WORD:42 [ bitmap_line::sx#0 ] +zp ZP_WORD:44 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +zp ZP_WORD:46 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +reg byte a [ sgn_u16::$0 ] +reg byte a [ sgn_u16::$1 ] +reg byte a [ abs_u16::$0 ] +reg byte a [ abs_u16::$1 ] +zp ZP_WORD:48 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 ] +zp ZP_WORD:50 [ spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] +zp ZP_WORD:52 [ spline_8segB::$22 spline_8segB::$23 ] +zp ZP_WORD:54 [ spline_8segB::$24 spline_8segB::$25 ] +reg byte x [ spline_8segB::$31 ] +zp ZP_BYTE:56 [ bitmap_init::$7 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index 715695731..a8cad0120 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -120,19 +120,12 @@ render_sine: { lda (sin2_val),y stx sin2_val sta sin2_val+1 - lda #$a - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda wrap_y.y - adc $fe + clc + adc #<$a sta wrap_y.y lda wrap_y.y+1 - adc $ff + adc #>$a sta wrap_y.y+1 jsr wrap_y tax diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 63df755a4..53b7b1ce7 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -4223,19 +4223,12 @@ render_sine: { lda (_3),y sta sin2_val+1 // [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 - lda #$a - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda sin2_val - adc $fe + clc + adc #<$a sta wrap_y.y lda sin2_val+1 - adc $ff + adc #>$a sta wrap_y.y+1 // [38] call wrap_y // [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] @@ -6026,30 +6019,30 @@ Uplift Scope [] 0.8: zp ZP_WORD:185 [ rem16u#1 ] Uplift Scope [bitmap_clear] Uplift Scope [main] -Uplifting [mul16u] best 31086 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:112 [ mul16u::return#2 ] zp ZP_DWORD:157 [ mul16u::return#3 ] -Uplifting [wrap_y] best 30903 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] -Uplifting [divr16u] best 30693 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:171 [ divr16u::return#2 ] zp ZP_WORD:175 [ divr16u::return#3 ] -Uplifting [render_sine] best 30613 combination zp ZP_WORD:66 [ render_sine::$10 ] zp ZP_WORD:68 [ render_sine::$0 ] zp ZP_WORD:70 [ render_sine::sin_val#0 ] zp ZP_WORD:74 [ render_sine::$11 ] zp ZP_WORD:76 [ render_sine::$3 ] zp ZP_WORD:78 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_init] best 30103 combination zp ZP_WORD:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:191 [ bitmap_init::$5 ] zp ZP_BYTE:192 [ bitmap_init::$6 ] zp ZP_BYTE:189 [ bitmap_init::$7 ] +Uplifting [mul16u] best 30921 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:112 [ mul16u::return#2 ] zp ZP_DWORD:157 [ mul16u::return#3 ] +Uplifting [wrap_y] best 30738 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] +Uplifting [divr16u] best 30528 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:171 [ divr16u::return#2 ] zp ZP_WORD:175 [ divr16u::return#3 ] +Uplifting [render_sine] best 30448 combination zp ZP_WORD:66 [ render_sine::$10 ] zp ZP_WORD:68 [ render_sine::$0 ] zp ZP_WORD:70 [ render_sine::sin_val#0 ] zp ZP_WORD:74 [ render_sine::$11 ] zp ZP_WORD:76 [ render_sine::$3 ] zp ZP_WORD:78 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_init] best 29938 combination zp ZP_WORD:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:191 [ bitmap_init::$5 ] zp ZP_BYTE:192 [ bitmap_init::$6 ] zp ZP_BYTE:189 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [bitmap_plot] best 30036 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:84 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:86 [ bitmap_plot::plotter#1 ] zp ZP_WORD:82 [ bitmap_plot::plotter#0 ] -Uplifting [sin16s] best 30036 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:98 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:125 [ sin16s::$4 ] zp ZP_WORD:133 [ sin16s::x2#0 ] zp ZP_WORD:141 [ sin16s::x3_6#0 ] zp ZP_WORD:147 [ sin16s::x4#0 ] zp ZP_WORD:151 [ sin16s::x5#0 ] zp ZP_WORD:153 [ sin16s::x5_128#0 ] zp ZP_WORD:137 [ sin16s::x3#0 ] zp ZP_WORD:155 [ sin16s::usinx#1 ] zp ZP_WORD:129 [ sin16s::x1#0 ] zp ZP_WORD:143 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 30020 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:131 [ mulu16_sel::return#0 ] zp ZP_WORD:135 [ mulu16_sel::return#1 ] zp ZP_WORD:139 [ mulu16_sel::return#2 ] zp ZP_WORD:145 [ mulu16_sel::return#10 ] zp ZP_WORD:149 [ mulu16_sel::return#11 ] zp ZP_DWORD:161 [ mulu16_sel::$0 ] zp ZP_DWORD:165 [ mulu16_sel::$1 ] zp ZP_WORD:169 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen2] best 30020 combination zp ZP_DWORD:106 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:110 [ sin16s_gen2::$8 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:94 [ sin16s_gen2::step#0 ] -Uplifting [mul16s] best 30020 combination zp ZP_DWORD:102 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:120 [ mul16s::return#0 ] zp ZP_WORD:116 [ mul16s::$9 ] zp ZP_WORD:118 [ mul16s::$16 ] zp ZP_WORD:100 [ mul16s::a#0 ] -Uplifting [memset] best 30004 combination zp ZP_WORD:59 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:187 [ memset::end#0 ] zp ZP_WORD:54 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:56 [ memset::str#3 ] -Uplifting [div32u16u] best 30004 combination zp ZP_DWORD:90 [ div32u16u::return#2 ] zp ZP_WORD:177 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:179 [ div32u16u::return#0 ] zp ZP_WORD:173 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 30004 combination zp ZP_WORD:185 [ rem16u#1 ] -Uplifting [bitmap_clear] best 30004 combination -Uplifting [main] best 30004 combination +Uplifting [bitmap_plot] best 29871 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:84 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:86 [ bitmap_plot::plotter#1 ] zp ZP_WORD:82 [ bitmap_plot::plotter#0 ] +Uplifting [sin16s] best 29871 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:98 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:125 [ sin16s::$4 ] zp ZP_WORD:133 [ sin16s::x2#0 ] zp ZP_WORD:141 [ sin16s::x3_6#0 ] zp ZP_WORD:147 [ sin16s::x4#0 ] zp ZP_WORD:151 [ sin16s::x5#0 ] zp ZP_WORD:153 [ sin16s::x5_128#0 ] zp ZP_WORD:137 [ sin16s::x3#0 ] zp ZP_WORD:155 [ sin16s::usinx#1 ] zp ZP_WORD:129 [ sin16s::x1#0 ] zp ZP_WORD:143 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 29855 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:131 [ mulu16_sel::return#0 ] zp ZP_WORD:135 [ mulu16_sel::return#1 ] zp ZP_WORD:139 [ mulu16_sel::return#2 ] zp ZP_WORD:145 [ mulu16_sel::return#10 ] zp ZP_WORD:149 [ mulu16_sel::return#11 ] zp ZP_DWORD:161 [ mulu16_sel::$0 ] zp ZP_DWORD:165 [ mulu16_sel::$1 ] zp ZP_WORD:169 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen2] best 29855 combination zp ZP_DWORD:106 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:110 [ sin16s_gen2::$8 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:94 [ sin16s_gen2::step#0 ] +Uplifting [mul16s] best 29855 combination zp ZP_DWORD:102 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:120 [ mul16s::return#0 ] zp ZP_WORD:116 [ mul16s::$9 ] zp ZP_WORD:118 [ mul16s::$16 ] zp ZP_WORD:100 [ mul16s::a#0 ] +Uplifting [memset] best 29839 combination zp ZP_WORD:59 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:187 [ memset::end#0 ] zp ZP_WORD:54 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:56 [ memset::str#3 ] +Uplifting [div32u16u] best 29839 combination zp ZP_DWORD:90 [ div32u16u::return#2 ] zp ZP_WORD:177 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:179 [ div32u16u::return#0 ] zp ZP_WORD:173 [ div32u16u::quotient_hi#0 ] +Uplifting [] best 29839 combination zp ZP_WORD:185 [ rem16u#1 ] +Uplifting [bitmap_clear] best 29839 combination +Uplifting [main] best 29839 combination Attempting to uplift remaining variables inzp ZP_BYTE:191 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 29944 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 29779 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 29884 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 29719 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:189 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 29884 combination zp ZP_BYTE:189 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 29719 combination zp ZP_BYTE:189 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 29884 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 29719 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:155 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:137 [ sin16s::x3#0 ] ] - score: 2 @@ -6363,19 +6356,12 @@ render_sine: { stx sin2_val sta sin2_val+1 // [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 - lda #$a - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda wrap_y.y - adc $fe + clc + adc #<$a sta wrap_y.y lda wrap_y.y+1 - adc $ff + adc #>$a sta wrap_y.y+1 // [38] call wrap_y // [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] @@ -7844,8 +7830,8 @@ Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [159] bcc b1 to bcs -Fixing long branch [165] bcc b1 to bcs +Fixing long branch [152] bcc b1 to bcs +Fixing long branch [158] bcc b1 to bcs FINAL SYMBOL TABLE (label) @1 @@ -8304,7 +8290,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 24804 +Score: 24639 // File Comments // Generate a big sinus and plot it on a bitmap @@ -8521,19 +8507,12 @@ render_sine: { sta sin2_val+1 // wrap_y(sin2_val+10) // [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 - lda #$a - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda wrap_y.y - adc $fe + clc + adc #<$a sta wrap_y.y lda wrap_y.y+1 - adc $ff + adc #>$a sta wrap_y.y+1 // [38] call wrap_y // [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] diff --git a/src/test/ref/struct-8.asm b/src/test/ref/struct-8.asm new file mode 100644 index 000000000..13a9e37fd --- /dev/null +++ b/src/test/ref/struct-8.asm @@ -0,0 +1,17 @@ +// Minimal struct - nested struct where a sub-struct is assigned out +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = 5 + .label SCREEN = $400 + lda #p_x + sta SCREEN + lda #p_y + sta SCREEN+1 + lda #c_radius + sta SCREEN+1 + rts +} diff --git a/src/test/ref/struct-8.cfg b/src/test/ref/struct-8.cfg new file mode 100644 index 000000000..adea9bce0 --- /dev/null +++ b/src/test/ref/struct-8.cfg @@ -0,0 +1,17 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 + [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 + [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 + to:main::@return +main::@return: scope:[main] from main + [7] return + to:@return diff --git a/src/test/ref/struct-8.log b/src/test/ref/struct-8.log new file mode 100644 index 000000000..a0c03927a --- /dev/null +++ b/src/test/ref/struct-8.log @@ -0,0 +1,364 @@ +Created struct value member variable (byte) main::p_x +Created struct value member variable (byte) main::p_y +Converted struct value to member variables (struct Point) main::p +Created struct value member variable (struct Point) main::c_center +Created struct value member variable (byte) main::c_radius +Converted struct value to member variables (struct Circle) main::c +Created struct value member variable (byte) main::point_x +Created struct value member variable (byte) main::point_y +Converted struct value to member variables (struct Point) main::point +Adding struct value list initializer (byte) main::p_x ← (number) $a +Adding struct value list initializer (byte) main::p_y ← (number) $a +Adding struct value list initializer (struct Point) main::c_center ← (struct Point) main::p +Adding struct value list initializer (byte) main::c_radius ← (number) 5 +Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center +Replacing struct member reference (struct Point) main::point.x with member variable reference (byte) main::point_x +Replacing struct member reference (struct Point) main::point.y with member variable reference (byte) main::point_y +Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius +Created struct value member variable (byte) main::c_center_x +Created struct value member variable (byte) main::c_center_y +Converted struct value to member variables (struct Point) main::c_center +Adding struct value member variable copy (byte) main::c_center_x ← (byte) main::p_x +Adding struct value member variable copy (byte) main::c_center_y ← (byte) main::p_y +Adding struct value member variable copy (byte) main::point_x ← (byte) main::c_center_x +Adding struct value member variable copy (byte) main::point_y ← (byte) main::c_center_y +Identified constant variable (byte) main::p_x +Identified constant variable (byte) main::p_y +Identified constant variable (byte) main::c_radius + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte) main::p_x#0 ← (number) $a + (byte) main::p_y#0 ← (number) $a + (byte) main::c_center_x#0 ← (byte) main::p_x#0 + (byte) main::c_center_y#0 ← (byte) main::p_y#0 + (byte) main::c_radius#0 ← (number) 5 + (byte) main::point_x#0 ← (byte) main::c_center_x#0 + (byte) main::point_y#0 ← (byte) main::c_center_y#0 + (byte*) main::SCREEN#0 ← ((byte*)) (number) $400 + *((byte*) main::SCREEN#0 + (number) 0) ← (byte) main::point_x#0 + *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::point_y#0 + *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::c_radius#0 + to:main::@return +main::@return: scope:[main] from main + return + to:@return +@1: scope:[] from @begin + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(byte*) main::SCREEN#0 +(byte) main::c_center_x +(byte) main::c_center_x#0 +(byte) main::c_center_y +(byte) main::c_center_y#0 +(byte) main::c_radius +(byte) main::c_radius#0 +(byte) main::p_x +(byte) main::p_x#0 +(byte) main::p_y +(byte) main::p_y#0 +(byte) main::point_x +(byte) main::point_x#0 +(byte) main::point_y +(byte) main::point_y#0 + +Adding number conversion cast (unumber) $a in (byte) main::p_x#0 ← (number) $a +Adding number conversion cast (unumber) $a in (byte) main::p_y#0 ← (number) $a +Adding number conversion cast (unumber) 5 in (byte) main::c_radius#0 ← (number) 5 +Adding number conversion cast (unumber) 0 in *((byte*) main::SCREEN#0 + (number) 0) ← (byte) main::point_x#0 +Adding number conversion cast (unumber) 1 in *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::point_y#0 +Adding number conversion cast (unumber) 1 in *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::c_radius#0 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte) main::p_x#0 ← (unumber)(number) $a +Inlining cast (byte) main::p_y#0 ← (unumber)(number) $a +Inlining cast (byte) main::c_radius#0 ← (unumber)(number) 5 +Inlining cast (byte*) main::SCREEN#0 ← (byte*)(number) $400 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast $a +Simplifying constant integer cast $a +Simplifying constant integer cast 5 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) 5 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias (byte) main::p_x#0 = (byte) main::c_center_x#0 (byte) main::point_x#0 +Alias (byte) main::p_y#0 = (byte) main::c_center_y#0 (byte) main::point_y#0 +Successful SSA optimization Pass2AliasElimination +Constant (const byte) main::p_x#0 = $a +Constant (const byte) main::p_y#0 = $a +Constant (const byte) main::c_radius#0 = 5 +Constant (const byte*) main::SCREEN#0 = (byte*) 1024 +Successful SSA optimization Pass2ConstantIdentification +Simplifying expression containing zero main::SCREEN#0 in [8] *((const byte*) main::SCREEN#0 + (byte) 0) ← (const byte) main::p_x#0 +Successful SSA optimization PassNSimplifyExpressionWithZero +Consolidated array index constant in *(main::SCREEN#0+1) +Consolidated array index constant in *(main::SCREEN#0+1) +Successful SSA optimization Pass2ConstantAdditionElimination +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end +CALL GRAPH +Calls in [] to main:2 + +Created 0 initial phi equivalence classes +Coalesced down to 0 phi equivalence classes +Culled Empty Block (label) @2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 + [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 + [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 + to:main::@return +main::@return: scope:[main] from main + [7] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(byte*) main::SCREEN +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(byte) main::p_x +(byte) main::p_y +(byte) main::point_x +(byte) main::point_y + +Initial phi equivalence classes +Complete equivalence classes + +INITIAL ASM + // File Comments +// Minimal struct - nested struct where a sub-struct is assigned out + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = 5 + .label SCREEN = $400 + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+1 + jmp breturn + // main::@return + breturn: + // [7] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 [ ] ( main:2 [ ] ) always clobbers reg byte a + +REGISTER UPLIFT SCOPES +Uplift Scope [Point] +Uplift Scope [Circle] +Uplift Scope [main] +Uplift Scope [] + +Uplifting [Point] best 39 combination +Uplifting [Circle] best 39 combination +Uplifting [main] best 39 combination +Uplifting [] best 39 combination + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Minimal struct - nested struct where a sub-struct is assigned out + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = 5 + .label SCREEN = $400 + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+1 + jmp breturn + // main::@return + breturn: + // [7] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction bend_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(const byte) main::c_radius#0 c_radius = (byte) 5 +(byte) main::p_x +(const byte) main::p_x#0 p_x = (byte) $a +(byte) main::p_y +(const byte) main::p_y#0 p_y = (byte) $a +(byte) main::point_x +(byte) main::point_y + + + +FINAL ASSEMBLER +Score: 24 + + // File Comments +// Minimal struct - nested struct where a sub-struct is assigned out + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = 5 + .label SCREEN = $400 + // SCREEN[0] = point.x + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // SCREEN[1] = point.y + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // SCREEN[1] = c.radius + // [6] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::c_radius#0 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+1 + // main::@return + // } + // [7] return + rts +} + // File Data + diff --git a/src/test/ref/struct-8.sym b/src/test/ref/struct-8.sym new file mode 100644 index 000000000..99e13b83c --- /dev/null +++ b/src/test/ref/struct-8.sym @@ -0,0 +1,22 @@ +(label) @1 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(const byte) main::c_radius#0 c_radius = (byte) 5 +(byte) main::p_x +(const byte) main::p_x#0 p_x = (byte) $a +(byte) main::p_y +(const byte) main::p_y#0 p_y = (byte) $a +(byte) main::point_x +(byte) main::point_y + diff --git a/src/test/ref/struct-9.asm b/src/test/ref/struct-9.asm new file mode 100644 index 000000000..21aabbbb2 --- /dev/null +++ b/src/test/ref/struct-9.asm @@ -0,0 +1,17 @@ +// Minimal struct - nesting structs +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = $c + .label SCREEN = $400 + lda #p_x + sta SCREEN + lda #p_y + sta SCREEN+1 + lda #c_radius + sta SCREEN+2 + rts +} diff --git a/src/test/ref/struct-9.cfg b/src/test/ref/struct-9.cfg new file mode 100644 index 000000000..0bb74e299 --- /dev/null +++ b/src/test/ref/struct-9.cfg @@ -0,0 +1,17 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 + [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 + [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 + to:main::@return +main::@return: scope:[main] from main + [7] return + to:@return diff --git a/src/test/ref/struct-9.log b/src/test/ref/struct-9.log new file mode 100644 index 000000000..d983cc8a2 --- /dev/null +++ b/src/test/ref/struct-9.log @@ -0,0 +1,366 @@ +Created struct value member variable (byte) main::p_x +Created struct value member variable (byte) main::p_y +Converted struct value to member variables (struct Point) main::p +Created struct value member variable (struct Point) main::c_center +Created struct value member variable (byte) main::c_radius +Converted struct value to member variables (struct Circle) main::c +Adding struct value list initializer (byte) main::p_x ← (number) $a +Adding struct value list initializer (byte) main::p_y ← (number) $a +Adding struct value member variable default initializer (struct Point) main::c_center ← {} +Adding struct value member variable default initializer (byte) main::c_radius ← (byte) 0 +Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center +Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius +Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center +Replacing struct member reference (struct Circle) main::c.center with member variable reference (struct Point) main::c_center +Replacing struct member reference (struct Circle) main::c.radius with member variable reference (byte) main::c_radius +Created struct value member variable (byte) main::c_center_x +Created struct value member variable (byte) main::c_center_y +Converted struct value to member variables (struct Point) main::c_center +Adding struct value member variable default initializer (byte) main::c_center_x ← (byte) 0 +Adding struct value member variable default initializer (byte) main::c_center_y ← (byte) 0 +Adding struct value member variable copy (byte) main::c_center_x ← (byte) main::p_x +Adding struct value member variable copy (byte) main::c_center_y ← (byte) main::p_y +Replacing struct member reference (struct Point) main::c_center.x with member variable reference (byte) main::c_center_x +Replacing struct member reference (struct Point) main::c_center.y with member variable reference (byte) main::c_center_y +Identified constant variable (byte) main::p_x +Identified constant variable (byte) main::p_y + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte) main::p_x#0 ← (number) $a + (byte) main::p_y#0 ← (number) $a + (byte) main::c_center_x#0 ← (byte) 0 + (byte) main::c_center_y#0 ← (byte) 0 + (byte) main::c_radius#0 ← (byte) 0 + (byte) main::c_center_x#1 ← (byte) main::p_x#0 + (byte) main::c_center_y#1 ← (byte) main::p_y#0 + (byte) main::c_radius#1 ← (number) $c + (byte*) main::SCREEN#0 ← ((byte*)) (number) $400 + *((byte*) main::SCREEN#0 + (number) 0) ← (byte) main::c_center_x#1 + *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::c_center_y#1 + *((byte*) main::SCREEN#0 + (number) 2) ← (byte) main::c_radius#1 + to:main::@return +main::@return: scope:[main] from main + return + to:@return +@1: scope:[] from @begin + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(byte*) main::SCREEN#0 +(byte) main::c_center_x +(byte) main::c_center_x#0 +(byte) main::c_center_x#1 +(byte) main::c_center_y +(byte) main::c_center_y#0 +(byte) main::c_center_y#1 +(byte) main::c_radius +(byte) main::c_radius#0 +(byte) main::c_radius#1 +(byte) main::p_x +(byte) main::p_x#0 +(byte) main::p_y +(byte) main::p_y#0 + +Adding number conversion cast (unumber) $a in (byte) main::p_x#0 ← (number) $a +Adding number conversion cast (unumber) $a in (byte) main::p_y#0 ← (number) $a +Adding number conversion cast (unumber) $c in (byte) main::c_radius#1 ← (number) $c +Adding number conversion cast (unumber) 0 in *((byte*) main::SCREEN#0 + (number) 0) ← (byte) main::c_center_x#1 +Adding number conversion cast (unumber) 1 in *((byte*) main::SCREEN#0 + (number) 1) ← (byte) main::c_center_y#1 +Adding number conversion cast (unumber) 2 in *((byte*) main::SCREEN#0 + (number) 2) ← (byte) main::c_radius#1 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte) main::p_x#0 ← (unumber)(number) $a +Inlining cast (byte) main::p_y#0 ← (unumber)(number) $a +Inlining cast (byte) main::c_radius#1 ← (unumber)(number) $c +Inlining cast (byte*) main::SCREEN#0 ← (byte*)(number) $400 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast $a +Simplifying constant integer cast $a +Simplifying constant integer cast $c +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) $c +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 2 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias (byte) main::p_x#0 = (byte) main::c_center_x#1 +Alias (byte) main::p_y#0 = (byte) main::c_center_y#1 +Successful SSA optimization Pass2AliasElimination +Constant (const byte) main::p_x#0 = $a +Constant (const byte) main::p_y#0 = $a +Constant (const byte) main::c_center_x#0 = 0 +Constant (const byte) main::c_center_y#0 = 0 +Constant (const byte) main::c_radius#0 = 0 +Constant (const byte) main::c_radius#1 = $c +Constant (const byte*) main::SCREEN#0 = (byte*) 1024 +Successful SSA optimization Pass2ConstantIdentification +Simplifying expression containing zero main::SCREEN#0 in [9] *((const byte*) main::SCREEN#0 + (byte) 0) ← (const byte) main::p_x#0 +Successful SSA optimization PassNSimplifyExpressionWithZero +Eliminating unused constant (const byte) main::c_center_x#0 +Eliminating unused constant (const byte) main::c_center_y#0 +Eliminating unused constant (const byte) main::c_radius#0 +Successful SSA optimization PassNEliminateUnusedVars +Consolidated array index constant in *(main::SCREEN#0+1) +Consolidated array index constant in *(main::SCREEN#0+2) +Successful SSA optimization Pass2ConstantAdditionElimination +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end +CALL GRAPH +Calls in [] to main:2 + +Created 0 initial phi equivalence classes +Coalesced down to 0 phi equivalence classes +Culled Empty Block (label) @2 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 + [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 + [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 + to:main::@return +main::@return: scope:[main] from main + [7] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(byte*) main::SCREEN +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(byte) main::p_x +(byte) main::p_y + +Initial phi equivalence classes +Complete equivalence classes + +INITIAL ASM + // File Comments +// Minimal struct - nesting structs + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = $c + .label SCREEN = $400 + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+2 + jmp breturn + // main::@return + breturn: + // [7] return + rts +} + // File Data + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 [ ] ( main:2 [ ] ) always clobbers reg byte a + +REGISTER UPLIFT SCOPES +Uplift Scope [Point] +Uplift Scope [Circle] +Uplift Scope [main] +Uplift Scope [] + +Uplifting [Point] best 39 combination +Uplifting [Circle] best 39 combination +Uplifting [main] best 39 combination +Uplifting [] best 39 combination + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Minimal struct - nesting structs + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = $c + .label SCREEN = $400 + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+2 + jmp breturn + // main::@return + breturn: + // [7] return + rts +} + // File Data + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction bend_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(const byte) main::c_radius#1 c_radius = (byte) $c +(byte) main::p_x +(const byte) main::p_x#0 p_x = (byte) $a +(byte) main::p_y +(const byte) main::p_y#0 p_y = (byte) $a + + + +FINAL ASSEMBLER +Score: 24 + + // File Comments +// Minimal struct - nesting structs + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .const p_x = $a + .const p_y = $a + .const c_radius = $c + .label SCREEN = $400 + // SCREEN[0] = c.center.x + // [4] *((const byte*) main::SCREEN#0) ← (const byte) main::p_x#0 -- _deref_pbuc1=vbuc2 + lda #p_x + sta SCREEN + // SCREEN[1] = c.center.y + // [5] *((const byte*) main::SCREEN#0+(byte) 1) ← (const byte) main::p_y#0 -- _deref_pbuc1=vbuc2 + lda #p_y + sta SCREEN+1 + // SCREEN[2] = c.radius + // [6] *((const byte*) main::SCREEN#0+(byte) 2) ← (const byte) main::c_radius#1 -- _deref_pbuc1=vbuc2 + lda #c_radius + sta SCREEN+2 + // main::@return + // } + // [7] return + rts +} + // File Data + diff --git a/src/test/ref/struct-9.sym b/src/test/ref/struct-9.sym new file mode 100644 index 000000000..3a8a6f67e --- /dev/null +++ b/src/test/ref/struct-9.sym @@ -0,0 +1,20 @@ +(label) @1 +(label) @begin +(label) @end +(struct Point) Circle::center +(byte) Circle::radius +(byte) Point::x +(byte) Point::y +(void()) main() +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = (byte*) 1024 +(byte) main::c_center_x +(byte) main::c_center_y +(byte) main::c_radius +(const byte) main::c_radius#1 c_radius = (byte) $c +(byte) main::p_x +(const byte) main::p_x#0 p_x = (byte) $a +(byte) main::p_y +(const byte) main::p_y#0 p_y = (byte) $a + diff --git a/src/test/ref/type-signed.asm b/src/test/ref/type-signed.asm index b1cbbb2c2..8cf19d80d 100644 --- a/src/test/ref/type-signed.asm +++ b/src/test/ref/type-signed.asm @@ -25,19 +25,12 @@ main: { lda #>-$3ff sta a+1 b1: - lda #-7 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda a - adc $fe + clc + adc #<-7 sta a lda a+1 - adc $ff + adc #>-7 sta a+1 clc lda b diff --git a/src/test/ref/type-signed.log b/src/test/ref/type-signed.log index b85ec6e08..a48469a56 100644 --- a/src/test/ref/type-signed.log +++ b/src/test/ref/type-signed.log @@ -871,19 +871,12 @@ main: { // main::@1 b1: // [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 -- vwsz1=vwsz1_plus_vbsc1 - lda #-7 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda a - adc $fe + clc + adc #<-7 sta a lda a+1 - adc $ff + adc #>-7 sta a+1 // [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 -- vwuz1=vwuz1_plus_vwuc1 clc @@ -1223,15 +1216,15 @@ Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#5 print_char::ch#2 Uplift Scope [print_sword] 10.83: zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [print_ln] -Uplifting [] best 6244 combination zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] -Uplifting [main] best 6154 combination zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] -Uplifting [print_word] best 6154 combination zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplifting [print_byte] best 6146 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 6128 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_sword] best 6128 combination zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] -Uplifting [print_ln] best 6128 combination +Uplifting [] best 6079 combination zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] +Uplifting [main] best 5989 combination zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [print_word] best 5989 combination zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplifting [print_byte] best 5981 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 5963 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_sword] best 5963 combination zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_ln] best 5963 combination Attempting to uplift remaining variables inzp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6128 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 5963 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] ] with [ zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] - score: 1 Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] @@ -1296,19 +1289,12 @@ main: { // main::@1 b1: // [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 -- vwsz1=vwsz1_plus_vbsc1 - lda #-7 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda a - adc $fe + clc + adc #<-7 sta a lda a+1 - adc $ff + adc #>-7 sta a+1 // [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 -- vwuz1=vwuz1_plus_vwuc1 clc @@ -1731,7 +1717,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 5348 +Score: 5183 // File Comments // Tests the special "signed" / "unsigned" without a simple type name @@ -1780,19 +1766,12 @@ main: { b1: // a += -7 // [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 -- vwsz1=vwsz1_plus_vbsc1 - lda #-7 - sta $fe - ora #$7f - bmi !+ - lda #0 - !: - sta $ff - clc lda a - adc $fe + clc + adc #<-7 sta a lda a+1 - adc $ff + adc #>-7 sta a+1 // b += 321 // [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 -- vwuz1=vwuz1_plus_vwuc1