diff --git a/pom.xml b/pom.xml
index 3fb6b446f..a89936d31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
cml.kickass
kickassembler
- 5.24-65ce02.a
+ 5.24-65ce02.b
dk.camelot64.kickass.xexplugin
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar
new file mode 100644
index 000000000..af24d1e2b
Binary files /dev/null and b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar differ
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.md5 b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.md5
new file mode 100644
index 000000000..a9e37e9d1
--- /dev/null
+++ b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.md5
@@ -0,0 +1 @@
+0c00040f87c87fb73965e1f53afe7dcc
\ No newline at end of file
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.sha1 b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.sha1
new file mode 100644
index 000000000..7142f2d4d
--- /dev/null
+++ b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.jar.sha1
@@ -0,0 +1 @@
+d51578b4523d90c4d5d5e9e3fe2806b42fd4a2ea
\ No newline at end of file
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom
new file mode 100644
index 000000000..296d72ee8
--- /dev/null
+++ b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom
@@ -0,0 +1,9 @@
+
+
+ 4.0.0
+ cml.kickass
+ kickassembler
+ 5.24-65ce02.b
+ POM was created from install:install-file
+
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.md5 b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.md5
new file mode 100644
index 000000000..72ac4baac
--- /dev/null
+++ b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.md5
@@ -0,0 +1 @@
+a4241896151d8ae9bad33889412751d9
\ No newline at end of file
diff --git a/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.sha1 b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.sha1
new file mode 100644
index 000000000..737168d0a
--- /dev/null
+++ b/repo/cml/kickass/kickassembler/5.24-65ce02.b/kickassembler-5.24-65ce02.b.pom.sha1
@@ -0,0 +1 @@
+3e36d1dbb157f463b0459185f396ce8da6f93ad9
\ No newline at end of file
diff --git a/repo/cml/kickass/kickassembler/maven-metadata.xml b/repo/cml/kickass/kickassembler/maven-metadata.xml
index 2bdd8d0f7..5fc56c551 100644
--- a/repo/cml/kickass/kickassembler/maven-metadata.xml
+++ b/repo/cml/kickass/kickassembler/maven-metadata.xml
@@ -3,7 +3,7 @@
cml.kickass
kickassembler
- 5.24-65ce02.a
+ 5.24-65ce02.b
4.19
5.7
@@ -28,7 +28,8 @@
5.22-65ce02.a
5.23-65ce02.a
5.24-65ce02.a
+ 5.24-65ce02.b
- 20220123234604
+ 20220130203320
diff --git a/repo/cml/kickass/kickassembler/maven-metadata.xml.md5 b/repo/cml/kickass/kickassembler/maven-metadata.xml.md5
index 5dc89afe7..e0df63399 100644
--- a/repo/cml/kickass/kickassembler/maven-metadata.xml.md5
+++ b/repo/cml/kickass/kickassembler/maven-metadata.xml.md5
@@ -1 +1 @@
-e21df397cfbdfffab5bdf0710903e415
\ No newline at end of file
+0f43678d3dce50a145dd7e42adc79ca1
\ No newline at end of file
diff --git a/repo/cml/kickass/kickassembler/maven-metadata.xml.sha1 b/repo/cml/kickass/kickassembler/maven-metadata.xml.sha1
index 47911a051..83fd450ec 100644
--- a/repo/cml/kickass/kickassembler/maven-metadata.xml.sha1
+++ b/repo/cml/kickass/kickassembler/maven-metadata.xml.sha1
@@ -1 +1 @@
-e1786fe7f339b0358623f3109c1e3aa3306c9011
\ No newline at end of file
+2b207a0d7add8d7cd4ebc8a58ddbbbd2e6122739
\ No newline at end of file
diff --git a/src/main/antlr4/dk/camelot64/kickc/parser/KickCLexer.g4 b/src/main/antlr4/dk/camelot64/kickc/parser/KickCLexer.g4
index 9f89c8e51..afb7dc1ec 100644
--- a/src/main/antlr4/dk/camelot64/kickc/parser/KickCLexer.g4
+++ b/src/main/antlr4/dk/camelot64/kickc/parser/KickCLexer.g4
@@ -165,7 +165,7 @@ ASM_MNEMONIC:
'tsb' | 'wai' | 'cle' | 'see' | 'tsy' | 'lbpl'| 'inz' | 'tys' | 'lbmi'| 'dez' | 'neg' | 'asr' | 'taz' | 'lbvc'| 'tab' | 'map' | 'rtn' | 'lbsr'| 'tza' |
'lbvs'| 'tba' | 'lbra'| 'lbcc'| 'ldz' | 'lbcs'| 'cpz' | 'dew' | 'asw' | 'lbne'| 'phz' | 'inw' | 'row' | 'lbeq'| 'phw' | 'plz' | 'eom' | 'adcq'| 'andq'|
'aslq'| 'asrq'| 'bitq'| 'cpq' | 'deq' | 'eorq'| 'inq' | 'ldq' | 'lsrq'| 'orq' | 'rolq'| 'rorq'| 'sbcq'| 'stq' | 'sxy' | 'st0' | 'st1' | 'st2' | 'say' |
- 'tma' | 'bsr' | 'tam' | 'csl' | 'cla' | 'clx' | 'cly' | 'csh' | 'set'
+ 'tma' | 'bsr' | 'tam' | 'csl' | 'cla' | 'clx' | 'cly' | 'csh' | 'set' | 'tst'
;
ASM_IMM : '#' ;
diff --git a/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4 b/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4
index c47ca342e..3ecc3db89 100644
--- a/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4
+++ b/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4
@@ -305,6 +305,7 @@ asmParamMode
| ASM_PAR_BEGIN asmExpr ASM_COMMA ASM_NAME ASM_PAR_END #asmModeIdxIndXY
| ASM_PAR_BEGIN asmExpr ASM_PAR_END #asmModeInd
| ASM_PAR_BEGIN ASM_PAR_BEGIN asmExpr ASM_PAR_END ASM_PAR_END #asmModeIndLong
+ | ASM_IMM asmExpr ASM_COMMA asmExpr #asmModeImmAndAbs
;
asmExpr
diff --git a/src/main/java/dk/camelot64/cpufamily6502/CpuAddressingMode.java b/src/main/java/dk/camelot64/cpufamily6502/CpuAddressingMode.java
index befa6f19b..4eea59b61 100644
--- a/src/main/java/dk/camelot64/cpufamily6502/CpuAddressingMode.java
+++ b/src/main/java/dk/camelot64/cpufamily6502/CpuAddressingMode.java
@@ -176,7 +176,20 @@ public enum CpuAddressingMode {
* test, and one indicating the signed relative PC offset if the branch is taken. This makes BBRi and BBSi the single
* instructions with two explicit operands.
*/
- REZ("zp,rel", "%i %p,%q", 2);
+ REZ("zp,rel", "%i %p,%q", 2),
+
+ /**
+ * #imm,zp Immediate, zeropage
+ * IMMEDIATE ADDRESSING, ZEROPAGE — Two parameters, one immediate the other a zeropage address. Only used by HUC6280 TST.
+ */
+ IMMANDZP("#imm,zp", "%i #%p,%q", 3),
+
+ /**
+ * #imm,abs Immediate, absolute
+ * IMMEDIATE ADDRESSING, ABSOLUTE — Two parameters, one immediate the other an absolute address. Only used by HUC6280 TST.
+ */
+ IMMANDABS("#imm,abs", "%i #%p,%q", 4);
+
/** The short name of the addressing mode. */
private String name;
diff --git a/src/main/java/dk/camelot64/cpufamily6502/cpus/CpuHuc6280.java b/src/main/java/dk/camelot64/cpufamily6502/cpus/CpuHuc6280.java
index aec737258..d63a82988 100644
--- a/src/main/java/dk/camelot64/cpufamily6502/cpus/CpuHuc6280.java
+++ b/src/main/java/dk/camelot64/cpufamily6502/cpus/CpuHuc6280.java
@@ -45,6 +45,8 @@ public class CpuHuc6280 extends Cpu65xx {
addOpcode(0xc2,"cly", CpuAddressingMode.NON,2,"Y");
addOpcode(0xd4,"csh", CpuAddressingMode.NON,2,"");
addOpcode(0xf4,"set", CpuAddressingMode.NON,2,"");
+ addOpcode(0x83,"tst", CpuAddressingMode.IMMANDZP,7,"vnz");
+ addOpcode(0xA3,"tst", CpuAddressingMode.IMMANDABS,8,"vnz");
}
}
diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
index c08125473..364693a92 100644
--- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
+++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
@@ -286,6 +286,11 @@ public class AsmFragmentInstance {
return createAsmInstruction(ctx, ctx.asmExpr(), null, CpuAddressingMode.IMM);
}
+ @Override
+ public Object visitAsmModeImmAndAbs(KickCParser.AsmModeImmAndAbsContext ctx) {
+ return createAsmInstruction(ctx, ctx.asmExpr(0), ctx.asmExpr(1), CpuAddressingMode.IMMANDABS);
+ }
+
@Override
public Object visitAsmModeAbsXY(KickCParser.AsmModeAbsXYContext ctx) {
final KickCParser.AsmExprContext indexCtx = ctx.asmExpr(1);
diff --git a/src/main/repo/mvn-repo-install-kickass.sh b/src/main/repo/mvn-repo-install-kickass.sh
index 88344821f..69c3a3722 100755
--- a/src/main/repo/mvn-repo-install-kickass.sh
+++ b/src/main/repo/mvn-repo-install-kickass.sh
@@ -4,7 +4,7 @@
cp ./repo/cml/kickass/kickassembler/maven-metadata.xml ./repo/cml/kickass/kickassembler/maven-metadata-local.xml
# mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Applications/KickAssembler/KickAss.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.16
-mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Users/jespergravgaard/c64/kickassembler65ce02/out/KickAss65CE02.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.24-65ce02.a
+mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Users/jespergravgaard/c64/kickassembler65ce02/out/KickAss65CE02.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.24-65ce02.b
# Finalize by making the local metadata official
pushd ./repo/cml/kickass/kickassembler
diff --git a/src/test/java/dk/camelot64/kickc/test/TestProgramsFast.java b/src/test/java/dk/camelot64/kickc/test/TestProgramsFast.java
index ab5fb7e68..30fc8a4a7 100644
--- a/src/test/java/dk/camelot64/kickc/test/TestProgramsFast.java
+++ b/src/test/java/dk/camelot64/kickc/test/TestProgramsFast.java
@@ -9,6 +9,27 @@ import java.io.IOException;
*/
public class TestProgramsFast extends TestPrograms {
+ @Test
+ public void testPointerSwap() throws IOException {
+ compileAndCompare("pointer-swap.c", log());
+ }
+
+ @Test
+ public void testDucksTotal() throws IOException {
+ compileAndCompare("ducks-total.c", log());
+ }
+
+ @Test
+ public void testDucksLoop211() throws IOException {
+ compileAndCompare("ducks-loop211.c", log());
+ }
+
+ @Test
+ public void testDucksArray() throws IOException {
+ compileAndCompare("ducks-array.c", log());
+ }
+
+
@Test
public void testSepaOptimizeProblem1() throws IOException {
compileAndCompare("sepa-optimize-problem-1.c");
diff --git a/src/test/kc/cpu-huc6280.c b/src/test/kc/cpu-huc6280.c
index 9c880f017..a55591913 100644
--- a/src/test/kc/cpu-huc6280.c
+++ b/src/test/kc/cpu-huc6280.c
@@ -20,6 +20,8 @@ void main() {
cly
csh
set
+ tst #1+2,$3+4
+ tst #1+2*3,$7654/2
!:
rts
}
diff --git a/src/test/kc/ducks-array.c b/src/test/kc/ducks-array.c
new file mode 100644
index 000000000..2a5fb89b4
--- /dev/null
+++ b/src/test/kc/ducks-array.c
@@ -0,0 +1,14 @@
+#include
+unsigned byte points[]={1,2,3,4};
+
+void chrout(volatile char register(A) petscii)
+ { asm { jsr $ffd2 }}
+
+void main()
+{
+chrout(149);
+chrout(points[0]);
+chrout(points[1]);
+chrout(points[2]);
+chrout(points[3]);
+}
diff --git a/src/test/kc/ducks-loop211.c b/src/test/kc/ducks-loop211.c
new file mode 100644
index 000000000..c32983b03
--- /dev/null
+++ b/src/test/kc/ducks-loop211.c
@@ -0,0 +1,22 @@
+#include
+#include <6502.h>
+
+const unsigned byte brick=230;
+
+void chrout(volatile char petscii)
+{
+ asm {
+ lda petscii
+ jsr $ffd2
+ }
+}
+
+void main()
+{
+ char k=1;
+ do {
+ POKE(211,k*4);
+ chrout(brick);
+ ++k;
+ } while (k<5);
+}
\ No newline at end of file
diff --git a/src/test/kc/ducks-total.c b/src/test/kc/ducks-total.c
new file mode 100644
index 000000000..fcb4e274e
--- /dev/null
+++ b/src/test/kc/ducks-total.c
@@ -0,0 +1,157 @@
+#include
+#include
+#include
+#include
+
+unsigned byte j,k,l,m,n=0; // [0..255] 8-bit
+unsigned short tu,duck,peephole,y,z,time,score,hiscore=0; // [0..65536] 16-bit
+unsigned byte points[]={0,0,0,0};
+unsigned byte buffer[]={0,0,0,0};
+
+const unsigned byte down=17,right=29,lock=8,lower=14;
+const unsigned byte home=19,reverse_on=18,brick=230;
+const unsigned byte green=30,yellow=158,red=28;
+const unsigned short c=30720; // for unexpanded. 37888-4096 color for expanded
+const unsigned byte ducknumber[]={68,85,67,75,58}; // DUCK:
+const unsigned byte chrono[]={84,77,58,57}; // TM:9
+const unsigned byte duck_udg[]={14,27,63,31,15,7,15,31,0,0,0,0,0,192,112,188,31,29,30,15,3,1,1,3,206,30,124,248,224,64,64,224,0,0,0,0,0,0,0,0};
+// POKE CODES = 0,1,2,3,4; CHROUT CODES = 64, 65, 66, 67, 68 (with previous reverse_off "chrout(146)")
+const unsigned byte intro[]="\n\n\nDIFFICULTY\n----------\n\n\n";
+const unsigned byte levels[]="1.EASIEST\n\n3.EASY\n\n5.MEDIUM\n\n7.HARD\n\n9.EXPERT\n\n\n\n\n";
+const unsigned byte foot[]="PRESS: 1,3,5,7 or 9\n\n";
+const unsigned byte game_over[]="\n\n\n\nGAME OVER";
+const unsigned byte play_again[]="\n\n\nPlay Again (Y/N)?";
+const unsigned byte your_score[]="\n\n\nYour Score: ";
+const unsigned byte high_score[]="\n\nHi-Score: ";
+
+void clear_screen(byte n, byte m)
+{ for (z=0; z<506; ++z) { POKE(7680+z+c,m); POKE(7680+z,n); } // From 0-->505 (506 bytes). ClearScreen with byte 'n' with color 'm'
+ gotoxy(0,0); chrout(home); } // Return to home position
+
+void random(byte k, byte n) // Random { k..n }
+{ do { m=PEEK(37140); }
+ while (mn); }
+
+void chrout(volatile char petscii)
+ { asm { lda petscii jsr $ffd2 }}
+
+void write_score(void) {
+ if (score>65000) score=0;
+ for (m=0;m<4;m++) { points[m]='0'; } // (!!) Needed. Possibly a bug
+ utoa(score,buffer,10);
+ if (score>9) { points[2]=buffer[0];points[3]=buffer[1]; }
+ if (score>99) { points[1]=buffer[0];points[2]=buffer[1];points[3]=buffer[2]; }
+ chrout(yellow);chrout(home);POKE(211,4);
+ for (m=0;m<4;m++) { chrout(points[m]); }
+}
+
+void wait(byte n)
+{ for (m=0;m39;
+ do {
+ clear_screen(32,0); // Clear Screen with spaces & black ink
+ textcolor(7); cputs(intro); // Yellow ink
+ textcolor(1); cputs(levels); // White
+ textcolor(2); cputs(foot); // Red
+ do { l=PEEK(197); ++l; } while (l>5); // wait for 1-3-5-7-9 keys only
+ clear_screen(4,0); // with (4=duser defined). Black ink
+ POKE(36869,255); // Graphic mode
+ chrout(reverse_on);chrout(red);chrout(down);
+ //for (z=1;z<23;z++) { POKE(7680+z*22,230);POKE(c+7680+z*22,2); POKE(7679+z*22,230); POKE(c+7679+z*22,2); } // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ //k=1; do { chrout(brick); POKE(211,20); chrout(brick); ++k; } while (k<23);
+ //for (k=1;k<22;k++) { chrout(brick); POKE(211,22); chrout(brick); }; // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ for (k=1;k<22;k++) { chrout(brick); for(n=2;n<22;++n) { chrout(right); }; chrout(brick); }; // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ chrout(brick); // first brick from last line (#23)
+ POKE(8185,brick);POKE(8185+c,2); //last brick from last line (#23) to avoid scrolling
+ chrout(home); z=1; // First position
+ if (l>1) {
+ do { // Write differential random bricks depending on 'l' level choosen
+ random((7-l),26-(3*l)); // Random number is 'm' (interleaves are level-dependent)
+ if (z+m>505) break;
+ for (j=1; j<=m; ++j) chrout(right);
+ chrout(brick); z=z+m+1; }
+ while (z<506);
+ }
+ peephole=7967; // Initial peephole position
+ POKE(36878,15); // Volume to max
+ score=0;
+ tu=1; // Duck #1
+ chrout(home);chrout(yellow);chrout(80);chrout(84);chrout(83);chrout(58); // Write 'PTS:', yellow
+ POKE(211,18); // jump to Column 18
+ for (j=0; j<4; ++j) { chrout(chrono[j]); }; // Write 'TM:9', yellow
+ write_score(); // Write Score (yellow)
+ chrout(home);chrout(green);POKE(211,10); // Jump to column 10
+ for (j=0; j<5; j++) { chrout(ducknumber[j]); }; // Write 'DUCK', green
+ do {
+ chrout(home);chrout(green);chrout(reverse_on);
+ POKE(211,15); // Jump to column 15
+ if (tu<10) { chrout(48+tu) }; else { chrout(49);chrout(48); } // Write duck number
+ do { random(0,255); duck=m; random(0,255); duck=m+7701+duck; } // Choose randon Duck position (in 2 parts random+random)
+ while ((duck>8163) || PEEK(duck)==brick || PEEK(duck+1)==brick || PEEK(duck+22)==brick || PEEK(duck+23)==brick);
+ time=0;chrono_restart();
+ while (time<10) // ...until 10 seconds
+ { read_chrono();
+ // Joystick routine
+ m=PEEK(37151); POKE(37154,127);
+ n=PEEK(37152); POKE(37154,255);
+ if ((16&m)==0) y--; // Left
+ if ((128&n)==0) y++; // Right
+ if ((4&m)==0) y=y-22; // Up
+ if ((8&m)==0) y=y+22; // Down
+ if ((32&m)==0) // FIRE!!
+ { POKE(36877,130);
+ if (peephole!=duck) { score=score-10; write_score(); wait(10); } // We hit the duck!
+ else { score=score+(12-time)*10; wait(10);time=10; } // We fail!
+ POKE(36877,0); // Stop sounds
+ }
+ if (PEEK(y)!=brick && PEEK(y+1)!=brick && PEEK(y+22)!=brick && PEEK(y+23)!=brick && y>7702 && y<8163)
+ { POKE(peephole+c,0); POKE(peephole+c+1,0); POKE(peephole+c+22,0); POKE(peephole+c+23,0); peephole=y; } // Check if peephole touches some bricks
+ y=peephole;
+ POKE(peephole,253);POKE(peephole+c,1);POKE(peephole+1,237);POKE(peephole+1+c,1);
+ POKE(peephole+22,238);POKE(peephole+22+c,1);POKE(peephole+23,240);POKE(peephole+23+c,1); // Clear peephole if there is not bricks contact
+ wait(5);
+ POKE(duck,0);POKE(duck+c,7);POKE(duck+1,1);POKE(duck+1+c,7); // Draw duck (udg)
+ POKE(duck+22,2);POKE(duck+22+c,7);POKE(duck+23,3);POKE(duck+23+c,7);
+ wait(5);
+ }
+ tu++; // Next duck
+ score=score-10;write_score(); // Substract 10 points if time finishes
+ POKE(36877,130);wait(20);POKE(36877,0); // Make some noise
+ POKE(duck+c,0); POKE(duck+1+c,0); POKE(duck+22+c,0); POKE(duck+23+c,0); // Clear previous duck draw
+ }
+ while (tu<11); // 10 ducks
+ clear_screen(4,0); // Clear screen with user-defined spaces & black ink
+ POKE(36869,240);chrout(lower); // Return to text mode, lowcase
+ textcolor(7); cputs(game_over); // Yellow
+ textcolor(2); cputs(your_score); cputs(buffer); // Red
+ textcolor(3); cputs(high_score); if (score>hiscore) hiscore=score; utoa(hiscore,buffer,10); cputs(buffer); // Cyan
+ textcolor(1); cputs(play_again); // white
+ do { j=PEEK(197); } while (j!= 11 && j!=28 ); // Wait for Y or N
+ } // Y pressed --> start again
+while (j==11); // N pressed. Exit game
+asm {jsr $FD22}; // Reset the VIC.
+}
\ No newline at end of file
diff --git a/src/test/kc/pointer-swap.c b/src/test/kc/pointer-swap.c
new file mode 100644
index 000000000..f06fbe89e
--- /dev/null
+++ b/src/test/kc/pointer-swap.c
@@ -0,0 +1,31 @@
+
+byte buffer1[10];
+byte buffer2[10];
+
+byte *newbuffer = buffer1;
+byte *oldbuffer = buffer2;
+byte *tempbuffer;
+
+char* screen = (char*)0x0400;
+char hextab[] = "0123456789abcdef"z;
+
+void print() {
+ screen[0] = hextab[(char)tempbuffer&0x0f];
+ screen[2] = hextab[(char)newbuffer&0x0f];
+ screen[4] = hextab[(char)oldbuffer&0x0f];
+ screen += 40;
+}
+
+void swap() {
+ tempbuffer = newbuffer;
+ newbuffer = oldbuffer;
+ oldbuffer = tempbuffer;
+ print();
+}
+
+void main() {
+ print();
+ swap();
+ swap();
+ swap();
+}
diff --git a/src/test/ref/cpu-huc6280.asm b/src/test/ref/cpu-huc6280.asm
index d4be5f55e..5849a2370 100644
--- a/src/test/ref/cpu-huc6280.asm
+++ b/src/test/ref/cpu-huc6280.asm
@@ -26,6 +26,8 @@ main: {
cly
csh
set
+ tst #1+2,3+4
+ tst #1+2*3,$7654/2
!:
rts
// }
diff --git a/src/test/ref/cpu-huc6280.cfg b/src/test/ref/cpu-huc6280.cfg
index bb2b4af08..5f4b06765 100644
--- a/src/test/ref/cpu-huc6280.cfg
+++ b/src/test/ref/cpu-huc6280.cfg
@@ -1,7 +1,7 @@
void main()
main: scope:[main] from
- asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts }
+ asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts }
to:main::@return
main::@return: scope:[main] from main
[1] return
diff --git a/src/test/ref/cpu-huc6280.log b/src/test/ref/cpu-huc6280.log
index c0d14db69..746feb160 100644
--- a/src/test/ref/cpu-huc6280.log
+++ b/src/test/ref/cpu-huc6280.log
@@ -3,7 +3,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start
- asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts }
+ asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts }
to:main::@return
main::@return: scope:[main] from main
return
@@ -37,7 +37,7 @@ FINAL CONTROL FLOW GRAPH
void main()
main: scope:[main] from
- asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts }
+ asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts }
to:main::@return
main::@return: scope:[main] from main
[1] return
@@ -50,14 +50,14 @@ void main()
Initial phi equivalence classes
Complete equivalence classes
REGISTER UPLIFT POTENTIAL REGISTERS
-Statement asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts } always clobbers reg byte a reg byte x reg byte y
+Statement asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts } always clobbers reg byte a reg byte x reg byte y
REGISTER UPLIFT SCOPES
Uplift Scope [main]
Uplift Scope []
-Uplifting [main] best 65 combination
-Uplifting [] best 65 combination
+Uplifting [main] best 81 combination
+Uplifting [] best 81 combination
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
@@ -76,7 +76,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Code
// main
main: {
- // asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts }
+ // asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts }
sxy
st0 #$55
st1 #$aa
@@ -92,6 +92,8 @@ main: {
cly
csh
set
+ tst #1+2,3+4
+ tst #1+2*3,$7654/2
!:
rts
jmp __breturn
@@ -116,7 +118,7 @@ void main()
FINAL ASSEMBLER
-Score: 56
+Score: 72
// File Comments
// Tests the HUC6280 instructions
@@ -135,7 +137,7 @@ Score: 56
// main
main: {
// asm
- // asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set !: rts }
+ // asm { sxy st0#$55 st1#$aa sax st2#$be say tma#2 bsr!+ tam#4 csl cla clx cly csh set tst#1+2,$3+4 tst#1+2*3,$7654/2 !: rts }
sxy
st0 #$55
st1 #$aa
@@ -151,6 +153,8 @@ main: {
cly
csh
set
+ tst #1+2,3+4
+ tst #1+2*3,$7654/2
!:
rts
// main::@return
diff --git a/src/test/ref/ducks-array.asm b/src/test/ref/ducks-array.asm
new file mode 100644
index 000000000..fe39f4296
--- /dev/null
+++ b/src/test/ref/ducks-array.asm
@@ -0,0 +1,45 @@
+/// @file
+/// Functions for performing input and output.
+ // Commodore 64 PRG executable file
+.file [name="ducks-array.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+.segment Code
+main: {
+ // chrout(149)
+ lda #$95
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(points[0])
+ lda points
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(points[1])
+ lda points+1
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(points[2])
+ lda points+2
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(points[3])
+ lda points+3
+ sta.z chrout.petscii
+ jsr chrout
+ // }
+ rts
+}
+// void chrout(__zp(2) volatile char petscii)
+chrout: {
+ .label petscii = 2
+ // asm
+ jsr $ffd2
+ // }
+ rts
+}
+.segment Data
+ points: .byte 1, 2, 3, 4
diff --git a/src/test/ref/ducks-array.cfg b/src/test/ref/ducks-array.cfg
new file mode 100644
index 000000000..a829ab50d
--- /dev/null
+++ b/src/test/ref/ducks-array.cfg
@@ -0,0 +1,33 @@
+
+void main()
+main: scope:[main] from
+ [0] chrout::petscii = $95
+ [1] call chrout
+ to:main::@1
+main::@1: scope:[main] from main
+ [2] chrout::petscii = *points
+ [3] call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [4] chrout::petscii = *(points+1)
+ [5] call chrout
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ [6] chrout::petscii = *(points+2)
+ [7] call chrout
+ to:main::@4
+main::@4: scope:[main] from main::@3
+ [8] chrout::petscii = *(points+3)
+ [9] call chrout
+ to:main::@return
+main::@return: scope:[main] from main::@4
+ [10] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main main::@1 main::@2 main::@3 main::@4
+ asm { jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [12] return
+ to:@return
diff --git a/src/test/ref/ducks-array.log b/src/test/ref/ducks-array.log
new file mode 100644
index 000000000..52b0efcee
--- /dev/null
+++ b/src/test/ref/ducks-array.log
@@ -0,0 +1,521 @@
+Fixing struct type size struct printf_buffer_number to 12
+Fixing struct type size struct printf_buffer_number to 12
+Fixing struct type size struct printf_buffer_number to 12
+Fixing struct type SIZE_OF struct printf_buffer_number to 12
+Fixing struct type SIZE_OF struct printf_buffer_number to 12
+Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
+Inlined call call __init
+Eliminating unused variable with no statement gotoxy::$4
+Eliminating unused variable with no statement printf_buffer
+
+CONTROL FLOW GRAPH SSA
+
+void gotoxy(char x , char y)
+gotoxy: scope:[gotoxy] from conio_c64_init::@1
+ gotoxy::x#3 = phi( conio_c64_init::@1/gotoxy::x#1 )
+ gotoxy::y#2 = phi( conio_c64_init::@1/gotoxy::y#1 )
+ gotoxy::$0 = gotoxy::y#2 > $19
+ gotoxy::$1 = ! gotoxy::$0
+ if(gotoxy::$1) goto gotoxy::@1
+ to:gotoxy::@2
+gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@2
+ gotoxy::x#2 = phi( gotoxy/gotoxy::x#3, gotoxy::@2/gotoxy::x#4 )
+ gotoxy::$2 = gotoxy::x#2 >= $28
+ gotoxy::$3 = ! gotoxy::$2
+ if(gotoxy::$3) goto gotoxy::@return
+ to:gotoxy::@3
+gotoxy::@2: scope:[gotoxy] from gotoxy
+ gotoxy::x#4 = phi( gotoxy/gotoxy::x#3 )
+ gotoxy::y#0 = 0
+ to:gotoxy::@1
+gotoxy::@3: scope:[gotoxy] from gotoxy::@1
+ gotoxy::x#0 = 0
+ to:gotoxy::@return
+gotoxy::@return: scope:[gotoxy] from gotoxy::@1 gotoxy::@3
+ return
+ to:@return
+
+void conio_c64_init()
+conio_c64_init: scope:[conio_c64_init] from __start::__init1
+ conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
+ conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+ conio_c64_init::$1 = ! conio_c64_init::$0
+ if(conio_c64_init::$1) goto conio_c64_init::@1
+ to:conio_c64_init::@2
+conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
+ conio_c64_init::line#2 = phi( conio_c64_init/conio_c64_init::line#0, conio_c64_init::@2/conio_c64_init::line#1 )
+ gotoxy::x#1 = 0
+ gotoxy::y#1 = conio_c64_init::line#2
+ call gotoxy
+ to:conio_c64_init::@3
+conio_c64_init::@3: scope:[conio_c64_init] from conio_c64_init::@1
+ to:conio_c64_init::@return
+conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
+ conio_c64_init::line#1 = $19-1
+ to:conio_c64_init::@1
+conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@3
+ return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main main::@1 main::@2 main::@3 main::@4
+ asm { jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ return
+ to:@return
+
+void main()
+main: scope:[main] from __start::@1
+ chrout::petscii = $95
+ call chrout
+ to:main::@1
+main::@1: scope:[main] from main
+ chrout::petscii = points[0]
+ call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ chrout::petscii = points[1]
+ call chrout
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ chrout::petscii = points[2]
+ call chrout
+ to:main::@4
+main::@4: scope:[main] from main::@3
+ chrout::petscii = points[3]
+ call chrout
+ to:main::@5
+main::@5: scope:[main] from main::@4
+ to:main::@return
+main::@return: scope:[main] from main::@5
+ return
+ to:@return
+
+void __start()
+__start: scope:[__start] from
+ to:__start::__init1
+__start::__init1: scope:[__start] from __start
+ call conio_c64_init
+ to:__start::@2
+__start::@2: scope:[__start] from __start::__init1
+ to:__start::@1
+__start::@1: scope:[__start] from __start::@2
+ call main
+ to:__start::@3
+__start::@3: scope:[__start] from __start::@1
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@3
+ return
+ to:@return
+
+SYMBOL TABLE SSA
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+void __start()
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii
+void conio_c64_init()
+bool conio_c64_init::$0
+bool conio_c64_init::$1
+__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *)$d6
+char conio_c64_init::line
+char conio_c64_init::line#0
+char conio_c64_init::line#1
+char conio_c64_init::line#2
+void gotoxy(char x , char y)
+bool gotoxy::$0
+bool gotoxy::$1
+bool gotoxy::$2
+bool gotoxy::$3
+char gotoxy::x
+char gotoxy::x#0
+char gotoxy::x#1
+char gotoxy::x#2
+char gotoxy::x#3
+char gotoxy::x#4
+char gotoxy::y
+char gotoxy::y#0
+char gotoxy::y#1
+char gotoxy::y#2
+void main()
+__constant char points[] = { 1, 2, 3, 4 }
+
+Adding number conversion cast (unumber) $19 in gotoxy::$0 = gotoxy::y#2 > $19
+Adding number conversion cast (unumber) $28 in gotoxy::$2 = gotoxy::x#2 >= $28
+Adding number conversion cast (unumber) 0 in gotoxy::y#0 = 0
+Adding number conversion cast (unumber) 0 in gotoxy::x#0 = 0
+Adding number conversion cast (unumber) $19 in conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+Adding number conversion cast (unumber) 0 in gotoxy::x#1 = 0
+Adding number conversion cast (unumber) $19-1 in conio_c64_init::line#1 = $19-1
+Adding number conversion cast (unumber) $95 in chrout::petscii = $95
+Adding number conversion cast (unumber) 0 in chrout::petscii = points[0]
+Adding number conversion cast (unumber) 1 in chrout::petscii = points[1]
+Adding number conversion cast (unumber) 2 in chrout::petscii = points[2]
+Adding number conversion cast (unumber) 3 in chrout::petscii = points[3]
+Successful SSA optimization PassNAddNumberTypeConversions
+Inlining cast gotoxy::y#0 = (unumber)0
+Inlining cast gotoxy::x#0 = (unumber)0
+Inlining cast gotoxy::x#1 = (unumber)0
+Inlining cast conio_c64_init::line#1 = (unumber)$19-1
+Inlining cast chrout::petscii = (unumber)$95
+Successful SSA optimization Pass2InlineCast
+Simplifying constant pointer cast (char *) 214
+Simplifying constant integer cast $19
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast $19
+Simplifying constant integer cast 0
+Simplifying constant integer cast $95
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 2
+Simplifying constant integer cast 3
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $95
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 3
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inversing boolean not [2] gotoxy::$1 = gotoxy::y#2 <= $19 from [1] gotoxy::$0 = gotoxy::y#2 > $19
+Inversing boolean not [6] gotoxy::$3 = gotoxy::x#2 < $28 from [5] gotoxy::$2 = gotoxy::x#2 >= $28
+Inversing boolean not [14] conio_c64_init::$1 = conio_c64_init::line#0 < $19 from [13] conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+Successful SSA optimization Pass2UnaryNotSimplification
+Alias gotoxy::x#3 = gotoxy::x#4
+Successful SSA optimization Pass2AliasElimination
+Alias gotoxy::x#2 = gotoxy::x#3
+Successful SSA optimization Pass2AliasElimination
+Identical Phi Values gotoxy::y#2 gotoxy::y#1
+Identical Phi Values gotoxy::x#2 gotoxy::x#1
+Successful SSA optimization Pass2IdenticalPhiElimination
+Simple Condition gotoxy::$1 [2] if(gotoxy::y#1<=$19) goto gotoxy::@1
+Simple Condition gotoxy::$3 [4] if(gotoxy::x#1<$28) goto gotoxy::@return
+Simple Condition conio_c64_init::$1 [10] if(conio_c64_init::line#0<$19) goto conio_c64_init::@1
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Constant right-side identified [15] conio_c64_init::line#1 = (unumber)$19-1
+Successful SSA optimization Pass2ConstantRValueConsolidation
+Constant gotoxy::y#0 = 0
+Constant gotoxy::x#0 = 0
+Constant gotoxy::x#1 = 0
+Constant conio_c64_init::line#1 = (unumber)$19-1
+Successful SSA optimization Pass2ConstantIdentification
+if() condition always true - replacing block destination [4] if(gotoxy::x#1<$28) goto gotoxy::@return
+Successful SSA optimization Pass2ConstantIfs
+Rewriting conditional comparison [2] if(gotoxy::y#1<=$19) goto gotoxy::@1
+Simplifying expression containing zero points in [21] chrout::petscii = points[0]
+Successful SSA optimization PassNSimplifyExpressionWithZero
+Removing call to empty/unused procedure [30] call conio_c64_init
+Successful SSA optimization PassNEliminateUnusedConstructors
+Eliminating variable conio_c64_init::line#0 from unused block conio_c64_init
+Eliminating variable conio_c64_init::line#2 from unused block conio_c64_init::@1
+Eliminating variable gotoxy::y#1 from unused block conio_c64_init::@1
+Removing unused procedure gotoxy
+Removing unused procedure block gotoxy
+Removing unused procedure block gotoxy::@1
+Removing unused procedure block gotoxy::@2
+Removing unused procedure block gotoxy::@3
+Removing unused procedure block gotoxy::@return
+Removing unused procedure conio_c64_init
+Removing unused procedure block conio_c64_init
+Removing PHI-reference to removed block (conio_c64_init) in block conio_c64_init::@1
+Removing unused procedure block conio_c64_init::@1
+Removing unused procedure block conio_c64_init::@3
+Removing unused procedure block conio_c64_init::@2
+Removing unused procedure block conio_c64_init::@return
+Successful SSA optimization Pass2EliminateUnusedBlocks
+Removing unused procedure __start
+Removing unused procedure block __start
+Removing unused procedure block __start::__init1
+Removing unused procedure block __start::@2
+Removing unused procedure block __start::@1
+Removing unused procedure block __start::@3
+Removing unused procedure block __start::@return
+Successful SSA optimization PassNEliminateEmptyStart
+Consolidated array index constant in *(points+1)
+Consolidated array index constant in *(points+2)
+Consolidated array index constant in *(points+3)
+Successful SSA optimization Pass2ConstantAdditionElimination
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 8
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $10
+Finalized unsigned number type (char) $b
+Finalized unsigned number type (char) $b
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Adding NOP phi() at start of main::@5
+CALL GRAPH
+Calls in [main] to chrout:1 chrout:3 chrout:5 chrout:7 chrout:9
+
+Created 0 initial phi equivalence classes
+Coalesced down to 0 phi equivalence classes
+Culled Empty Block label main::@5
+
+FINAL CONTROL FLOW GRAPH
+
+void main()
+main: scope:[main] from
+ [0] chrout::petscii = $95
+ [1] call chrout
+ to:main::@1
+main::@1: scope:[main] from main
+ [2] chrout::petscii = *points
+ [3] call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [4] chrout::petscii = *(points+1)
+ [5] call chrout
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ [6] chrout::petscii = *(points+2)
+ [7] call chrout
+ to:main::@4
+main::@4: scope:[main] from main::@3
+ [8] chrout::petscii = *(points+3)
+ [9] call chrout
+ to:main::@return
+main::@return: scope:[main] from main::@4
+ [10] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main main::@1 main::@2 main::@3 main::@4
+ asm { jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [12] return
+ to:@return
+
+
+VARIABLE REGISTER WEIGHTS
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // 100.0
+void main()
+
+Initial phi equivalence classes
+Added variable chrout::petscii to live range equivalence class [ chrout::petscii ]
+Complete equivalence classes
+[ chrout::petscii ]
+Allocated zp[1]:2 [ chrout::petscii ]
+REGISTER UPLIFT POTENTIAL REGISTERS
+Statement [0] chrout::petscii = $95 [ ] ( [ ] { } ) always clobbers reg byte a
+Statement [2] chrout::petscii = *points [ ] ( [ ] { } ) always clobbers reg byte a
+Statement [4] chrout::petscii = *(points+1) [ ] ( [ ] { } ) always clobbers reg byte a
+Statement [6] chrout::petscii = *(points+2) [ ] ( [ ] { } ) always clobbers reg byte a
+Statement [8] chrout::petscii = *(points+3) [ ] ( [ ] { } ) always clobbers reg byte a
+Statement asm { jsr$ffd2 } always clobbers reg byte a reg byte x reg byte y
+Potential registers zp[1]:2 [ chrout::petscii ] : zp[1]:2 ,
+
+REGISTER UPLIFT SCOPES
+Uplift Scope [chrout] 100: zp[1]:2 [ chrout::petscii ]
+Uplift Scope [RADIX]
+Uplift Scope [MOS6526_CIA]
+Uplift Scope [MOS6569_VICII]
+Uplift Scope [MOS6581_SID]
+Uplift Scope [printf_format_number]
+Uplift Scope [printf_buffer_number]
+Uplift Scope [printf_format_string]
+Uplift Scope [main]
+Uplift Scope []
+
+Uplifting [chrout] best 99 combination zp[1]:2 [ chrout::petscii ]
+Uplifting [RADIX] best 99 combination
+Uplifting [MOS6526_CIA] best 99 combination
+Uplifting [MOS6569_VICII] best 99 combination
+Uplifting [MOS6581_SID] best 99 combination
+Uplifting [printf_format_number] best 99 combination
+Uplifting [printf_buffer_number] best 99 combination
+Uplifting [printf_format_string] best 99 combination
+Uplifting [main] best 99 combination
+Uplifting [] best 99 combination
+Attempting to uplift remaining variables inzp[1]:2 [ chrout::petscii ]
+Uplifting [chrout] best 99 combination zp[1]:2 [ chrout::petscii ]
+
+ASSEMBLER BEFORE OPTIMIZATION
+ // File Comments
+/// @file
+/// Functions for performing input and output.
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="ducks-array.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+.segment Code
+ // main
+main: {
+ // [0] chrout::petscii = $95 -- vbuz1=vbuc1
+ lda #$95
+ sta.z chrout.petscii
+ // [1] call chrout
+ jsr chrout
+ jmp __b1
+ // main::@1
+ __b1:
+ // [2] chrout::petscii = *points -- vbuz1=_deref_pbuc1
+ lda points
+ sta.z chrout.petscii
+ // [3] call chrout
+ jsr chrout
+ jmp __b2
+ // main::@2
+ __b2:
+ // [4] chrout::petscii = *(points+1) -- vbuz1=_deref_pbuc1
+ lda points+1
+ sta.z chrout.petscii
+ // [5] call chrout
+ jsr chrout
+ jmp __b3
+ // main::@3
+ __b3:
+ // [6] chrout::petscii = *(points+2) -- vbuz1=_deref_pbuc1
+ lda points+2
+ sta.z chrout.petscii
+ // [7] call chrout
+ jsr chrout
+ jmp __b4
+ // main::@4
+ __b4:
+ // [8] chrout::petscii = *(points+3) -- vbuz1=_deref_pbuc1
+ lda points+3
+ sta.z chrout.petscii
+ // [9] call chrout
+ jsr chrout
+ jmp __breturn
+ // main::@return
+ __breturn:
+ // [10] return
+ rts
+}
+ // chrout
+// void chrout(__zp(2) volatile char petscii)
+chrout: {
+ .label petscii = 2
+ // asm { jsr$ffd2 }
+ jsr $ffd2
+ jmp __breturn
+ // chrout::@return
+ __breturn:
+ // [12] return
+ rts
+}
+ // File Data
+.segment Data
+ points: .byte 1, 2, 3, 4
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __b3
+Removing instruction jmp __b4
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction __b1:
+Removing instruction __b2:
+Removing instruction __b3:
+Removing instruction __b4:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Succesful ASM optimization Pass5UnusedLabelElimination
+
+FINAL SYMBOL TABLE
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:2 100.0
+void main()
+__constant char points[] = { 1, 2, 3, 4 }
+
+zp[1]:2 [ chrout::petscii ]
+
+
+FINAL ASSEMBLER
+Score: 81
+
+ // File Comments
+/// @file
+/// Functions for performing input and output.
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="ducks-array.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+.segment Code
+ // main
+main: {
+ // chrout(149)
+ // [0] chrout::petscii = $95 -- vbuz1=vbuc1
+ lda #$95
+ sta.z chrout.petscii
+ // [1] call chrout
+ jsr chrout
+ // main::@1
+ // chrout(points[0])
+ // [2] chrout::petscii = *points -- vbuz1=_deref_pbuc1
+ lda points
+ sta.z chrout.petscii
+ // [3] call chrout
+ jsr chrout
+ // main::@2
+ // chrout(points[1])
+ // [4] chrout::petscii = *(points+1) -- vbuz1=_deref_pbuc1
+ lda points+1
+ sta.z chrout.petscii
+ // [5] call chrout
+ jsr chrout
+ // main::@3
+ // chrout(points[2])
+ // [6] chrout::petscii = *(points+2) -- vbuz1=_deref_pbuc1
+ lda points+2
+ sta.z chrout.petscii
+ // [7] call chrout
+ jsr chrout
+ // main::@4
+ // chrout(points[3])
+ // [8] chrout::petscii = *(points+3) -- vbuz1=_deref_pbuc1
+ lda points+3
+ sta.z chrout.petscii
+ // [9] call chrout
+ jsr chrout
+ // main::@return
+ // }
+ // [10] return
+ rts
+}
+ // chrout
+// void chrout(__zp(2) volatile char petscii)
+chrout: {
+ .label petscii = 2
+ // asm
+ // asm { jsr$ffd2 }
+ jsr $ffd2
+ // chrout::@return
+ // }
+ // [12] return
+ rts
+}
+ // File Data
+.segment Data
+ points: .byte 1, 2, 3, 4
+
diff --git a/src/test/ref/ducks-array.sym b/src/test/ref/ducks-array.sym
new file mode 100644
index 000000000..4111ac446
--- /dev/null
+++ b/src/test/ref/ducks-array.sym
@@ -0,0 +1,10 @@
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:2 100.0
+void main()
+__constant char points[] = { 1, 2, 3, 4 }
+
+zp[1]:2 [ chrout::petscii ]
diff --git a/src/test/ref/ducks-loop211.asm b/src/test/ref/ducks-loop211.asm
new file mode 100644
index 000000000..78a214f22
--- /dev/null
+++ b/src/test/ref/ducks-loop211.asm
@@ -0,0 +1,46 @@
+/// @file
+/// PEEK and POKE macros for those who want to write BASIC code in C
+///
+/// Based on https://github.com/cc65/cc65/blob/master/include/peekpoke.h
+ // Commodore 64 PRG executable file
+.file [name="ducks-loop211.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ .const brick = $e6
+.segment Code
+main: {
+ .label k = 2
+ lda #1
+ sta.z k
+ __b1:
+ // POKE
+ lda.z k
+ asl
+ asl
+ sta.z $d3
+ // chrout(brick)
+ lda #brick
+ sta.z chrout.petscii
+ jsr chrout
+ // ++k;
+ inc.z k
+ // while (k<5)
+ lda.z k
+ cmp #5
+ bcc __b1
+ // }
+ rts
+}
+// void chrout(__zp(3) volatile char petscii)
+chrout: {
+ .label petscii = 3
+ // asm
+ lda petscii
+ jsr $ffd2
+ // }
+ rts
+}
diff --git a/src/test/ref/ducks-loop211.cfg b/src/test/ref/ducks-loop211.cfg
new file mode 100644
index 000000000..13258ed32
--- /dev/null
+++ b/src/test/ref/ducks-loop211.cfg
@@ -0,0 +1,27 @@
+
+void main()
+main: scope:[main] from
+ [0] phi()
+ to:main::@1
+main::@1: scope:[main] from main main::@2
+ [1] main::k#2 = phi( main/1, main::@2/main::k#1 )
+ [2] main::$0 = main::k#2 << 2
+ [3] *((char *) 211) = main::$0
+ [4] chrout::petscii = brick
+ [5] call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [6] main::k#1 = ++ main::k#2
+ [7] if(main::k#1<5) goto main::@1
+ to:main::@return
+main::@return: scope:[main] from main::@2
+ [8] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main::@1
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [10] return
+ to:@return
diff --git a/src/test/ref/ducks-loop211.log b/src/test/ref/ducks-loop211.log
new file mode 100644
index 000000000..66f3d5dd8
--- /dev/null
+++ b/src/test/ref/ducks-loop211.log
@@ -0,0 +1,353 @@
+
+CONTROL FLOW GRAPH SSA
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main::@1
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ return
+ to:@return
+
+void main()
+main: scope:[main] from __start
+ main::k#0 = 1
+ to:main::@1
+main::@1: scope:[main] from main main::@2
+ main::k#2 = phi( main/main::k#0, main::@2/main::k#1 )
+ main::$0 = main::k#2 * 4
+ *((char *)$d3) = main::$0
+ chrout::petscii = brick
+ call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ main::k#3 = phi( main::@1/main::k#2 )
+ main::k#1 = ++ main::k#3
+ main::$2 = main::k#1 < 5
+ if(main::$2) goto main::@1
+ to:main::@return
+main::@return: scope:[main] from main::@2
+ return
+ to:@return
+
+void __start()
+__start: scope:[__start] from
+ call main
+ to:__start::@1
+__start::@1: scope:[__start] from __start
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@1
+ return
+ to:@return
+
+SYMBOL TABLE SSA
+void __start()
+__constant const char brick = $e6
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii
+void main()
+number main::$0
+bool main::$2
+char main::k
+char main::k#0
+char main::k#1
+char main::k#2
+char main::k#3
+
+Adding number conversion cast (unumber) 4 in main::$0 = main::k#2 * 4
+Adding number conversion cast (unumber) main::$0 in main::$0 = main::k#2 * (unumber)4
+Adding number conversion cast (unumber) 5 in main::$2 = main::k#1 < 5
+Successful SSA optimization PassNAddNumberTypeConversions
+Simplifying constant integer cast 4
+Simplifying constant pointer cast (char *) 211
+Simplifying constant integer cast 5
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 5
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inferred type updated to char in main::$0 = main::k#2 * 4
+Alias main::k#2 = main::k#3
+Successful SSA optimization Pass2AliasElimination
+Simple Condition main::$2 [10] if(main::k#1<5) goto main::@1
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Constant main::k#0 = 1
+Successful SSA optimization Pass2ConstantIdentification
+Removing unused procedure __start
+Removing unused procedure block __start
+Removing unused procedure block __start::@1
+Removing unused procedure block __start::@return
+Successful SSA optimization PassNEliminateEmptyStart
+Rewriting multiplication to use shift [3] main::$0 = main::k#2 * 4
+Successful SSA optimization Pass2MultiplyToShiftRewriting
+Inlining constant with var siblings main::k#0
+Constant inlined main::k#0 = 1
+Successful SSA optimization Pass2ConstantInlining
+Added new block during phi lifting main::@3(between main::@2 and main::@1)
+Adding NOP phi() at start of main
+CALL GRAPH
+Calls in [main] to chrout:5
+
+Created 1 initial phi equivalence classes
+Coalesced [9] main::k#4 = main::k#1
+Coalesced down to 1 phi equivalence classes
+Culled Empty Block label main::@3
+Adding NOP phi() at start of main
+
+FINAL CONTROL FLOW GRAPH
+
+void main()
+main: scope:[main] from
+ [0] phi()
+ to:main::@1
+main::@1: scope:[main] from main main::@2
+ [1] main::k#2 = phi( main/1, main::@2/main::k#1 )
+ [2] main::$0 = main::k#2 << 2
+ [3] *((char *) 211) = main::$0
+ [4] chrout::petscii = brick
+ [5] call chrout
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [6] main::k#1 = ++ main::k#2
+ [7] if(main::k#1<5) goto main::@1
+ to:main::@return
+main::@return: scope:[main] from main::@2
+ [8] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from main::@1
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [10] return
+ to:@return
+
+
+VARIABLE REGISTER WEIGHTS
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // 11.0
+void main()
+char main::$0 // 22.0
+char main::k
+char main::k#1 // 16.5
+char main::k#2 // 6.6000000000000005
+
+Initial phi equivalence classes
+[ main::k#2 main::k#1 ]
+Added variable main::$0 to live range equivalence class [ main::$0 ]
+Added variable chrout::petscii to live range equivalence class [ chrout::petscii ]
+Complete equivalence classes
+[ main::k#2 main::k#1 ]
+[ main::$0 ]
+[ chrout::petscii ]
+Allocated zp[1]:2 [ main::k#2 main::k#1 ]
+Allocated zp[1]:3 [ main::$0 ]
+Allocated zp[1]:4 [ chrout::petscii ]
+REGISTER UPLIFT POTENTIAL REGISTERS
+Statement [2] main::$0 = main::k#2 << 2 [ main::k#2 main::$0 ] ( [ main::k#2 main::$0 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::k#2 main::k#1 ]
+Statement [4] chrout::petscii = brick [ main::k#2 chrout::petscii ] ( [ main::k#2 chrout::petscii ] { } ) always clobbers reg byte a
+Statement asm { ldapetscii jsr$ffd2 } always clobbers reg byte a reg byte x reg byte y
+Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::k#2 main::k#1 ]
+Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::k#2 main::k#1 ]
+Statement [2] main::$0 = main::k#2 << 2 [ main::k#2 main::$0 ] ( [ main::k#2 main::$0 ] { } ) always clobbers reg byte a
+Statement [4] chrout::petscii = brick [ main::k#2 chrout::petscii ] ( [ main::k#2 chrout::petscii ] { } ) always clobbers reg byte a
+Statement [7] if(main::k#1<5) goto main::@1 [ main::k#1 ] ( [ main::k#1 ] { } ) always clobbers reg byte a
+Statement asm { ldapetscii jsr$ffd2 } always clobbers reg byte a reg byte x reg byte y
+Potential registers zp[1]:2 [ main::k#2 main::k#1 ] : zp[1]:2 ,
+Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:4 [ chrout::petscii ] : zp[1]:4 ,
+
+REGISTER UPLIFT SCOPES
+Uplift Scope [main] 23.1: zp[1]:2 [ main::k#2 main::k#1 ] 22: zp[1]:3 [ main::$0 ]
+Uplift Scope [chrout] 11: zp[1]:4 [ chrout::petscii ]
+Uplift Scope []
+
+Uplifting [main] best 530 combination zp[1]:2 [ main::k#2 main::k#1 ] reg byte a [ main::$0 ]
+Uplifting [chrout] best 530 combination zp[1]:4 [ chrout::petscii ]
+Uplifting [] best 530 combination
+Attempting to uplift remaining variables inzp[1]:2 [ main::k#2 main::k#1 ]
+Uplifting [main] best 530 combination zp[1]:2 [ main::k#2 main::k#1 ]
+Attempting to uplift remaining variables inzp[1]:4 [ chrout::petscii ]
+Uplifting [chrout] best 530 combination zp[1]:4 [ chrout::petscii ]
+Allocated (was zp[1]:4) zp[1]:3 [ chrout::petscii ]
+
+ASSEMBLER BEFORE OPTIMIZATION
+ // File Comments
+/// @file
+/// PEEK and POKE macros for those who want to write BASIC code in C
+///
+/// Based on https://github.com/cc65/cc65/blob/master/include/peekpoke.h
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="ducks-loop211.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+ .const brick = $e6
+.segment Code
+ // main
+main: {
+ .label k = 2
+ // [1] phi from main to main::@1 [phi:main->main::@1]
+ __b1_from_main:
+ // [1] phi main::k#2 = 1 [phi:main->main::@1#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z k
+ jmp __b1
+ // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
+ __b1_from___b2:
+ // [1] phi main::k#2 = main::k#1 [phi:main::@2->main::@1#0] -- register_copy
+ jmp __b1
+ // main::@1
+ __b1:
+ // [2] main::$0 = main::k#2 << 2 -- vbuaa=vbuz1_rol_2
+ lda.z k
+ asl
+ asl
+ // [3] *((char *) 211) = main::$0 -- _deref_pbuc1=vbuaa
+ sta.z $d3
+ // [4] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [5] call chrout
+ jsr chrout
+ jmp __b2
+ // main::@2
+ __b2:
+ // [6] main::k#1 = ++ main::k#2 -- vbuz1=_inc_vbuz1
+ inc.z k
+ // [7] if(main::k#1<5) goto main::@1 -- vbuz1_lt_vbuc1_then_la1
+ lda.z k
+ cmp #5
+ bcc __b1_from___b2
+ jmp __breturn
+ // main::@return
+ __breturn:
+ // [8] return
+ rts
+}
+ // chrout
+// void chrout(__zp(3) volatile char petscii)
+chrout: {
+ .label petscii = 3
+ // asm { ldapetscii jsr$ffd2 }
+ lda petscii
+ jsr $ffd2
+ jmp __breturn
+ // chrout::@return
+ __breturn:
+ // [10] return
+ rts
+}
+ // File Data
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Succesful ASM optimization Pass5NextJumpElimination
+Replacing label __b1_from___b2 with __b1
+Removing instruction __b1_from___b2:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction __b1_from_main:
+Removing instruction __b2:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Removing instruction jmp __b1
+Succesful ASM optimization Pass5NextJumpElimination
+
+FINAL SYMBOL TABLE
+__constant const char brick = $e6
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:3 11.0
+void main()
+char main::$0 // reg byte a 22.0
+char main::k
+char main::k#1 // k zp[1]:2 16.5
+char main::k#2 // k zp[1]:2 6.6000000000000005
+
+zp[1]:2 [ main::k#2 main::k#1 ]
+reg byte a [ main::$0 ]
+zp[1]:3 [ chrout::petscii ]
+
+
+FINAL ASSEMBLER
+Score: 407
+
+ // File Comments
+/// @file
+/// PEEK and POKE macros for those who want to write BASIC code in C
+///
+/// Based on https://github.com/cc65/cc65/blob/master/include/peekpoke.h
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="ducks-loop211.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+ .const brick = $e6
+.segment Code
+ // main
+main: {
+ .label k = 2
+ // [1] phi from main to main::@1 [phi:main->main::@1]
+ // [1] phi main::k#2 = 1 [phi:main->main::@1#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z k
+ // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
+ // [1] phi main::k#2 = main::k#1 [phi:main::@2->main::@1#0] -- register_copy
+ // main::@1
+ __b1:
+ // POKE
+ // [2] main::$0 = main::k#2 << 2 -- vbuaa=vbuz1_rol_2
+ lda.z k
+ asl
+ asl
+ // [3] *((char *) 211) = main::$0 -- _deref_pbuc1=vbuaa
+ sta.z $d3
+ // chrout(brick)
+ // [4] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [5] call chrout
+ jsr chrout
+ // main::@2
+ // ++k;
+ // [6] main::k#1 = ++ main::k#2 -- vbuz1=_inc_vbuz1
+ inc.z k
+ // while (k<5)
+ // [7] if(main::k#1<5) goto main::@1 -- vbuz1_lt_vbuc1_then_la1
+ lda.z k
+ cmp #5
+ bcc __b1
+ // main::@return
+ // }
+ // [8] return
+ rts
+}
+ // chrout
+// void chrout(__zp(3) volatile char petscii)
+chrout: {
+ .label petscii = 3
+ // asm
+ // asm { ldapetscii jsr$ffd2 }
+ lda petscii
+ jsr $ffd2
+ // chrout::@return
+ // }
+ // [10] return
+ rts
+}
+ // File Data
+
diff --git a/src/test/ref/ducks-loop211.sym b/src/test/ref/ducks-loop211.sym
new file mode 100644
index 000000000..ece0015ba
--- /dev/null
+++ b/src/test/ref/ducks-loop211.sym
@@ -0,0 +1,12 @@
+__constant const char brick = $e6
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:3 11.0
+void main()
+char main::$0 // reg byte a 22.0
+char main::k
+char main::k#1 // k zp[1]:2 16.5
+char main::k#2 // k zp[1]:2 6.6000000000000005
+
+zp[1]:2 [ main::k#2 main::k#1 ]
+reg byte a [ main::$0 ]
+zp[1]:3 [ chrout::petscii ]
diff --git a/src/test/ref/ducks-total.asm b/src/test/ref/ducks-total.asm
new file mode 100644
index 000000000..7e8118595
--- /dev/null
+++ b/src/test/ref/ducks-total.asm
@@ -0,0 +1,2126 @@
+/// @file
+/// Functions for performing input and output.
+ // Commodore 64 PRG executable file
+.file [name="ducks-total.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(__start)
+ .const LIGHT_BLUE = $e
+ .const down = $11
+ .const right = $1d
+ .const lock = 8
+ .const lower = $e
+ .const home = $13
+ .const reverse_on = $12
+ .const brick = $e6
+ .const green = $1e
+ .const yellow = $9e
+ .const red = $1c
+ .const c = $7800
+ /// Color Ram
+ .label COLORRAM = $d800
+ /// Default address of screen character matrix
+ .label DEFAULT_SCREEN = $400
+ // The number of bytes on the screen
+ // The current cursor x-position
+ .label conio_cursor_x = $27
+ // The current cursor y-position
+ .label conio_cursor_y = $1d
+ // The current text cursor line start
+ .label conio_line_text = $20
+ // The current color cursor line start
+ .label conio_line_color = $1e
+ // The current text color
+ .label conio_textcolor = $22
+ .label l = $6b
+ .label m = 4
+ .label z = $25
+ .label z_1 = $14
+ .label n = $33
+ .label k = $63
+ .label j = $32
+ .label j_1 = $55
+ .label j_2 = $56
+ .label duck = $16
+ // [0..255] 8-bit
+ .label tu = $6e
+ // Volume to max
+ .label score = $2a
+ .label y = $28
+ .label time = $30
+ .label j_3 = $68
+ // Remainder after signed 8 bit division
+ .label rem8u = $f
+ .label peephole = $34
+ .label y_1 = $34
+ .label hiscore = $2a
+ .label hiscore_1 = $6c
+.segment Code
+__start: {
+ // __ma char conio_cursor_x = 0
+ lda #0
+ sta.z conio_cursor_x
+ // __ma char conio_cursor_y = 0
+ sta.z conio_cursor_y
+ // __ma char *conio_line_text = CONIO_SCREEN_TEXT
+ lda #DEFAULT_SCREEN
+ sta.z conio_line_text+1
+ // __ma char *conio_line_color = CONIO_SCREEN_COLORS
+ lda #COLORRAM
+ sta.z conio_line_color+1
+ // __ma char conio_textcolor = CONIO_TEXTCOLOR_DEFAULT
+ lda #LIGHT_BLUE
+ sta.z conio_textcolor
+ // j,k,l,m
+ lda #0
+ sta.z l
+ // j,k,l,m,n=0
+ sta.z m
+ // #pragma constructor_for(conio_c64_init, cputc, clrscr, cscroll)
+ jsr conio_c64_init
+ jsr main
+ rts
+}
+// Set initial cursor position
+conio_c64_init: {
+ // Position cursor at current line
+ .label BASIC_CURSOR_LINE = $d6
+ .label line = $4c
+ // char line = *BASIC_CURSOR_LINE
+ lda.z BASIC_CURSOR_LINE
+ sta.z line
+ // if(line>=CONIO_HEIGHT)
+ cmp #$19
+ bcc __b1
+ lda #$19-1
+ sta.z line
+ __b1:
+ // gotoxy(0, line)
+ jsr gotoxy
+ // }
+ rts
+}
+main: {
+ .label __3 = $70
+ .label __26 = 8
+ .label __29 = 5
+ .label __35 = $66
+ .label __57 = $64
+ .label __61 = $d
+ .label __66 = $b
+ .label __69 = $19
+ .label __72 = $1b
+ .label __78 = $10
+ .label __81 = 7
+ .label __84 = 3
+ .label __88 = $36
+ .label __92 = $37
+ .label __96 = $2e
+ .label __97 = $2e
+ .label __104 = $5d
+ .label __107 = $5f
+ .label __110 = $61
+ .label __119 = $4a
+ .label __120 = $51
+ .label __122 = $53
+ .label __124 = $4a
+ .label __125 = $4d
+ .label __127 = $3a
+ .label __128 = $3a
+ .label __130 = $3c
+ .label __131 = $3c
+ .label __133 = $3e
+ .label __134 = $3e
+ .label __136 = $4f
+ .label __138 = $40
+ .label __139 = $40
+ .label __141 = $42
+ .label __142 = $42
+ .label __144 = $44
+ .label __145 = $44
+ .label __150 = $69
+ .label __151 = $57
+ .label __152 = $57
+ .label __153 = $59
+ .label __154 = $59
+ .label __155 = $5b
+ .label __156 = $5b
+ .label __177 = 8
+ .label __179 = $38
+ .label __180 = $2e
+ // POKE
+ lda #8
+ sta $900f
+ // chrout(lock)
+ lda #lock
+ sta.z chrout.petscii
+ // border and black paper
+ jsr chrout
+ // chrout(lower)
+ lda #lower
+ sta.z chrout.petscii
+ //Lock UpperCase to Lowercase key
+ jsr chrout
+ // m=0
+ lda #0
+ sta.z m
+ //Put text in Lowercase set
+ __b1:
+ // for (m=0; m<40; m++)
+ lda.z m
+ cmp #$28
+ bcs !__b2+
+ jmp __b2
+ !__b2:
+ lda #0
+ sta.z n
+ sta.z hiscore_1
+ sta.z hiscore_1+1
+ sta.z y
+ sta.z y+1
+ sta.z rem8u
+ // Load udgs. From 0-->39;
+ __b3:
+ // clear_screen(32,0)
+ lda #$20
+ sta.z clear_screen.n
+ jsr clear_screen
+ // textcolor(7)
+ // Clear Screen with spaces & black ink
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(intro)
+ lda #intro
+ sta.z cputs.s+1
+ jsr cputs
+ // textcolor(1)
+ // Yellow ink
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(levels)
+ lda #levels
+ sta.z cputs.s+1
+ jsr cputs
+ // textcolor(2)
+ // White
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(foot)
+ lda #foot
+ sta.z cputs.s+1
+ jsr cputs
+ // Red
+ __b4:
+ // l=PEEK
+ lda.z $c5
+ sta.z l
+ // ++l;
+ inc.z l
+ // while (l>5)
+ lda.z l
+ cmp #5+1
+ bcs __b4
+ // clear_screen(4,0)
+ // wait for 1-3-5-7-9 keys only
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ // POKE
+ lda #$ff
+ sta $9005
+ // chrout(reverse_on)
+ lda #reverse_on
+ sta.z chrout.petscii
+ // Graphic mode
+ jsr chrout
+ // chrout(red)
+ lda #red
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(down)
+ lda #down
+ sta.z chrout.petscii
+ jsr chrout
+ lda #1
+ sta.z k
+ //for (z=1;z<23;z++) { POKE(7680+z*22,230);POKE(c+7680+z*22,2); POKE(7679+z*22,230); POKE(c+7679+z*22,2); } // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ //k=1; do { chrout(brick); POKE(211,20); chrout(brick); ++k; } while (k<23);
+ //for (k=1;k<22;k++) { chrout(brick); POKE(211,22); chrout(brick); }; // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ __b6:
+ // for (k=1;k<22;k++)
+ lda.z k
+ cmp #$16
+ bcs !__b7+
+ jmp __b7
+ !__b7:
+ // chrout(brick)
+ lda #brick
+ sta.z chrout.petscii
+ // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ jsr chrout
+ // POKE
+ lda #brick
+ sta $1ff9
+ lda #2
+ sta $1ff9+c
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ //last brick from last line (#23) to avoid scrolling
+ jsr chrout
+ // if (l>1)
+ lda.z l
+ cmp #1+1
+ bcc __b8
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ __b13:
+ // random((7-l),26-(3*l))
+ lda #7
+ sec
+ sbc.z l
+ sta.z random.k
+ // 3*l
+ lda.z l
+ asl
+ sta.z __177
+ lda.z __26
+ clc
+ adc.z l
+ sta.z __26
+ // random((7-l),26-(3*l))
+ lda #$1a
+ sec
+ sbc.z random.n
+ sta.z random.n
+ // Write differential random bricks depending on 'l' level choosen
+ jsr random
+ // z+m
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __29
+ lda #0
+ adc.z z_1+1
+ sta.z __29+1
+ // if (z+m>505)
+ cmp #>$1f9
+ bne !+
+ lda.z __29
+ cmp #<$1f9
+ !:
+ bcs !__b24+
+ jmp __b24
+ !__b24:
+ bne !__b24+
+ jmp __b24
+ !__b24:
+ jmp __b12
+ __b8:
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ __b12:
+ // POKE
+ lda #$f
+ sta $900e
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ // Duck #1
+ jsr chrout
+ // chrout(yellow)
+ lda #yellow
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(80)
+ lda #$50
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(84)
+ lda #$54
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(83)
+ lda #$53
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(58)
+ lda #$3a
+ sta.z chrout.petscii
+ jsr chrout
+ // POKE
+ lda #$12
+ sta.z $d3
+ lda #0
+ sta.z j_1
+ // jump to Column 18
+ __b17:
+ // for (j=0; j<4; ++j)
+ lda.z j_1
+ cmp #4
+ bcs !__b18+
+ jmp __b18
+ !__b18:
+ // write_score()
+ // Write 'TM:9', yellow
+ lda #<0
+ sta.z score
+ sta.z score+1
+ jsr write_score
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ // Write Score (yellow)
+ jsr chrout
+ // chrout(green)
+ lda #green
+ sta.z chrout.petscii
+ jsr chrout
+ // POKE
+ lda #$a
+ sta.z $d3
+ lda #0
+ sta.z j_2
+ // Jump to column 10
+ __b20:
+ // for (j=0; j<5; j++)
+ lda.z j_2
+ cmp #5
+ bcs !__b21+
+ jmp __b21
+ !__b21:
+ lda #<$1f1f
+ sta.z peephole
+ lda #>$1f1f
+ sta.z peephole+1
+ lda #<1
+ sta.z tu
+ lda #>1
+ sta.z tu+1
+ // Write 'DUCK', green
+ __b22:
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(green)
+ lda #green
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(reverse_on)
+ lda #reverse_on
+ sta.z chrout.petscii
+ jsr chrout
+ // POKE
+ lda #$f
+ sta.z $d3
+ // if (tu<10)
+ // Jump to column 15
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$a
+ bcs !__b23+
+ jmp __b23
+ !__b23:
+ !:
+ // chrout(49)
+ lda #$31
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(48)
+ lda #$30
+ sta.z chrout.petscii
+ jsr chrout
+ __b11:
+ // Write duck number
+ // random(0,255)
+ lda #$ff
+ sta.z random.n
+ lda #0
+ sta.z random.k
+ jsr random
+ // duck=m
+ lda.z m
+ sta.z duck
+ lda #0
+ sta.z duck+1
+ // random(0,255)
+ lda #$ff
+ sta.z random.n
+ lda #0
+ sta.z random.k
+ jsr random
+ // m+7701
+ lda.z m
+ clc
+ adc #<$1e15
+ sta.z __61
+ lda #>$1e15
+ adc #0
+ sta.z __61+1
+ // duck=m+7701+duck
+ clc
+ lda.z duck
+ adc.z __61
+ sta.z duck
+ lda.z duck+1
+ adc.z __61+1
+ sta.z duck+1
+ // PEEK
+ clc
+ lda.z duck
+ adc #1
+ sta.z __66
+ lda.z duck+1
+ adc #0
+ sta.z __66+1
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __69
+ lda #0
+ adc.z duck+1
+ sta.z __69+1
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __72
+ lda #0
+ adc.z duck+1
+ sta.z __72+1
+ // while ((duck>8163) || PEEK(duck)==brick || PEEK(duck+1)==brick || PEEK(duck+22)==brick || PEEK(duck+23)==brick)
+ lda #>$1fe3
+ cmp.z duck+1
+ bcc __b11
+ bne !+
+ lda #<$1fe3
+ cmp.z duck
+ bcc __b11
+ !:
+ lda #brick
+ ldy #0
+ cmp (duck),y
+ beq __b11
+ cmp (__66),y
+ beq __b11
+ cmp (__69),y
+ beq __b11
+ cmp (__72),y
+ bne !__b11+
+ jmp __b11
+ !__b11:
+ // chrono_restart()
+ jsr chrono_restart
+ lda #<0
+ sta.z time
+ sta.z time+1
+ __b26:
+ // while (time<10)
+ lda.z time+1
+ bne !+
+ lda.z time
+ cmp #$a
+ bcs !__b27+
+ jmp __b27
+ !__b27:
+ !:
+ // tu++;
+ inc.z tu
+ bne !+
+ inc.z tu+1
+ !:
+ // score=score-10
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // write_score()
+ jsr write_score
+ // POKE
+ lda #$82
+ sta $900d
+ // wait(20)
+ lda #$14
+ sta.z wait.n
+ jsr wait
+ // POKE
+ lda #0
+ sta $900d
+ lda.z duck
+ clc
+ adc #c
+ sta.z __150+1
+ lda #0
+ tay
+ sta (__150),y
+ lda.z duck
+ sta.z __151
+ lda.z duck+1
+ sta.z __151+1
+ lda.z __152
+ clc
+ adc #<1+c
+ sta.z __152
+ lda.z __152+1
+ adc #>1+c
+ sta.z __152+1
+ tya
+ sta (__152),y
+ lda.z duck
+ sta.z __153
+ lda.z duck+1
+ sta.z __153+1
+ lda.z __154
+ clc
+ adc #<$16+c
+ sta.z __154
+ lda.z __154+1
+ adc #>$16+c
+ sta.z __154+1
+ tya
+ sta (__154),y
+ lda.z duck
+ sta.z __155
+ lda.z duck+1
+ sta.z __155+1
+ lda.z __156
+ clc
+ adc #<$17+c
+ sta.z __156
+ lda.z __156+1
+ adc #>$17+c
+ sta.z __156+1
+ tya
+ sta (__156),y
+ // while (tu<11)
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$b
+ bcs !__b22+
+ jmp __b22
+ !__b22:
+ !:
+ // clear_screen(4,0)
+ // 10 ducks
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ // POKE
+ lda #$f0
+ sta $9005
+ // chrout(lower)
+ lda #lower
+ sta.z chrout.petscii
+ jsr chrout
+ // textcolor(7)
+ // Return to text mode, lowcase
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(game_over)
+ lda #game_over
+ sta.z cputs.s+1
+ jsr cputs
+ // textcolor(2)
+ // Yellow
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(your_score)
+ lda #your_score
+ sta.z cputs.s+1
+ jsr cputs
+ // cputs(buffer)
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // textcolor(3)
+ // Red
+ lda #3
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(high_score)
+ lda #high_score
+ sta.z cputs.s+1
+ jsr cputs
+ // if (score>hiscore)
+ lda.z score+1
+ cmp.z hiscore_1+1
+ bne !+
+ lda.z score
+ cmp.z hiscore_1
+ beq __b114
+ !:
+ bcc __b114
+ jmp __b46
+ __b114:
+ lda.z hiscore_1
+ sta.z hiscore
+ lda.z hiscore_1+1
+ sta.z hiscore+1
+ __b46:
+ // utoa(hiscore,buffer,10)
+ lda.z hiscore
+ sta.z utoa.value
+ lda.z hiscore+1
+ sta.z utoa.value+1
+ jsr utoa
+ // cputs(buffer)
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // textcolor(1)
+ // Cyan
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // cputs(play_again)
+ lda #play_again
+ sta.z cputs.s+1
+ jsr cputs
+ // white
+ __b47:
+ // j=PEEK
+ lda.z $c5
+ sta.z j_3
+ // while (j!= 11 && j!=28 )
+ lda #$b
+ cmp.z j_3
+ beq __b48
+ lda #$1c
+ cmp.z j_3
+ bne __b47
+ __b48:
+ // while (j==11)
+ lda #$b
+ cmp.z j_3
+ beq __b113
+ // asm
+ // N pressed. Exit game
+ jsr $fd22
+ // }
+ rts
+ __b113:
+ lda.z hiscore
+ sta.z hiscore_1
+ lda.z hiscore+1
+ sta.z hiscore_1+1
+ jmp __b3
+ __b27:
+ // read_chrono()
+ jsr read_chrono
+ // m=PEEK
+ // Joystick routine
+ lda $911f
+ sta.z m
+ // POKE
+ lda #$7f
+ sta $9122
+ // n=PEEK
+ lda $9120
+ sta.z n
+ // POKE
+ lda #$ff
+ sta $9122
+ // 16&m
+ lda #$10
+ and.z m
+ sta.z __78
+ // if ((16&m)==0)
+ bne __b29
+ // y--;
+ lda.z y
+ bne !+
+ dec.z y+1
+ !:
+ dec.z y
+ __b29:
+ // 128&n
+ lda #$80
+ and.z n
+ sta.z __81
+ // if ((128&n)==0)
+ bne __b30
+ // y++;
+ inc.z y
+ bne !+
+ inc.z y+1
+ !:
+ __b30:
+ // 4&m
+ lda #4
+ and.z m
+ sta.z __84
+ // if ((4&m)==0)
+ bne __b31
+ // y=y-22
+ sec
+ lda.z y
+ sbc #$16
+ sta.z y
+ lda.z y+1
+ sbc #0
+ sta.z y+1
+ __b31:
+ // 8&m
+ lda #8
+ and.z m
+ sta.z __88
+ // if ((8&m)==0)
+ bne __b32
+ // y=y+22
+ lda #$16
+ clc
+ adc.z y
+ sta.z y
+ bcc !+
+ inc.z y+1
+ !:
+ __b32:
+ // 32&m
+ lda #$20
+ and.z m
+ sta.z __92
+ // if ((32&m)==0)
+ bne __b33
+ // POKE
+ lda #$82
+ sta $900d
+ // if (peephole!=duck)
+ lda.z peephole+1
+ cmp.z duck+1
+ beq !__b34+
+ jmp __b34
+ !__b34:
+ lda.z peephole
+ cmp.z duck
+ beq !__b34+
+ jmp __b34
+ !__b34:
+ // 12-time
+ sec
+ lda #<$c
+ sbc.z div16u8u.return_1
+ sta.z __96
+ lda #>$c
+ sbc.z div16u8u.return_1+1
+ sta.z __96+1
+ // (12-time)*10
+ lda.z __96
+ asl
+ sta.z __179
+ lda.z __96+1
+ rol
+ sta.z __179+1
+ asl.z __179
+ rol.z __179+1
+ clc
+ lda.z __180
+ adc.z __179
+ sta.z __180
+ lda.z __180+1
+ adc.z __179+1
+ sta.z __180+1
+ asl.z __97
+ rol.z __97+1
+ // score=score+(12-time)*10
+ clc
+ lda.z score
+ adc.z __97
+ sta.z score
+ lda.z score+1
+ adc.z __97+1
+ sta.z score+1
+ // wait(10)
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ lda #<$a
+ sta.z time
+ lda #>$a
+ sta.z time+1
+ __b35:
+ // POKE
+ lda #0
+ sta $900d
+ __b33:
+ // PEEK
+ clc
+ lda.z y
+ adc #1
+ sta.z __104
+ lda.z y+1
+ adc #0
+ sta.z __104+1
+ lda #$16
+ clc
+ adc.z y
+ sta.z __107
+ lda #0
+ adc.z y+1
+ sta.z __107+1
+ lda #$17
+ clc
+ adc.z y
+ sta.z __110
+ lda #0
+ adc.z y+1
+ sta.z __110+1
+ // if (PEEK(y)!=brick && PEEK(y+1)!=brick && PEEK(y+22)!=brick && PEEK(y+23)!=brick && y>7702 && y<8163)
+ lda #brick
+ ldy #0
+ cmp (y),y
+ beq __b36
+ cmp (__104),y
+ beq __b36
+ lda (__107),y
+ cmp #brick
+ beq !__b109+
+ jmp __b109
+ !__b109:
+ __b36:
+ // POKE
+ lda #$fd
+ ldy #0
+ sta (y_1),y
+ lda.z y_1
+ clc
+ adc #c
+ sta.z __125+1
+ lda #1
+ sta (__125),y
+ clc
+ lda.z y_1
+ adc #1
+ sta.z __127
+ lda.z y_1+1
+ adc #0
+ sta.z __127+1
+ lda #$ed
+ sta (__127),y
+ lda.z __128
+ clc
+ adc #c
+ sta.z __128+1
+ lda #1
+ sta (__128),y
+ lda #$16
+ clc
+ adc.z y_1
+ sta.z __130
+ tya
+ adc.z y_1+1
+ sta.z __130+1
+ lda #$ee
+ sta (__130),y
+ lda.z __131
+ clc
+ adc #c
+ sta.z __131+1
+ lda #1
+ sta (__131),y
+ lda #$17
+ clc
+ adc.z y_1
+ sta.z __133
+ tya
+ adc.z y_1+1
+ sta.z __133+1
+ lda #$f0
+ sta (__133),y
+ lda.z __134
+ clc
+ adc #c
+ sta.z __134+1
+ lda #1
+ sta (__134),y
+ // wait(5)
+ // Clear peephole if there is not bricks contact
+ lda #5
+ sta.z wait.n
+ jsr wait
+ // POKE
+ lda #0
+ tay
+ sta (duck),y
+ lda.z duck
+ clc
+ adc #c
+ sta.z __136+1
+ lda #7
+ sta (__136),y
+ clc
+ lda.z duck
+ adc #1
+ sta.z __138
+ lda.z duck+1
+ adc #0
+ sta.z __138+1
+ lda #1
+ sta (__138),y
+ lda.z __139
+ clc
+ adc #c
+ sta.z __139+1
+ lda #7
+ sta (__139),y
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __141
+ tya
+ adc.z duck+1
+ sta.z __141+1
+ lda #2
+ sta (__141),y
+ lda.z __142
+ clc
+ adc #c
+ sta.z __142+1
+ lda #7
+ sta (__142),y
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __144
+ tya
+ adc.z duck+1
+ sta.z __144+1
+ lda #3
+ sta (__144),y
+ lda.z __145
+ clc
+ adc #c
+ sta.z __145+1
+ lda #7
+ sta (__145),y
+ // wait(5)
+ lda #5
+ sta.z wait.n
+ jsr wait
+ lda.z y_1
+ sta.z y
+ lda.z y_1+1
+ sta.z y+1
+ jmp __b26
+ __b109:
+ // if (PEEK(y)!=brick && PEEK(y+1)!=brick && PEEK(y+22)!=brick && PEEK(y+23)!=brick && y>7702 && y<8163)
+ lda #brick
+ ldy #0
+ cmp (__110),y
+ bne !__b36+
+ jmp __b36
+ !__b36:
+ lda #>$1e16
+ cmp.z y+1
+ bcc __b107
+ bne !+
+ lda #<$1e16
+ cmp.z y
+ bcc __b107
+ !:
+ jmp __b36
+ __b107:
+ lda.z y+1
+ cmp #>$1fe3
+ bcc !+
+ beq !__b36+
+ jmp __b36
+ !__b36:
+ lda.z y
+ cmp #<$1fe3
+ bcc !__b36+
+ jmp __b36
+ !__b36:
+ !:
+ // POKE
+ lda.z peephole
+ clc
+ adc #c
+ sta.z __119+1
+ lda #0
+ tay
+ sta (__119),y
+ clc
+ lda.z __119
+ adc #1
+ sta.z __120
+ lda.z __119+1
+ adc #0
+ sta.z __120+1
+ tya
+ sta (__120),y
+ lda #$16
+ clc
+ adc.z __119
+ sta.z __122
+ tya
+ adc.z __119+1
+ sta.z __122+1
+ tya
+ sta (__122),y
+ lda #$17
+ clc
+ adc.z __124
+ sta.z __124
+ bcc !+
+ inc.z __124+1
+ !:
+ lda #0
+ tay
+ sta (__124),y
+ lda.z y
+ sta.z y_1
+ lda.z y+1
+ sta.z y_1+1
+ jmp __b36
+ __b34:
+ // score=score-10
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // write_score()
+ jsr write_score
+ // wait(10)
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ jmp __b35
+ __b23:
+ // 48+tu
+ lda #$30
+ clc
+ adc.z tu
+ sta.z __57
+ lda #0
+ adc.z tu+1
+ sta.z __57+1
+ // chrout(48+tu)
+ lda.z __57
+ sta.z chrout.petscii
+ jsr chrout
+ jmp __b11
+ __b21:
+ // chrout(ducknumber[j])
+ ldy.z j_2
+ lda ducknumber,y
+ sta.z chrout.petscii
+ jsr chrout
+ // for (j=0; j<5; j++)
+ inc.z j_2
+ jmp __b20
+ __b18:
+ // chrout(chrono[j])
+ ldy.z j_1
+ lda chrono,y
+ sta.z chrout.petscii
+ jsr chrout
+ // for (j=0; j<4; ++j)
+ inc.z j_1
+ jmp __b17
+ __b24:
+ lda #1
+ sta.z j
+ __b14:
+ // for (j=1; j<=m; ++j)
+ lda.z m
+ cmp.z j
+ bcs __b15
+ // chrout(brick)
+ lda #brick
+ sta.z chrout.petscii
+ jsr chrout
+ // z+m
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __35
+ lda #0
+ adc.z z_1+1
+ sta.z __35+1
+ // z=z+m+1
+ clc
+ lda.z __35
+ adc #1
+ sta.z z_1
+ lda.z __35+1
+ adc #0
+ sta.z z_1+1
+ // while (z<506)
+ cmp #>$1fa
+ bcs !__b13+
+ jmp __b13
+ !__b13:
+ bne !+
+ lda.z z_1
+ cmp #<$1fa
+ bcs !__b13+
+ jmp __b13
+ !__b13:
+ !:
+ jmp __b12
+ __b15:
+ // chrout(right)
+ lda #right
+ sta.z chrout.petscii
+ jsr chrout
+ // for (j=1; j<=m; ++j)
+ inc.z j
+ jmp __b14
+ __b7:
+ // chrout(brick)
+ lda #brick
+ sta.z chrout.petscii
+ jsr chrout
+ lda #2
+ sta.z n
+ __b9:
+ // for(n=2;n<22;++n)
+ lda.z n
+ cmp #$16
+ bcc __b10
+ // chrout(brick)
+ lda #brick
+ sta.z chrout.petscii
+ jsr chrout
+ // for (k=1;k<22;k++)
+ inc.z k
+ jmp __b6
+ __b10:
+ // chrout(right)
+ lda #right
+ sta.z chrout.petscii
+ jsr chrout
+ // for(n=2;n<22;++n)
+ inc.z n
+ jmp __b9
+ __b2:
+ // POKE
+ lda.z m
+ clc
+ adc #<$1c00
+ sta.z __3
+ lda #>$1c00
+ adc #0
+ sta.z __3+1
+ ldy.z m
+ lda duck_udg,y
+ ldy #0
+ sta (__3),y
+ // for (m=0; m<40; m++)
+ inc.z m
+ jmp __b1
+}
+// Set the cursor to the specified position
+// void gotoxy(char x, __zp($4c) char y)
+gotoxy: {
+ .label __5 = $48
+ .label __6 = $2c
+ .label __7 = $2c
+ .label line_offset = $2c
+ .label y = $4c
+ .label __8 = $46
+ .label __9 = $2c
+ // if(y>CONIO_HEIGHT)
+ lda.z y
+ cmp #$19+1
+ bcc __b2
+ lda #0
+ sta.z y
+ __b2:
+ // conio_cursor_x = x
+ lda #0
+ sta.z conio_cursor_x
+ // conio_cursor_y = y
+ lda.z y
+ sta.z conio_cursor_y
+ // unsigned int line_offset = (unsigned int)y*CONIO_WIDTH
+ lda.z y
+ sta.z __7
+ lda #0
+ sta.z __7+1
+ lda.z __7
+ asl
+ sta.z __8
+ lda.z __7+1
+ rol
+ sta.z __8+1
+ asl.z __8
+ rol.z __8+1
+ clc
+ lda.z __9
+ adc.z __8
+ sta.z __9
+ lda.z __9+1
+ adc.z __8+1
+ sta.z __9+1
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ // CONIO_SCREEN_TEXT + line_offset
+ lda.z line_offset
+ clc
+ adc #DEFAULT_SCREEN
+ sta.z __5+1
+ // conio_line_text = CONIO_SCREEN_TEXT + line_offset
+ lda.z __5
+ sta.z conio_line_text
+ lda.z __5+1
+ sta.z conio_line_text+1
+ // CONIO_SCREEN_COLORS + line_offset
+ lda.z __6
+ clc
+ adc #COLORRAM
+ sta.z __6+1
+ // conio_line_color = CONIO_SCREEN_COLORS + line_offset
+ lda.z __6
+ sta.z conio_line_color
+ lda.z __6+1
+ sta.z conio_line_color+1
+ // }
+ rts
+}
+// void chrout(__zp($18) volatile char petscii)
+chrout: {
+ .label petscii = $18
+ // asm
+ lda petscii
+ jsr $ffd2
+ // }
+ rts
+}
+// void clear_screen(__zp(8) char n, char m)
+clear_screen: {
+ .label __4 = $23
+ .label __5 = 9
+ .label n = 8
+ lda #<0
+ sta.z z
+ sta.z z+1
+ __b1:
+ // for (z=0; z<506; ++z)
+ lda.z z+1
+ cmp #>$1fa
+ bcc __b2
+ bne !+
+ lda.z z
+ cmp #<$1fa
+ bcc __b2
+ !:
+ // gotoxy(0,0)
+ // From 0-->505 (506 bytes). ClearScreen with byte 'n' with color 'm'
+ lda #0
+ sta.z gotoxy.y
+ jsr gotoxy
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ jsr chrout
+ // }
+ rts
+ __b2:
+ // POKE
+ lda.z z
+ clc
+ adc #<$1e00
+ sta.z __5
+ lda.z z+1
+ adc #>$1e00
+ sta.z __5+1
+ lda.z __5
+ clc
+ adc #c
+ sta.z __4+1
+ lda #0
+ tay
+ sta (__4),y
+ lda.z n
+ sta (__5),y
+ // for (z=0; z<506; ++z)
+ inc.z z
+ bne !+
+ inc.z z+1
+ !:
+ jmp __b1
+}
+// Set the color for text output. The old color setting is returned.
+// char textcolor(__zp(8) char color)
+textcolor: {
+ .label color = 8
+ // conio_textcolor = color
+ lda.z color
+ sta.z conio_textcolor
+ // }
+ rts
+}
+// Output a NUL-terminated string at the current cursor position
+// void cputs(__zp(5) const char *s)
+cputs: {
+ .label c = 2
+ .label s = 5
+ __b1:
+ // while(c=*s++)
+ ldy #0
+ lda (s),y
+ sta.z c
+ inc.z s
+ bne !+
+ inc.z s+1
+ !:
+ lda.z c
+ bne __b2
+ // }
+ rts
+ __b2:
+ // cputc(c)
+ jsr cputc
+ jmp __b1
+}
+// Return to home position
+// void random(__zp(3) char k, __zp(8) char n)
+random: {
+ .label k = 3
+ .label n = 8
+ .label __3 = 2
+ __b1:
+ // m=PEEK
+ lda $9114
+ sta.z m
+ // m>n
+ sta.z __3
+ // while (mn)
+ lda.z m
+ cmp.z k
+ bcc __b1
+ lda.z n
+ cmp.z __3
+ bcc __b1
+ // }
+ rts
+}
+write_score: {
+ // if (score>65000)
+ lda.z score+1
+ cmp #>$fde8
+ bne !+
+ lda.z score
+ cmp #<$fde8
+ !:
+ bcc __b1
+ beq __b1
+ lda #<0
+ sta.z score
+ sta.z score+1
+ __b1:
+ // m=0
+ lda #0
+ sta.z m
+ __b5:
+ // for (m=0;m<4;m++)
+ lda.z m
+ cmp #4
+ bcc __b6
+ // utoa(score,buffer,10)
+ lda.z score
+ sta.z utoa.value
+ lda.z score+1
+ sta.z utoa.value+1
+ // (!!) Needed. Possibly a bug
+ jsr utoa
+ // if (score>9)
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #9+1
+ bcc __b2
+ !:
+ // points[2]=buffer[0]
+ lda buffer
+ sta points+2
+ // points[3]=buffer[1]
+ lda buffer+1
+ sta points+3
+ __b2:
+ // if (score>99)
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #$63+1
+ bcc __b3
+ !:
+ // points[1]=buffer[0]
+ lda buffer
+ sta points+1
+ // points[2]=buffer[1]
+ lda buffer+1
+ sta points+2
+ // points[3]=buffer[2]
+ lda buffer+2
+ sta points+3
+ __b3:
+ // chrout(yellow)
+ lda #yellow
+ sta.z chrout.petscii
+ jsr chrout
+ // chrout(home)
+ lda #home
+ sta.z chrout.petscii
+ jsr chrout
+ // POKE
+ lda #4
+ sta.z $d3
+ // m=0
+ lda #0
+ sta.z m
+ __b9:
+ // for (m=0;m<4;m++)
+ lda.z m
+ cmp #4
+ bcc __b10
+ // }
+ rts
+ __b10:
+ // chrout(points[m])
+ ldy.z m
+ lda points,y
+ sta.z chrout.petscii
+ jsr chrout
+ // for (m=0;m<4;m++)
+ inc.z m
+ jmp __b9
+ __b6:
+ // points[m]='0'
+ lda #'0'
+ ldy.z m
+ sta points,y
+ // for (m=0;m<4;m++)
+ inc.z m
+ jmp __b5
+}
+chrono_restart: {
+ // asm
+ lda #0
+ tay
+ tax
+ jsr $ffdb
+ // }
+ rts
+}
+// void wait(__zp(3) char n)
+wait: {
+ .label n = 3
+ // m=0
+ lda #0
+ sta.z m
+ __b1:
+ // for (m=0;m$21c
+ bcc __b3
+ bne !+
+ lda.z z_1
+ cmp #<$21c
+ bcc __b3
+ !:
+ // for (m=0;m@buffer
+ sta.z buffer+1
+ lda #0
+ sta.z started
+ sta.z digit
+ __b1:
+ // for( char digit=0; digit= digit_value)
+ lda.z started
+ bne __b5
+ lda.z digit_value+1
+ cmp.z value+1
+ bne !+
+ lda.z digit_value
+ cmp.z value
+ beq __b5
+ !:
+ bcc __b5
+ __b4:
+ // for( char digit=0; digit$b9
+ sbc.z div16u8u.return_1+1
+ sta.z __5+1
+ lda.z __5
+ sta $1e15
+ __breturn:
+ // }
+ rts
+}
+// Output one character at the current cursor position
+// Moves the cursor forward. Scrolls the entire screen if needed
+// void cputc(__zp(2) char c)
+cputc: {
+ .label c = 2
+ // if(c=='\n')
+ lda #'\n'
+ cmp.z c
+ beq __b1
+ // conio_line_text[conio_cursor_x] = c
+ lda.z c
+ ldy.z conio_cursor_x
+ sta (conio_line_text),y
+ // conio_line_color[conio_cursor_x] = conio_textcolor
+ lda.z conio_textcolor
+ sta (conio_line_color),y
+ // if(++conio_cursor_x==CONIO_WIDTH)
+ inc.z conio_cursor_x
+ lda #$28
+ cmp.z conio_cursor_x
+ bne __breturn
+ // cputln()
+ jsr cputln
+ __breturn:
+ // }
+ rts
+ __b1:
+ // cputln()
+ jsr cputln
+ rts
+}
+// Used to convert a single digit of an unsigned number value to a string representation
+// Counts a single digit up from '0' as long as the value is larger than sub.
+// Each time the digit is increased sub is subtracted from value.
+// - buffer : pointer to the char that receives the digit
+// - value : The value where the digit will be derived from
+// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
+// (For decimal the subs used are 10000, 1000, 100, 10, 1)
+// returns : the value reduced by sub * digit so that it is less than sub.
+// __zp(5) unsigned int utoa_append(__zp($d) char *buffer, __zp(5) unsigned int value, __zp(9) unsigned int sub)
+utoa_append: {
+ .label buffer = $d
+ .label value = 5
+ .label sub = 9
+ .label return = 5
+ .label digit = 7
+ lda #0
+ sta.z digit
+ __b1:
+ // while (value >= sub)
+ lda.z sub+1
+ cmp.z value+1
+ bne !+
+ lda.z sub
+ cmp.z value
+ beq __b2
+ !:
+ bcc __b2
+ // *buffer = DIGITS[digit]
+ ldy.z digit
+ lda DIGITS,y
+ ldy #0
+ sta (buffer),y
+ // }
+ rts
+ __b2:
+ // digit++;
+ inc.z digit
+ // value -= sub
+ lda.z value
+ sec
+ sbc.z sub
+ sta.z value
+ lda.z value+1
+ sbc.z sub+1
+ sta.z value+1
+ jmp __b1
+}
+// Divide unsigned 16-bit unsigned long dividend with a 8-bit unsigned char divisor
+// The 8-bit unsigned char remainder can be found in rem8u after the division
+// __zp($30) unsigned int div16u8u(__zp($23) unsigned int dividend, char divisor)
+div16u8u: {
+ .label divisor = $3c
+ .label quotient_hi = 2
+ .label quotient_lo = $10
+ .label return = $12
+ .label dividend = $23
+ .label return_1 = $30
+ // unsigned char quotient_hi = divr8u(BYTE1(dividend), divisor, 0)
+ lda.z dividend+1
+ sta.z divr8u.dividend
+ lda #0
+ sta.z divr8u.rem
+ jsr divr8u
+ // unsigned char quotient_hi = divr8u(BYTE1(dividend), divisor, 0)
+ lda.z divr8u.return
+ sta.z quotient_hi
+ // unsigned char quotient_lo = divr8u(BYTE0(dividend), divisor, rem8u)
+ lda.z dividend
+ sta.z divr8u.dividend
+ jsr divr8u
+ // unsigned char quotient_lo = divr8u(BYTE0(dividend), divisor, rem8u)
+ // unsigned int quotient = MAKEWORD( quotient_hi, quotient_lo )
+ lda.z quotient_hi
+ sta.z return+1
+ lda.z quotient_lo
+ sta.z return
+ // }
+ rts
+}
+// Print a newline
+cputln: {
+ // conio_line_text += CONIO_WIDTH
+ lda #$28
+ clc
+ adc.z conio_line_text
+ sta.z conio_line_text
+ bcc !+
+ inc.z conio_line_text+1
+ !:
+ // conio_line_color += CONIO_WIDTH
+ lda #$28
+ clc
+ adc.z conio_line_color
+ sta.z conio_line_color
+ bcc !+
+ inc.z conio_line_color+1
+ !:
+ // conio_cursor_x = 0
+ lda #0
+ sta.z conio_cursor_x
+ // conio_cursor_y++;
+ inc.z conio_cursor_y
+ // cscroll()
+ jsr cscroll
+ // }
+ rts
+}
+// Performs division on two 8 bit unsigned chars and an initial remainder
+// Returns dividend/divisor.
+// The final remainder will be set into the global variable rem8u
+// Implemented using simple binary division
+// __zp($10) char divr8u(__zp(3) char dividend, char divisor, __zp($f) char rem)
+divr8u: {
+ .label __1 = $11
+ .label rem = $f
+ .label dividend = 3
+ .label quotient = $10
+ .label i = 7
+ .label return = $10
+ lda #0
+ sta.z i
+ sta.z quotient
+ __b1:
+ // rem = rem << 1
+ asl.z rem
+ // dividend & $80
+ lda #$80
+ and.z dividend
+ sta.z __1
+ // if( (dividend & $80) != 0 )
+ beq __b2
+ // rem = rem | 1
+ lda #1
+ ora.z rem
+ sta.z rem
+ __b2:
+ // dividend = dividend << 1
+ asl.z dividend
+ // quotient = quotient << 1
+ asl.z quotient
+ // if(rem>=divisor)
+ lda.z rem
+ cmp #div16u8u.divisor
+ bcc __b3
+ // quotient++;
+ inc.z quotient
+ // rem = rem - divisor
+ lax.z rem
+ axs #div16u8u.divisor
+ stx.z rem
+ __b3:
+ // for( char i : 0..7)
+ inc.z i
+ lda #8
+ cmp.z i
+ bne __b1
+ // }
+ rts
+}
+// Scroll the entire screen if the cursor is beyond the last line
+cscroll: {
+ // if(conio_cursor_y==CONIO_HEIGHT)
+ lda #$19
+ cmp.z conio_cursor_y
+ bne __breturn
+ // memcpy(CONIO_SCREEN_TEXT, CONIO_SCREEN_TEXT+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
+ lda #DEFAULT_SCREEN
+ sta.z memcpy.destination+1
+ lda #DEFAULT_SCREEN+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // memcpy(CONIO_SCREEN_COLORS, CONIO_SCREEN_COLORS+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
+ lda #COLORRAM
+ sta.z memcpy.destination+1
+ lda #COLORRAM+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // memset(CONIO_SCREEN_TEXT+CONIO_BYTES-CONIO_WIDTH, ' ', CONIO_WIDTH)
+ lda #' '
+ sta.z memset.c
+ lda #DEFAULT_SCREEN+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ // memset(CONIO_SCREEN_COLORS+CONIO_BYTES-CONIO_WIDTH, conio_textcolor, CONIO_WIDTH)
+ lda.z conio_textcolor
+ sta.z memset.c
+ lda #COLORRAM+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ // conio_line_text -= CONIO_WIDTH
+ sec
+ lda.z conio_line_text
+ sbc #$28
+ sta.z conio_line_text
+ lda.z conio_line_text+1
+ sbc #0
+ sta.z conio_line_text+1
+ // conio_line_color -= CONIO_WIDTH
+ sec
+ lda.z conio_line_color
+ sbc #$28
+ sta.z conio_line_color
+ lda.z conio_line_color+1
+ sbc #0
+ sta.z conio_line_color+1
+ // conio_cursor_y--;
+ dec.z conio_cursor_y
+ __breturn:
+ // }
+ rts
+}
+// Copy block of memory (forwards)
+// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
+// void * memcpy(__zp($b) void *destination, __zp($d) void *source, unsigned int num)
+memcpy: {
+ .label src_end = 9
+ .label dst = $b
+ .label src = $d
+ .label source = $d
+ .label destination = $b
+ // char* src_end = (char*)source+num
+ lda.z source
+ clc
+ adc #<$19*$28-$28
+ sta.z src_end
+ lda.z source+1
+ adc #>$19*$28-$28
+ sta.z src_end+1
+ __b1:
+ // while(src!=src_end)
+ lda.z src+1
+ cmp.z src_end+1
+ bne __b2
+ lda.z src
+ cmp.z src_end
+ bne __b2
+ // }
+ rts
+ __b2:
+ // *dst++ = *src++
+ ldy #0
+ lda (src),y
+ sta (dst),y
+ // *dst++ = *src++;
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ inc.z src
+ bne !+
+ inc.z src+1
+ !:
+ jmp __b1
+}
+// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
+// void * memset(__zp($b) void *str, __zp($10) char c, unsigned int num)
+memset: {
+ .label end = $12
+ .label dst = $b
+ .label c = $10
+ .label str = $b
+ // char* end = (char*)str + num
+ lda #$28
+ clc
+ adc.z str
+ sta.z end
+ lda #0
+ adc.z str+1
+ sta.z end+1
+ __b2:
+ // for(char* dst = str; dst!=end; dst++)
+ lda.z dst+1
+ cmp.z end+1
+ bne __b3
+ lda.z dst
+ cmp.z end
+ bne __b3
+ // }
+ rts
+ __b3:
+ // *dst = c
+ lda.z c
+ ldy #0
+ sta (dst),y
+ // for(char* dst = str; dst!=end; dst++)
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ jmp __b2
+}
+.segment Data
+ // The digits used for numbers
+ DIGITS: .text "0123456789abcdef"
+ // Values of decimal digits
+ RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a
+ // [0..65536] 16-bit
+ points: .byte 0, 0, 0, 0
+ buffer: .byte 0, 0, 0, 0
+ // for unexpanded. 37888-4096 color for expanded
+ ducknumber: .byte $44, $55, $43, $4b, $3a
+ // DUCK:
+ chrono: .byte $54, $4d, $3a, $39
+ // TM:9
+ duck_udg: .byte $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0
+ // POKE CODES = 0,1,2,3,4; CHROUT CODES = 64, 65, 66, 67, 68 (with previous reverse_off "chrout(146)")
+ intro: .text @"\n\n\nDIFFICULTY\n----------\n\n\n"
+ .byte 0
+ levels: .text @"1.EASIEST\n\n3.EASY\n\n5.MEDIUM\n\n7.HARD\n\n9.EXPERT\n\n\n\n\n"
+ .byte 0
+ foot: .text @"PRESS: 1,3,5,7 or 9\n\n"
+ .byte 0
+ game_over: .text @"\n\n\n\nGAME OVER"
+ .byte 0
+ play_again: .text @"\n\n\nPlay Again (Y/N)?"
+ .byte 0
+ your_score: .text @"\n\n\nYour Score: "
+ .byte 0
+ high_score: .text @"\n\nHi-Score: "
+ .byte 0
diff --git a/src/test/ref/ducks-total.cfg b/src/test/ref/ducks-total.cfg
new file mode 100644
index 000000000..52f2f3316
--- /dev/null
+++ b/src/test/ref/ducks-total.cfg
@@ -0,0 +1,1030 @@
+
+void __start()
+__start: scope:[__start] from
+ [0] phi()
+ to:__start::__init1
+__start::__init1: scope:[__start] from __start
+ [1] conio_cursor_x = 0
+ [2] conio_cursor_y = 0
+ [3] conio_line_text = DEFAULT_SCREEN
+ [4] conio_line_color = COLORRAM
+ [5] conio_textcolor = LIGHT_BLUE
+ [6] l = 0
+ [7] m = 0
+ [8] call conio_c64_init
+ to:__start::@1
+__start::@1: scope:[__start] from __start::__init1
+ [9] phi()
+ [10] call main
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@1
+ [11] return
+ to:@return
+
+void conio_c64_init()
+conio_c64_init: scope:[conio_c64_init] from __start::__init1
+ [12] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
+ [13] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2
+ to:conio_c64_init::@1
+conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
+ [14] phi()
+ to:conio_c64_init::@1
+conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
+ [15] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
+ [16] gotoxy::y#2 = conio_c64_init::line#2
+ [17] call gotoxy
+ to:conio_c64_init::@return
+conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@1
+ [18] return
+ to:@return
+
+void main()
+main: scope:[main] from __start::@1
+ [19] *((char *) 36879) = 8
+ [20] chrout::petscii = lock
+ [21] call chrout
+ to:main::@50
+main::@50: scope:[main] from main
+ [22] chrout::petscii = lower
+ [23] call chrout
+ to:main::@51
+main::@51: scope:[main] from main::@50
+ [24] m = 0
+ to:main::@1
+main::@1: scope:[main] from main::@2 main::@51
+ [25] if(m<$28) goto main::@2
+ to:main::@3
+main::@3: scope:[main] from main::@1 main::@113
+ [26] n#109 = phi( main::@1/0, main::@113/n#20 )
+ [26] hiscore#110 = phi( main::@1/0, main::@113/hiscore#123 )
+ [26] y#114 = phi( main::@1/0, main::@113/y#18 )
+ [26] rem8u#127 = phi( main::@1/0, main::@113/rem8u#25 )
+ [27] call clear_screen
+ to:main::@52
+main::@52: scope:[main] from main::@3
+ [28] phi()
+ [29] call textcolor
+ to:main::@53
+main::@53: scope:[main] from main::@52
+ [30] phi()
+ [31] call cputs
+ to:main::@54
+main::@54: scope:[main] from main::@53
+ [32] phi()
+ [33] call textcolor
+ to:main::@55
+main::@55: scope:[main] from main::@54
+ [34] phi()
+ [35] call cputs
+ to:main::@56
+main::@56: scope:[main] from main::@55
+ [36] phi()
+ [37] call textcolor
+ to:main::@57
+main::@57: scope:[main] from main::@56
+ [38] phi()
+ [39] call cputs
+ to:main::@4
+main::@4: scope:[main] from main::@4 main::@57
+ [40] l = *((char *) 197)
+ [41] l = ++ l
+ [42] if(l>=5+1) goto main::@4
+ to:main::@5
+main::@5: scope:[main] from main::@4
+ [43] phi()
+ [44] call clear_screen
+ to:main::@58
+main::@58: scope:[main] from main::@5
+ [45] *((char *) 36869) = $ff
+ [46] chrout::petscii = reverse_on
+ [47] call chrout
+ to:main::@59
+main::@59: scope:[main] from main::@58
+ [48] chrout::petscii = red
+ [49] call chrout
+ to:main::@60
+main::@60: scope:[main] from main::@59
+ [50] chrout::petscii = down
+ [51] call chrout
+ to:main::@6
+main::@6: scope:[main] from main::@60 main::@64
+ [52] n#89 = phi( main::@60/n#109, main::@64/n#101 )
+ [52] k#101 = phi( main::@60/1, main::@64/k#1 )
+ [53] if(k#101<$16) goto main::@7
+ to:main::@8
+main::@8: scope:[main] from main::@6
+ [54] chrout::petscii = brick
+ [55] call chrout
+ to:main::@61
+main::@61: scope:[main] from main::@8
+ [56] *((char *) 8185) = brick
+ [57] *((char *)$1ff9+c) = 2
+ [58] chrout::petscii = home
+ [59] call chrout
+ to:main::@62
+main::@62: scope:[main] from main::@61
+ [60] if(l<1+1) goto main::@12
+ to:main::@13
+main::@13: scope:[main] from main::@62 main::@73
+ [61] z#28 = phi( main::@62/1, main::@73/z#9 )
+ [62] random::k#0 = 7 - l
+ [63] main::$177 = l << 1
+ [64] main::$26 = main::$177 + l
+ [65] random::n#0 = $1a - main::$26
+ [66] call random
+ to:main::@71
+main::@71: scope:[main] from main::@13
+ [67] main::$29 = z#28 + m
+ [68] if(main::$29<=$1f9) goto main::@14
+ to:main::@12
+main::@12: scope:[main] from main::@62 main::@71 main::@73
+ [69] z#128 = phi( main::@62/1, main::@71/z#28, main::@73/z#9 )
+ [70] *((char *) 36878) = $f
+ [71] chrout::petscii = home
+ [72] call chrout
+ to:main::@65
+main::@65: scope:[main] from main::@12
+ [73] chrout::petscii = yellow
+ [74] call chrout
+ to:main::@66
+main::@66: scope:[main] from main::@65
+ [75] chrout::petscii = $50
+ [76] call chrout
+ to:main::@67
+main::@67: scope:[main] from main::@66
+ [77] chrout::petscii = $54
+ [78] call chrout
+ to:main::@68
+main::@68: scope:[main] from main::@67
+ [79] chrout::petscii = $53
+ [80] call chrout
+ to:main::@69
+main::@69: scope:[main] from main::@68
+ [81] chrout::petscii = $3a
+ [82] call chrout
+ to:main::@70
+main::@70: scope:[main] from main::@69
+ [83] *((char *) 211) = $12
+ to:main::@17
+main::@17: scope:[main] from main::@70 main::@74
+ [84] j#13 = phi( main::@70/0, main::@74/j#3 )
+ [85] if(j#13<4) goto main::@18
+ to:main::@19
+main::@19: scope:[main] from main::@17
+ [86] phi()
+ [87] call write_score
+ to:main::@75
+main::@75: scope:[main] from main::@19
+ [88] chrout::petscii = home
+ [89] call chrout
+ to:main::@76
+main::@76: scope:[main] from main::@75
+ [90] chrout::petscii = green
+ [91] call chrout
+ to:main::@77
+main::@77: scope:[main] from main::@76
+ [92] *((char *) 211) = $a
+ to:main::@20
+main::@20: scope:[main] from main::@77 main::@78
+ [93] j#16 = phi( main::@77/0, main::@78/j#5 )
+ [94] if(j#16<5) goto main::@21
+ to:main::@22
+main::@22: scope:[main] from main::@20 main::@87
+ [95] n#52 = phi( main::@20/n#89, main::@87/n#20 )
+ [95] peephole#52 = phi( main::@20/$1f1f, main::@87/peephole#12 )
+ [95] z#102 = phi( main::@20/z#128, main::@87/z#25 )
+ [95] y#49 = phi( main::@20/y#114, main::@87/y#18 )
+ [95] rem8u#48 = phi( main::@20/rem8u#127, main::@87/rem8u#25 )
+ [95] tu#13 = phi( main::@20/1, main::@87/tu#1 )
+ [96] chrout::petscii = home
+ [97] call chrout
+ to:main::@79
+main::@79: scope:[main] from main::@22
+ [98] chrout::petscii = green
+ [99] call chrout
+ to:main::@80
+main::@80: scope:[main] from main::@79
+ [100] chrout::petscii = reverse_on
+ [101] call chrout
+ to:main::@81
+main::@81: scope:[main] from main::@80
+ [102] *((char *) 211) = $f
+ [103] if(tu#13<$a) goto main::@23
+ to:main::@45
+main::@45: scope:[main] from main::@81
+ [104] chrout::petscii = $31
+ [105] call chrout
+ to:main::@82
+main::@82: scope:[main] from main::@45
+ [106] chrout::petscii = $30
+ [107] call chrout
+ to:main::@24
+main::@24: scope:[main] from main::@103 main::@104 main::@105 main::@106 main::@23 main::@82 main::@84
+ [108] phi()
+ [109] call random
+ to:main::@83
+main::@83: scope:[main] from main::@24
+ [110] duck#0 = m
+ [111] call random
+ to:main::@84
+main::@84: scope:[main] from main::@83
+ [112] main::$61 = m + $1e15
+ [113] duck#1 = main::$61 + duck#0
+ [114] main::$66 = duck#1 + 1
+ [115] main::$69 = duck#1 + $16
+ [116] main::$72 = duck#1 + $17
+ [117] if(duck#1>$1fe3) goto main::@24
+ to:main::@106
+main::@106: scope:[main] from main::@84
+ [118] if(*((char *)duck#1)==brick) goto main::@24
+ to:main::@105
+main::@105: scope:[main] from main::@106
+ [119] if(*((char *)main::$66)==brick) goto main::@24
+ to:main::@104
+main::@104: scope:[main] from main::@105
+ [120] if(*((char *)main::$69)==brick) goto main::@24
+ to:main::@103
+main::@103: scope:[main] from main::@104
+ [121] if(*((char *)main::$72)==brick) goto main::@24
+ to:main::@25
+main::@25: scope:[main] from main::@103
+ [122] phi()
+ [123] call chrono_restart
+ to:main::@26
+main::@26: scope:[main] from main::@25 main::@90
+ [124] n#20 = phi( main::@90/n#14, main::@25/n#52 )
+ [124] peephole#12 = phi( main::@90/y#35, main::@25/peephole#52 )
+ [124] z#100 = phi( main::@90/z#25, main::@25/z#102 )
+ [124] y#18 = phi( main::@90/y#130, main::@25/y#49 )
+ [124] rem8u#25 = phi( main::@90/divr8u::rem#11, main::@25/rem8u#48 )
+ [124] score#19 = phi( main::@90/score#43, main::@25/score#38 )
+ [124] time#11 = phi( main::@90/time#17, main::@25/0 )
+ [125] if(time#11<$a) goto main::@27
+ to:main::@28
+main::@28: scope:[main] from main::@26
+ [126] tu#1 = ++ tu#13
+ [127] score#4 = score#19 - $a
+ [128] call write_score
+ to:main::@86
+main::@86: scope:[main] from main::@28
+ [129] *((char *) 36877) = $82
+ [130] call wait
+ to:main::@87
+main::@87: scope:[main] from main::@86
+ [131] *((char *) 36877) = 0
+ [132] main::$150 = duck#1 + c
+ [133] *((char *)main::$150) = 0
+ [134] main::$151 = duck#1
+ [135] main::$152 = main::$151 + 1+c
+ [136] *((char *)main::$152) = 0
+ [137] main::$153 = duck#1
+ [138] main::$154 = main::$153 + $16+c
+ [139] *((char *)main::$154) = 0
+ [140] main::$155 = duck#1
+ [141] main::$156 = main::$155 + $17+c
+ [142] *((char *)main::$156) = 0
+ [143] if(tu#1<$b) goto main::@22
+ to:main::@44
+main::@44: scope:[main] from main::@87
+ [144] phi()
+ [145] call clear_screen
+ to:main::@91
+main::@91: scope:[main] from main::@44
+ [146] *((char *) 36869) = $f0
+ [147] chrout::petscii = lower
+ [148] call chrout
+ to:main::@92
+main::@92: scope:[main] from main::@91
+ [149] phi()
+ [150] call textcolor
+ to:main::@93
+main::@93: scope:[main] from main::@92
+ [151] phi()
+ [152] call cputs
+ to:main::@94
+main::@94: scope:[main] from main::@93
+ [153] phi()
+ [154] call textcolor
+ to:main::@95
+main::@95: scope:[main] from main::@94
+ [155] phi()
+ [156] call cputs
+ to:main::@96
+main::@96: scope:[main] from main::@95
+ [157] phi()
+ [158] call cputs
+ to:main::@97
+main::@97: scope:[main] from main::@96
+ [159] phi()
+ [160] call textcolor
+ to:main::@98
+main::@98: scope:[main] from main::@97
+ [161] phi()
+ [162] call cputs
+ to:main::@99
+main::@99: scope:[main] from main::@98
+ [163] if(score#38<=hiscore#110) goto main::@114
+ to:main::@46
+main::@114: scope:[main] from main::@99
+ [164] hiscore#124 = hiscore#110
+ to:main::@46
+main::@46: scope:[main] from main::@114 main::@99
+ [165] hiscore#19 = phi( main::@114/hiscore#124, main::@99/score#38 )
+ [166] utoa::value#2 = hiscore#19
+ [167] call utoa
+ to:main::@100
+main::@100: scope:[main] from main::@46
+ [168] phi()
+ [169] call cputs
+ to:main::@101
+main::@101: scope:[main] from main::@100
+ [170] phi()
+ [171] call textcolor
+ to:main::@102
+main::@102: scope:[main] from main::@101
+ [172] phi()
+ [173] call cputs
+ to:main::@47
+main::@47: scope:[main] from main::@102 main::@112
+ [174] j#19 = *((char *) 197)
+ [175] if(j#19==$b) goto main::@48
+ to:main::@112
+main::@112: scope:[main] from main::@47
+ [176] if(j#19!=$1c) goto main::@47
+ to:main::@48
+main::@48: scope:[main] from main::@112 main::@47
+ [177] if(j#19==$b) goto main::@113
+ to:main::@49
+main::@49: scope:[main] from main::@48
+ asm { jsr$FD22 }
+ to:main::@return
+main::@return: scope:[main] from main::@49
+ [179] return
+ to:@return
+main::@113: scope:[main] from main::@48
+ [180] hiscore#123 = hiscore#19
+ to:main::@3
+main::@27: scope:[main] from main::@26
+ [181] phi()
+ [182] call read_chrono
+ to:main::@85
+main::@85: scope:[main] from main::@27
+ [183] m = *((char *) 37151)
+ [184] *((char *) 37154) = $7f
+ [185] n#14 = *((char *) 37152)
+ [186] *((char *) 37154) = $ff
+ [187] main::$78 = $10 & m
+ [188] if(main::$78!=0) goto main::@29
+ to:main::@37
+main::@37: scope:[main] from main::@85
+ [189] y#0 = -- y#18
+ to:main::@29
+main::@29: scope:[main] from main::@37 main::@85
+ [190] y#10 = phi( main::@37/y#0, main::@85/y#18 )
+ [191] main::$81 = $80 & n#14
+ [192] if(main::$81!=0) goto main::@30
+ to:main::@38
+main::@38: scope:[main] from main::@29
+ [193] y#1 = ++ y#10
+ to:main::@30
+main::@30: scope:[main] from main::@29 main::@38
+ [194] y#11 = phi( main::@29/y#10, main::@38/y#1 )
+ [195] main::$84 = 4 & m
+ [196] if(main::$84!=0) goto main::@31
+ to:main::@39
+main::@39: scope:[main] from main::@30
+ [197] y#2 = y#11 - $16
+ to:main::@31
+main::@31: scope:[main] from main::@30 main::@39
+ [198] y#12 = phi( main::@30/y#11, main::@39/y#2 )
+ [199] main::$88 = 8 & m
+ [200] if(main::$88!=0) goto main::@32
+ to:main::@40
+main::@40: scope:[main] from main::@31
+ [201] y#3 = y#12 + $16
+ to:main::@32
+main::@32: scope:[main] from main::@31 main::@40
+ [202] y#13 = phi( main::@31/y#12, main::@40/y#3 )
+ [203] main::$92 = $20 & m
+ [204] if(main::$92!=0) goto main::@33
+ to:main::@41
+main::@41: scope:[main] from main::@32
+ [205] *((char *) 36877) = $82
+ [206] if(peephole#12!=duck#1) goto main::@34
+ to:main::@42
+main::@42: scope:[main] from main::@41
+ [207] main::$96 = $c - div16u8u::return#2
+ [208] main::$179 = main::$96 << 2
+ [209] main::$180 = main::$179 + main::$96
+ [210] main::$97 = main::$180 << 1
+ [211] score#8 = score#19 + main::$97
+ [212] call wait
+ to:main::@35
+main::@35: scope:[main] from main::@42 main::@88
+ [213] score#81 = phi( main::@88/score#38, main::@42/score#8 )
+ [213] time#38 = phi( main::@88/div16u8u::return#2, main::@42/$a )
+ [214] *((char *) 36877) = 0
+ to:main::@33
+main::@33: scope:[main] from main::@32 main::@35
+ [215] score#43 = phi( main::@32/score#19, main::@35/score#81 )
+ [215] time#17 = phi( main::@32/div16u8u::return#2, main::@35/time#38 )
+ [215] z#48 = phi( main::@32/z#100, main::@35/z#25 )
+ [216] main::$104 = y#13 + 1
+ [217] main::$107 = y#13 + $16
+ [218] main::$110 = y#13 + $17
+ [219] if(*((char *)y#13)==brick) goto main::@36
+ to:main::@111
+main::@111: scope:[main] from main::@33
+ [220] if(*((char *)main::$104)==brick) goto main::@36
+ to:main::@110
+main::@110: scope:[main] from main::@111
+ [221] if(*((char *)main::$107)!=brick) goto main::@109
+ to:main::@36
+main::@36: scope:[main] from main::@107 main::@108 main::@109 main::@110 main::@111 main::@33 main::@43
+ [222] y#35 = phi( main::@33/peephole#12, main::@43/y#141 )
+ [223] *((char *)y#35) = $fd
+ [224] main::$125 = y#35 + c
+ [225] *((char *)main::$125) = 1
+ [226] main::$127 = y#35 + 1
+ [227] *((char *)main::$127) = $ed
+ [228] main::$128 = main::$127 + c
+ [229] *((char *)main::$128) = 1
+ [230] main::$130 = y#35 + $16
+ [231] *((char *)main::$130) = $ee
+ [232] main::$131 = main::$130 + c
+ [233] *((char *)main::$131) = 1
+ [234] main::$133 = y#35 + $17
+ [235] *((char *)main::$133) = $f0
+ [236] main::$134 = main::$133 + c
+ [237] *((char *)main::$134) = 1
+ [238] call wait
+ to:main::@89
+main::@89: scope:[main] from main::@36
+ [239] *((char *)duck#1) = 0
+ [240] main::$136 = duck#1 + c
+ [241] *((char *)main::$136) = 7
+ [242] main::$138 = duck#1 + 1
+ [243] *((char *)main::$138) = 1
+ [244] main::$139 = main::$138 + c
+ [245] *((char *)main::$139) = 7
+ [246] main::$141 = duck#1 + $16
+ [247] *((char *)main::$141) = 2
+ [248] main::$142 = main::$141 + c
+ [249] *((char *)main::$142) = 7
+ [250] main::$144 = duck#1 + $17
+ [251] *((char *)main::$144) = 3
+ [252] main::$145 = main::$144 + c
+ [253] *((char *)main::$145) = 7
+ [254] call wait
+ to:main::@90
+main::@90: scope:[main] from main::@89
+ [255] y#130 = y#35
+ to:main::@26
+main::@109: scope:[main] from main::@110
+ [256] if(*((char *)main::$110)==brick) goto main::@36
+ to:main::@108
+main::@108: scope:[main] from main::@109
+ [257] if(y#13>$1e16) goto main::@107
+ to:main::@36
+main::@107: scope:[main] from main::@108
+ [258] if(y#13>=$1fe3) goto main::@36
+ to:main::@43
+main::@43: scope:[main] from main::@107
+ [259] main::$119 = peephole#12 + c
+ [260] *((char *)main::$119) = 0
+ [261] main::$120 = main::$119 + 1
+ [262] *((char *)main::$120) = 0
+ [263] main::$122 = main::$119 + $16
+ [264] *((char *)main::$122) = 0
+ [265] main::$124 = main::$119 + $17
+ [266] *((char *)main::$124) = 0
+ [267] y#141 = y#13
+ to:main::@36
+main::@34: scope:[main] from main::@41
+ [268] score#6 = score#19 - $a
+ [269] call write_score
+ to:main::@88
+main::@88: scope:[main] from main::@34
+ [270] phi()
+ [271] call wait
+ to:main::@35
+main::@23: scope:[main] from main::@81
+ [272] main::$57 = $30 + tu#13
+ [273] chrout::petscii = main::$57
+ [274] call chrout
+ to:main::@24
+main::@21: scope:[main] from main::@20
+ [275] chrout::petscii = ducknumber[j#16]
+ [276] call chrout
+ to:main::@78
+main::@78: scope:[main] from main::@21
+ [277] j#5 = ++ j#16
+ to:main::@20
+main::@18: scope:[main] from main::@17
+ [278] chrout::petscii = chrono[j#13]
+ [279] call chrout
+ to:main::@74
+main::@74: scope:[main] from main::@18
+ [280] j#3 = ++ j#13
+ to:main::@17
+main::@14: scope:[main] from main::@71 main::@72
+ [281] j#11 = phi( main::@71/1, main::@72/j#2 )
+ [282] if(j#11<=m) goto main::@15
+ to:main::@16
+main::@16: scope:[main] from main::@14
+ [283] chrout::petscii = brick
+ [284] call chrout
+ to:main::@73
+main::@73: scope:[main] from main::@16
+ [285] main::$35 = z#28 + m
+ [286] z#9 = main::$35 + 1
+ [287] if(z#9<$1fa) goto main::@13
+ to:main::@12
+main::@15: scope:[main] from main::@14
+ [288] chrout::petscii = right
+ [289] call chrout
+ to:main::@72
+main::@72: scope:[main] from main::@15
+ [290] j#2 = ++ j#11
+ to:main::@14
+main::@7: scope:[main] from main::@6
+ [291] chrout::petscii = brick
+ [292] call chrout
+ to:main::@9
+main::@9: scope:[main] from main::@63 main::@7
+ [293] n#101 = phi( main::@7/2, main::@63/n#1 )
+ [294] if(n#101<$16) goto main::@10
+ to:main::@11
+main::@11: scope:[main] from main::@9
+ [295] chrout::petscii = brick
+ [296] call chrout
+ to:main::@64
+main::@64: scope:[main] from main::@11
+ [297] k#1 = ++ k#101
+ to:main::@6
+main::@10: scope:[main] from main::@9
+ [298] chrout::petscii = right
+ [299] call chrout
+ to:main::@63
+main::@63: scope:[main] from main::@10
+ [300] n#1 = ++ n#101
+ to:main::@9
+main::@2: scope:[main] from main::@1
+ [301] main::$3 = $1c00 + m
+ [302] *((char *)main::$3) = duck_udg[m]
+ [303] m = ++ m
+ to:main::@1
+
+void gotoxy(char x , char y)
+gotoxy: scope:[gotoxy] from clear_screen::@3 conio_c64_init::@1
+ [304] gotoxy::y#4 = phi( clear_screen::@3/0, conio_c64_init::@1/gotoxy::y#2 )
+ [305] if(gotoxy::y#4<$19+1) goto gotoxy::@3
+ to:gotoxy::@1
+gotoxy::@3: scope:[gotoxy] from gotoxy
+ [306] phi()
+ to:gotoxy::@1
+gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
+ [307] gotoxy::y#5 = phi( gotoxy::@3/gotoxy::y#4, gotoxy/0 )
+ to:gotoxy::@2
+gotoxy::@2: scope:[gotoxy] from gotoxy::@1
+ [308] conio_cursor_x = 0
+ [309] conio_cursor_y = gotoxy::y#5
+ [310] gotoxy::$7 = (unsigned int)gotoxy::y#5
+ [311] gotoxy::$8 = gotoxy::$7 << 2
+ [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
+ [313] gotoxy::line_offset#0 = gotoxy::$9 << 3
+ [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
+ [315] conio_line_text = gotoxy::$5
+ [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
+ [317] conio_line_color = gotoxy::$6
+ to:gotoxy::@return
+gotoxy::@return: scope:[gotoxy] from gotoxy::@2
+ [318] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from clear_screen::@4 main main::@10 main::@11 main::@12 main::@15 main::@16 main::@18 main::@21 main::@22 main::@23 main::@45 main::@50 main::@58 main::@59 main::@60 main::@61 main::@65 main::@66 main::@67 main::@68 main::@69 main::@7 main::@75 main::@76 main::@79 main::@8 main::@80 main::@82 main::@91 write_score::@10 write_score::@12 write_score::@3
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [320] return
+ to:@return
+
+void clear_screen(char n , char m)
+clear_screen: scope:[clear_screen] from main::@3 main::@44 main::@5
+ [321] clear_screen::n#5 = phi( main::@3/$20, main::@44/4, main::@5/4 )
+ to:clear_screen::@1
+clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@2
+ [322] z#2 = phi( clear_screen/0, clear_screen::@2/z#1 )
+ [323] if(z#2<$1fa) goto clear_screen::@2
+ to:clear_screen::@3
+clear_screen::@3: scope:[clear_screen] from clear_screen::@1
+ [324] phi()
+ [325] call gotoxy
+ to:clear_screen::@4
+clear_screen::@4: scope:[clear_screen] from clear_screen::@3
+ [326] chrout::petscii = home
+ [327] call chrout
+ to:clear_screen::@return
+clear_screen::@return: scope:[clear_screen] from clear_screen::@4
+ [328] return
+ to:@return
+clear_screen::@2: scope:[clear_screen] from clear_screen::@1
+ [329] clear_screen::$5 = $1e00 + z#2
+ [330] clear_screen::$4 = clear_screen::$5 + c
+ [331] *((char *)clear_screen::$4) = 0
+ [332] *((char *)clear_screen::$5) = clear_screen::n#5
+ [333] z#1 = ++ z#2
+ to:clear_screen::@1
+
+char textcolor(char color)
+textcolor: scope:[textcolor] from main::@101 main::@52 main::@54 main::@56 main::@92 main::@94 main::@97
+ [334] textcolor::color#7 = phi( main::@92/7, main::@94/2, main::@97/3, main::@101/1, main::@52/7, main::@54/1, main::@56/2 )
+ [335] conio_textcolor = textcolor::color#7
+ to:textcolor::@return
+textcolor::@return: scope:[textcolor] from textcolor
+ [336] return
+ to:@return
+
+void cputs(const char *s)
+cputs: scope:[cputs] from main::@100 main::@102 main::@53 main::@55 main::@57 main::@93 main::@95 main::@96 main::@98
+ [337] cputs::s#11 = phi( main::@93/game_over, main::@95/your_score, main::@96/buffer, main::@98/high_score, main::@100/buffer, main::@102/play_again, main::@53/intro, main::@55/levels, main::@57/foot )
+ to:cputs::@1
+cputs::@1: scope:[cputs] from cputs cputs::@2
+ [338] cputs::s#10 = phi( cputs/cputs::s#11, cputs::@2/cputs::s#0 )
+ [339] cputs::c#1 = *cputs::s#10
+ [340] cputs::s#0 = ++ cputs::s#10
+ [341] if(0!=cputs::c#1) goto cputs::@2
+ to:cputs::@return
+cputs::@return: scope:[cputs] from cputs::@1
+ [342] return
+ to:@return
+cputs::@2: scope:[cputs] from cputs::@1
+ [343] cputc::c#0 = cputs::c#1
+ [344] call cputc
+ to:cputs::@1
+
+void random(char k , char n)
+random: scope:[random] from main::@13 main::@24 main::@83
+ [345] random::n#4 = phi( main::@13/random::n#0, main::@24/$ff, main::@83/$ff )
+ [345] random::k#4 = phi( main::@13/random::k#0, main::@24/0, main::@83/0 )
+ to:random::@1
+random::@1: scope:[random] from random random::@1 random::@2
+ [346] m = *((char *) 37140)
+ [347] random::$3 = m
+ [348] if(mrandom::n#4) goto random::@1
+ to:random::@return
+random::@return: scope:[random] from random::@2
+ [350] return
+ to:@return
+
+void write_score()
+write_score: scope:[write_score] from main::@19 main::@28 main::@34
+ [351] score#13 = phi( main::@19/0, main::@28/score#4, main::@34/score#6 )
+ [352] if(score#13<=$fde8) goto write_score::@15
+ to:write_score::@1
+write_score::@15: scope:[write_score] from write_score
+ [353] phi()
+ to:write_score::@1
+write_score::@1: scope:[write_score] from write_score write_score::@15
+ [354] score#38 = phi( write_score::@15/score#13, write_score/0 )
+ [355] m = 0
+ to:write_score::@5
+write_score::@5: scope:[write_score] from write_score::@1 write_score::@6
+ [356] if(m<4) goto write_score::@6
+ to:write_score::@7
+write_score::@7: scope:[write_score] from write_score::@5
+ [357] utoa::value#1 = score#38
+ [358] call utoa
+ to:write_score::@11
+write_score::@11: scope:[write_score] from write_score::@7
+ [359] if(score#38<9+1) goto write_score::@2
+ to:write_score::@8
+write_score::@8: scope:[write_score] from write_score::@11
+ [360] *(points+2) = *buffer
+ [361] *(points+3) = *(buffer+1)
+ to:write_score::@2
+write_score::@2: scope:[write_score] from write_score::@11 write_score::@8
+ [362] if(score#38<$63+1) goto write_score::@3
+ to:write_score::@4
+write_score::@4: scope:[write_score] from write_score::@2
+ [363] *(points+1) = *buffer
+ [364] *(points+2) = *(buffer+1)
+ [365] *(points+3) = *(buffer+2)
+ to:write_score::@3
+write_score::@3: scope:[write_score] from write_score::@2 write_score::@4
+ [366] chrout::petscii = yellow
+ [367] call chrout
+ to:write_score::@12
+write_score::@12: scope:[write_score] from write_score::@3
+ [368] chrout::petscii = home
+ [369] call chrout
+ to:write_score::@13
+write_score::@13: scope:[write_score] from write_score::@12
+ [370] *((char *) 211) = 4
+ [371] m = 0
+ to:write_score::@9
+write_score::@9: scope:[write_score] from write_score::@13 write_score::@14
+ [372] if(m<4) goto write_score::@10
+ to:write_score::@return
+write_score::@return: scope:[write_score] from write_score::@9
+ [373] return
+ to:@return
+write_score::@10: scope:[write_score] from write_score::@9
+ [374] chrout::petscii = points[m]
+ [375] call chrout
+ to:write_score::@14
+write_score::@14: scope:[write_score] from write_score::@10
+ [376] m = ++ m
+ to:write_score::@9
+write_score::@6: scope:[write_score] from write_score::@5
+ [377] points[m] = '0'
+ [378] m = ++ m
+ to:write_score::@5
+
+void chrono_restart()
+chrono_restart: scope:[chrono_restart] from main::@25
+ asm { lda#0 ldy#0 ldx#0 jsr$ffdb }
+ to:chrono_restart::@return
+chrono_restart::@return: scope:[chrono_restart] from chrono_restart
+ [380] return
+ to:@return
+
+void wait(char n)
+wait: scope:[wait] from main::@36 main::@42 main::@86 main::@88 main::@89
+ [381] z#53 = phi( main::@36/z#48, main::@42/z#100, main::@86/z#100, main::@88/z#100, main::@89/z#25 )
+ [381] wait::n#6 = phi( main::@36/5, main::@42/$a, main::@86/$14, main::@88/$a, main::@89/5 )
+ [382] m = 0
+ to:wait::@1
+wait::@1: scope:[wait] from wait wait::@4
+ [383] z#25 = phi( wait/z#53, wait::@4/z#23 )
+ [384] if(m=utoa::digit_value#0) goto utoa::@5
+ to:utoa::@4
+utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
+ [402] utoa::buffer#15 = phi( utoa::@7/utoa::buffer#10, utoa::@6/utoa::buffer#4 )
+ [402] utoa::started#4 = phi( utoa::@7/utoa::started#2, utoa::@6/1 )
+ [402] utoa::value#7 = phi( utoa::@7/utoa::value#3, utoa::@6/utoa::value#0 )
+ [403] utoa::digit#1 = ++ utoa::digit#2
+ to:utoa::@1
+utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
+ [404] utoa_append::buffer#0 = utoa::buffer#10
+ [405] utoa_append::value#0 = utoa::value#3
+ [406] utoa_append::sub#0 = utoa::digit_value#0
+ [407] call utoa_append
+ [408] utoa_append::return#0 = utoa_append::value#2
+ to:utoa::@6
+utoa::@6: scope:[utoa] from utoa::@5
+ [409] utoa::value#0 = utoa_append::return#0
+ [410] utoa::buffer#4 = ++ utoa::buffer#10
+ to:utoa::@4
+
+void read_chrono()
+read_chrono: scope:[read_chrono] from main::@27
+ asm { jsr$ffde stal stxm }
+ [412] read_chrono::$0 = m << 8
+ [413] div16u8u::dividend#0 = read_chrono::$0 + l
+ [414] call div16u8u
+ [415] div16u8u::return#2 = div16u8u::return#0
+ to:read_chrono::@2
+read_chrono::@2: scope:[read_chrono] from read_chrono
+ [416] *((char *)$1e15+c) = 7
+ [417] *((char *) 7701) = $b9
+ [418] if(div16u8u::return#2>=$a) goto read_chrono::@return
+ to:read_chrono::@1
+read_chrono::@1: scope:[read_chrono] from read_chrono::@2
+ [419] read_chrono::$5 = $b9 - div16u8u::return#2
+ [420] *((char *) 7701) = read_chrono::$5
+ to:read_chrono::@return
+read_chrono::@return: scope:[read_chrono] from read_chrono::@1 read_chrono::@2
+ [421] return
+ to:@return
+
+void cputc(char c)
+cputc: scope:[cputc] from cputs::@2
+ [422] if(cputc::c#0=='
+') goto cputc::@1
+ to:cputc::@2
+cputc::@2: scope:[cputc] from cputc
+ [423] conio_line_text[conio_cursor_x] = cputc::c#0
+ [424] conio_line_color[conio_cursor_x] = conio_textcolor
+ [425] conio_cursor_x = ++ conio_cursor_x
+ [426] if(conio_cursor_x!=$28) goto cputc::@return
+ to:cputc::@3
+cputc::@3: scope:[cputc] from cputc::@2
+ [427] phi()
+ [428] call cputln
+ to:cputc::@return
+cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
+ [429] return
+ to:@return
+cputc::@1: scope:[cputc] from cputc
+ [430] phi()
+ [431] call cputln
+ to:cputc::@return
+
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+utoa_append: scope:[utoa_append] from utoa::@5
+ [432] phi()
+ to:utoa_append::@1
+utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
+ [433] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
+ [433] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
+ [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
+ to:utoa_append::@3
+utoa_append::@3: scope:[utoa_append] from utoa_append::@1
+ [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
+ to:utoa_append::@return
+utoa_append::@return: scope:[utoa_append] from utoa_append::@3
+ [436] return
+ to:@return
+utoa_append::@2: scope:[utoa_append] from utoa_append::@1
+ [437] utoa_append::digit#1 = ++ utoa_append::digit#2
+ [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
+ to:utoa_append::@1
+
+unsigned int div16u8u(unsigned int dividend , char divisor)
+div16u8u: scope:[div16u8u] from read_chrono
+ [439] divr8u::dividend#1 = byte1 div16u8u::dividend#0
+ [440] call divr8u
+ [441] divr8u::return#2 = divr8u::return#0
+ to:div16u8u::@1
+div16u8u::@1: scope:[div16u8u] from div16u8u
+ [442] div16u8u::quotient_hi#0 = divr8u::return#2
+ [443] divr8u::dividend#2 = byte0 div16u8u::dividend#0
+ [444] divr8u::rem#4 = divr8u::rem#11
+ [445] call divr8u
+ [446] divr8u::return#3 = divr8u::return#0
+ to:div16u8u::@2
+div16u8u::@2: scope:[div16u8u] from div16u8u::@1
+ [447] div16u8u::quotient_lo#0 = divr8u::return#3
+ [448] div16u8u::return#0 = div16u8u::quotient_hi#0 w= div16u8u::quotient_lo#0
+ to:div16u8u::@return
+div16u8u::@return: scope:[div16u8u] from div16u8u::@2
+ [449] return
+ to:@return
+
+void cputln()
+cputln: scope:[cputln] from cputc::@1 cputc::@3
+ [450] conio_line_text = conio_line_text + $28
+ [451] conio_line_color = conio_line_color + $28
+ [452] conio_cursor_x = 0
+ [453] conio_cursor_y = ++ conio_cursor_y
+ [454] call cscroll
+ to:cputln::@return
+cputln::@return: scope:[cputln] from cputln
+ [455] return
+ to:@return
+
+char divr8u(char dividend , char divisor , char rem)
+divr8u: scope:[divr8u] from div16u8u div16u8u::@1
+ [456] divr8u::dividend#5 = phi( div16u8u/divr8u::dividend#1, div16u8u::@1/divr8u::dividend#2 )
+ [456] divr8u::rem#10 = phi( div16u8u/0, div16u8u::@1/divr8u::rem#4 )
+ to:divr8u::@1
+divr8u::@1: scope:[divr8u] from divr8u divr8u::@3
+ [457] divr8u::i#2 = phi( divr8u/0, divr8u::@3/divr8u::i#1 )
+ [457] divr8u::quotient#3 = phi( divr8u/0, divr8u::@3/divr8u::return#0 )
+ [457] divr8u::dividend#3 = phi( divr8u/divr8u::dividend#5, divr8u::@3/divr8u::dividend#0 )
+ [457] divr8u::rem#5 = phi( divr8u/divr8u::rem#10, divr8u::@3/divr8u::rem#11 )
+ [458] divr8u::rem#0 = divr8u::rem#5 << 1
+ [459] divr8u::$1 = divr8u::dividend#3 & $80
+ [460] if(divr8u::$1==0) goto divr8u::@2
+ to:divr8u::@4
+divr8u::@4: scope:[divr8u] from divr8u::@1
+ [461] divr8u::rem#1 = divr8u::rem#0 | 1
+ to:divr8u::@2
+divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4
+ [462] divr8u::rem#6 = phi( divr8u::@1/divr8u::rem#0, divr8u::@4/divr8u::rem#1 )
+ [463] divr8u::dividend#0 = divr8u::dividend#3 << 1
+ [464] divr8u::quotient#1 = divr8u::quotient#3 << 1
+ [465] if(divr8u::rem#6 0
+ memset::$1 = ! memset::$0
+ if(memset::$1) goto memset::@1
+ to:memset::@2
+memset::@1: scope:[memset] from memset memset::@3
+ memset::str#2 = phi( memset/memset::str#4, memset::@3/memset::str#5 )
+ memset::return#0 = memset::str#2
+ to:memset::@return
+memset::@2: scope:[memset] from memset
+ memset::c#4 = phi( memset/memset::c#5 )
+ memset::num#3 = phi( memset/memset::num#2 )
+ memset::str#3 = phi( memset/memset::str#4 )
+ memset::$4 = (char *)memset::str#3
+ memset::end#0 = memset::$4 + memset::num#3
+ memset::dst#0 = ((char *)) memset::str#3
+ to:memset::@3
+memset::@3: scope:[memset] from memset::@2 memset::@4
+ memset::c#3 = phi( memset::@2/memset::c#4, memset::@4/memset::c#2 )
+ memset::str#5 = phi( memset::@2/memset::str#3, memset::@4/memset::str#6 )
+ memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
+ memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
+ memset::$3 = memset::dst#2 != memset::end#1
+ if(memset::$3) goto memset::@4
+ to:memset::@1
+memset::@4: scope:[memset] from memset::@3
+ memset::str#6 = phi( memset::@3/memset::str#5 )
+ memset::end#2 = phi( memset::@3/memset::end#1 )
+ memset::dst#3 = phi( memset::@3/memset::dst#2 )
+ memset::c#2 = phi( memset::@3/memset::c#3 )
+ *memset::dst#3 = memset::c#2
+ memset::dst#1 = ++ memset::dst#3
+ to:memset::@3
+memset::@return: scope:[memset] from memset::@1
+ memset::return#4 = phi( memset::@1/memset::return#0 )
+ memset::return#1 = memset::return#4
+ return
+ to:@return
+
+void utoa(unsigned int value , char *buffer , char radix)
+utoa: scope:[utoa] from main::@48 write_score::@8
+ utoa::buffer#22 = phi( main::@48/utoa::buffer#6, write_score::@8/utoa::buffer#5 )
+ utoa::value#13 = phi( main::@48/utoa::value#2, write_score::@8/utoa::value#1 )
+ utoa::radix#2 = phi( main::@48/utoa::radix#1, write_score::@8/utoa::radix#0 )
+ utoa::max_digits#0 = 0
+ utoa::digit_values#0 = (unsigned int *) 0
+ utoa::$0 = utoa::radix#2 == DECIMAL
+ if(utoa::$0) goto utoa::@1
+ to:utoa::@6
+utoa::@1: scope:[utoa] from utoa
+ utoa::buffer#18 = phi( utoa/utoa::buffer#22 )
+ utoa::value#9 = phi( utoa/utoa::value#13 )
+ utoa::max_digits#1 = 5
+ utoa::digit_values#1 = RADIX_DECIMAL_VALUES
+ to:utoa::@5
+utoa::@6: scope:[utoa] from utoa
+ utoa::value#14 = phi( utoa/utoa::value#13 )
+ utoa::buffer#17 = phi( utoa/utoa::buffer#22 )
+ utoa::radix#3 = phi( utoa/utoa::radix#2 )
+ utoa::$1 = utoa::radix#3 == HEXADECIMAL
+ if(utoa::$1) goto utoa::@2
+ to:utoa::@7
+utoa::@2: scope:[utoa] from utoa::@6
+ utoa::buffer#19 = phi( utoa::@6/utoa::buffer#17 )
+ utoa::value#10 = phi( utoa::@6/utoa::value#14 )
+ utoa::max_digits#2 = 4
+ utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
+ to:utoa::@5
+utoa::@7: scope:[utoa] from utoa::@6
+ utoa::value#15 = phi( utoa::@6/utoa::value#14 )
+ utoa::buffer#14 = phi( utoa::@6/utoa::buffer#17 )
+ utoa::radix#4 = phi( utoa::@6/utoa::radix#3 )
+ utoa::$2 = utoa::radix#4 == OCTAL
+ if(utoa::$2) goto utoa::@3
+ to:utoa::@8
+utoa::@3: scope:[utoa] from utoa::@7
+ utoa::buffer#20 = phi( utoa::@7/utoa::buffer#14 )
+ utoa::value#11 = phi( utoa::@7/utoa::value#15 )
+ utoa::max_digits#3 = 6
+ utoa::digit_values#3 = RADIX_OCTAL_VALUES
+ to:utoa::@5
+utoa::@8: scope:[utoa] from utoa::@7
+ utoa::value#16 = phi( utoa::@7/utoa::value#15 )
+ utoa::buffer#11 = phi( utoa::@7/utoa::buffer#14 )
+ utoa::radix#5 = phi( utoa::@7/utoa::radix#4 )
+ utoa::$3 = utoa::radix#5 == BINARY
+ if(utoa::$3) goto utoa::@4
+ to:utoa::@9
+utoa::@4: scope:[utoa] from utoa::@8
+ utoa::buffer#21 = phi( utoa::@8/utoa::buffer#11 )
+ utoa::value#12 = phi( utoa::@8/utoa::value#16 )
+ utoa::max_digits#4 = $10
+ utoa::digit_values#4 = RADIX_BINARY_VALUES
+ to:utoa::@5
+utoa::@9: scope:[utoa] from utoa::@8
+ utoa::buffer#7 = phi( utoa::@8/utoa::buffer#11 )
+ *utoa::buffer#7 = 'e'
+ utoa::buffer#0 = ++ utoa::buffer#7
+ *utoa::buffer#0 = 'r'
+ utoa::buffer#1 = ++ utoa::buffer#0
+ *utoa::buffer#1 = 'r'
+ utoa::buffer#2 = ++ utoa::buffer#1
+ *utoa::buffer#2 = 0
+ to:utoa::@return
+utoa::@return: scope:[utoa] from utoa::@12 utoa::@9
+ return
+ to:@return
+utoa::@5: scope:[utoa] from utoa::@1 utoa::@2 utoa::@3 utoa::@4
+ utoa::buffer#16 = phi( utoa::@1/utoa::buffer#18, utoa::@2/utoa::buffer#19, utoa::@3/utoa::buffer#20, utoa::@4/utoa::buffer#21 )
+ utoa::value#8 = phi( utoa::@1/utoa::value#9, utoa::@2/utoa::value#10, utoa::@3/utoa::value#11, utoa::@4/utoa::value#12 )
+ utoa::digit_values#8 = phi( utoa::@1/utoa::digit_values#1, utoa::@2/utoa::digit_values#2, utoa::@3/utoa::digit_values#3, utoa::@4/utoa::digit_values#4 )
+ utoa::max_digits#7 = phi( utoa::@1/utoa::max_digits#1, utoa::@2/utoa::max_digits#2, utoa::@3/utoa::max_digits#3, utoa::@4/utoa::max_digits#4 )
+ utoa::started#0 = 0
+ utoa::digit#0 = 0
+ to:utoa::@10
+utoa::@10: scope:[utoa] from utoa::@13 utoa::@5
+ utoa::buffer#12 = phi( utoa::@13/utoa::buffer#15, utoa::@5/utoa::buffer#16 )
+ utoa::started#3 = phi( utoa::@13/utoa::started#4, utoa::@5/utoa::started#0 )
+ utoa::value#6 = phi( utoa::@13/utoa::value#7, utoa::@5/utoa::value#8 )
+ utoa::digit_values#6 = phi( utoa::@13/utoa::digit_values#7, utoa::@5/utoa::digit_values#8 )
+ utoa::digit#2 = phi( utoa::@13/utoa::digit#1, utoa::@5/utoa::digit#0 )
+ utoa::max_digits#5 = phi( utoa::@13/utoa::max_digits#6, utoa::@5/utoa::max_digits#7 )
+ utoa::$4 = utoa::max_digits#5 - 1
+ utoa::$5 = utoa::digit#2 < utoa::$4
+ if(utoa::$5) goto utoa::@11
+ to:utoa::@12
+utoa::@11: scope:[utoa] from utoa::@10
+ utoa::max_digits#8 = phi( utoa::@10/utoa::max_digits#5 )
+ utoa::buffer#13 = phi( utoa::@10/utoa::buffer#12 )
+ utoa::started#2 = phi( utoa::@10/utoa::started#3 )
+ utoa::value#3 = phi( utoa::@10/utoa::value#6 )
+ utoa::digit_values#5 = phi( utoa::@10/utoa::digit_values#6 )
+ utoa::digit#3 = phi( utoa::@10/utoa::digit#2 )
+ utoa::$10 = utoa::digit#3 * SIZEOF_UNSIGNED_INT
+ utoa::digit_value#0 = utoa::digit_values#5[utoa::$10]
+ utoa::$6 = utoa::value#3 >= utoa::digit_value#0
+ utoa::$7 = utoa::started#2 || utoa::$6
+ utoa::$8 = ! utoa::$7
+ if(utoa::$8) goto utoa::@13
+ to:utoa::@14
+utoa::@12: scope:[utoa] from utoa::@10
+ utoa::buffer#8 = phi( utoa::@10/utoa::buffer#12 )
+ utoa::value#4 = phi( utoa::@10/utoa::value#6 )
+ utoa::$11 = (char)utoa::value#4
+ *utoa::buffer#8 = DIGITS[utoa::$11]
+ utoa::buffer#3 = ++ utoa::buffer#8
+ *utoa::buffer#3 = 0
+ to:utoa::@return
+utoa::@13: scope:[utoa] from utoa::@11 utoa::@15
+ utoa::buffer#15 = phi( utoa::@11/utoa::buffer#13, utoa::@15/utoa::buffer#4 )
+ utoa::started#4 = phi( utoa::@11/utoa::started#2, utoa::@15/utoa::started#1 )
+ utoa::value#7 = phi( utoa::@11/utoa::value#3, utoa::@15/utoa::value#0 )
+ utoa::digit_values#7 = phi( utoa::@11/utoa::digit_values#5, utoa::@15/utoa::digit_values#9 )
+ utoa::max_digits#6 = phi( utoa::@11/utoa::max_digits#8, utoa::@15/utoa::max_digits#9 )
+ utoa::digit#4 = phi( utoa::@11/utoa::digit#3, utoa::@15/utoa::digit#5 )
+ utoa::digit#1 = ++ utoa::digit#4
+ to:utoa::@10
+utoa::@14: scope:[utoa] from utoa::@11
+ utoa::digit_values#10 = phi( utoa::@11/utoa::digit_values#5 )
+ utoa::max_digits#10 = phi( utoa::@11/utoa::max_digits#8 )
+ utoa::digit#6 = phi( utoa::@11/utoa::digit#3 )
+ utoa::digit_value#1 = phi( utoa::@11/utoa::digit_value#0 )
+ utoa::value#5 = phi( utoa::@11/utoa::value#3 )
+ utoa::buffer#9 = phi( utoa::@11/utoa::buffer#13 )
+ utoa_append::buffer#0 = utoa::buffer#9
+ utoa_append::value#0 = utoa::value#5
+ utoa_append::sub#0 = utoa::digit_value#1
+ call utoa_append
+ utoa_append::return#0 = utoa_append::return#2
+ to:utoa::@15
+utoa::@15: scope:[utoa] from utoa::@14
+ utoa::digit_values#9 = phi( utoa::@14/utoa::digit_values#10 )
+ utoa::max_digits#9 = phi( utoa::@14/utoa::max_digits#10 )
+ utoa::digit#5 = phi( utoa::@14/utoa::digit#6 )
+ utoa::buffer#10 = phi( utoa::@14/utoa::buffer#9 )
+ utoa_append::return#3 = phi( utoa::@14/utoa_append::return#0 )
+ utoa::$9 = utoa_append::return#3
+ utoa::value#0 = utoa::$9
+ utoa::buffer#4 = ++ utoa::buffer#10
+ utoa::started#1 = 1
+ to:utoa::@13
+
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+utoa_append: scope:[utoa_append] from utoa::@14
+ utoa_append::buffer#3 = phi( utoa::@14/utoa_append::buffer#0 )
+ utoa_append::sub#3 = phi( utoa::@14/utoa_append::sub#0 )
+ utoa_append::value#5 = phi( utoa::@14/utoa_append::value#0 )
+ utoa_append::digit#0 = 0
+ to:utoa_append::@1
+utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
+ utoa_append::buffer#2 = phi( utoa_append/utoa_append::buffer#3, utoa_append::@2/utoa_append::buffer#4 )
+ utoa_append::digit#4 = phi( utoa_append/utoa_append::digit#0, utoa_append::@2/utoa_append::digit#1 )
+ utoa_append::sub#1 = phi( utoa_append/utoa_append::sub#3, utoa_append::@2/utoa_append::sub#2 )
+ utoa_append::value#2 = phi( utoa_append/utoa_append::value#5, utoa_append::@2/utoa_append::value#1 )
+ utoa_append::$0 = utoa_append::value#2 >= utoa_append::sub#1
+ if(utoa_append::$0) goto utoa_append::@2
+ to:utoa_append::@3
+utoa_append::@2: scope:[utoa_append] from utoa_append::@1
+ utoa_append::buffer#4 = phi( utoa_append::@1/utoa_append::buffer#2 )
+ utoa_append::sub#2 = phi( utoa_append::@1/utoa_append::sub#1 )
+ utoa_append::value#3 = phi( utoa_append::@1/utoa_append::value#2 )
+ utoa_append::digit#2 = phi( utoa_append::@1/utoa_append::digit#4 )
+ utoa_append::digit#1 = ++ utoa_append::digit#2
+ utoa_append::value#1 = utoa_append::value#3 - utoa_append::sub#2
+ to:utoa_append::@1
+utoa_append::@3: scope:[utoa_append] from utoa_append::@1
+ utoa_append::value#4 = phi( utoa_append::@1/utoa_append::value#2 )
+ utoa_append::buffer#1 = phi( utoa_append::@1/utoa_append::buffer#2 )
+ utoa_append::digit#3 = phi( utoa_append::@1/utoa_append::digit#4 )
+ *utoa_append::buffer#1 = DIGITS[utoa_append::digit#3]
+ utoa_append::return#1 = utoa_append::value#4
+ to:utoa_append::@return
+utoa_append::@return: scope:[utoa_append] from utoa_append::@3
+ utoa_append::return#4 = phi( utoa_append::@3/utoa_append::return#1 )
+ utoa_append::return#2 = utoa_append::return#4
+ return
+ to:@return
+
+void gotoxy(char x , char y)
+gotoxy: scope:[gotoxy] from clear_screen::@3 conio_c64_init::@1 cscroll::@2
+ gotoxy::x#6 = phi( clear_screen::@3/gotoxy::x#3, conio_c64_init::@1/gotoxy::x#2, cscroll::@2/gotoxy::x#1 )
+ gotoxy::y#4 = phi( clear_screen::@3/gotoxy::y#3, conio_c64_init::@1/gotoxy::y#2, cscroll::@2/gotoxy::y#1 )
+ gotoxy::$0 = gotoxy::y#4 > $19
+ gotoxy::$1 = ! gotoxy::$0
+ if(gotoxy::$1) goto gotoxy::@1
+ to:gotoxy::@3
+gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
+ gotoxy::y#6 = phi( gotoxy/gotoxy::y#4, gotoxy::@3/gotoxy::y#0 )
+ gotoxy::x#4 = phi( gotoxy/gotoxy::x#6, gotoxy::@3/gotoxy::x#7 )
+ gotoxy::$2 = gotoxy::x#4 >= $28
+ gotoxy::$3 = ! gotoxy::$2
+ if(gotoxy::$3) goto gotoxy::@2
+ to:gotoxy::@4
+gotoxy::@3: scope:[gotoxy] from gotoxy
+ gotoxy::x#7 = phi( gotoxy/gotoxy::x#6 )
+ gotoxy::y#0 = 0
+ to:gotoxy::@1
+gotoxy::@2: scope:[gotoxy] from gotoxy::@1 gotoxy::@4
+ gotoxy::y#5 = phi( gotoxy::@1/gotoxy::y#6, gotoxy::@4/gotoxy::y#7 )
+ gotoxy::x#5 = phi( gotoxy::@1/gotoxy::x#4, gotoxy::@4/gotoxy::x#0 )
+ conio_cursor_x = gotoxy::x#5
+ conio_cursor_y = gotoxy::y#5
+ gotoxy::$7 = (unsigned int)gotoxy::y#5
+ gotoxy::line_offset#0 = gotoxy::$7 * $28
+ gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
+ conio_line_text = gotoxy::$5
+ gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
+ conio_line_color = gotoxy::$6
+ to:gotoxy::@return
+gotoxy::@4: scope:[gotoxy] from gotoxy::@1
+ gotoxy::y#7 = phi( gotoxy::@1/gotoxy::y#6 )
+ gotoxy::x#0 = 0
+ to:gotoxy::@2
+gotoxy::@return: scope:[gotoxy] from gotoxy::@2
+ return
+ to:@return
+
+void cputc(char c)
+cputc: scope:[cputc] from cputs::@2
+ cputc::c#1 = phi( cputs::@2/cputc::c#0 )
+ cputc::$0 = cputc::c#1 == '
+'
+ if(cputc::$0) goto cputc::@1
+ to:cputc::@2
+cputc::@1: scope:[cputc] from cputc
+ call cputln
+ to:cputc::@4
+cputc::@4: scope:[cputc] from cputc::@1
+ to:cputc::@return
+cputc::@2: scope:[cputc] from cputc
+ cputc::c#2 = phi( cputc/cputc::c#1 )
+ conio_line_text[conio_cursor_x] = cputc::c#2
+ conio_line_color[conio_cursor_x] = conio_textcolor
+ conio_cursor_x = ++ conio_cursor_x
+ cputc::$1 = conio_cursor_x == $28
+ cputc::$2 = ! cputc::$1
+ if(cputc::$2) goto cputc::@return
+ to:cputc::@3
+cputc::@3: scope:[cputc] from cputc::@2
+ call cputln
+ to:cputc::@5
+cputc::@5: scope:[cputc] from cputc::@3
+ to:cputc::@return
+cputc::@return: scope:[cputc] from cputc::@2 cputc::@4 cputc::@5
+ return
+ to:@return
+
+void cputln()
+cputln: scope:[cputln] from cputc::@1 cputc::@3
+ conio_line_text = conio_line_text + $28
+ conio_line_color = conio_line_color + $28
+ conio_cursor_x = 0
+ conio_cursor_y = ++ conio_cursor_y
+ call cscroll
+ to:cputln::@1
+cputln::@1: scope:[cputln] from cputln
+ to:cputln::@return
+cputln::@return: scope:[cputln] from cputln::@1
+ return
+ to:@return
+
+void cputs(const char *s)
+cputs: scope:[cputs] from main::@103 main::@105 main::@106 main::@108 main::@110 main::@112 main::@55 main::@57 main::@59
+ cputs::s#11 = phi( main::@103/cputs::s#4, main::@105/cputs::s#5, main::@106/cputs::s#6, main::@108/cputs::s#7, main::@110/cputs::s#8, main::@112/cputs::s#9, main::@55/cputs::s#1, main::@57/cputs::s#2, main::@59/cputs::s#3 )
+ cputs::c#0 = 0
+ to:cputs::@1
+cputs::@1: scope:[cputs] from cputs cputs::@3
+ cputs::s#10 = phi( cputs/cputs::s#11, cputs::@3/cputs::s#12 )
+ cputs::c#1 = *cputs::s#10
+ cputs::$0 = cputs::c#1
+ cputs::s#0 = ++ cputs::s#10
+ cputs::$2 = 0 != cputs::$0
+ if(cputs::$2) goto cputs::@2
+ to:cputs::@return
+cputs::@2: scope:[cputs] from cputs::@1
+ cputs::s#13 = phi( cputs::@1/cputs::s#0 )
+ cputs::c#2 = phi( cputs::@1/cputs::c#1 )
+ cputc::c#0 = cputs::c#2
+ call cputc
+ to:cputs::@3
+cputs::@3: scope:[cputs] from cputs::@2
+ cputs::s#12 = phi( cputs::@2/cputs::s#13 )
+ to:cputs::@1
+cputs::@return: scope:[cputs] from cputs::@1
+ return
+ to:@return
+
+char textcolor(char color)
+textcolor: scope:[textcolor] from main::@102 main::@104 main::@107 main::@111 main::@54 main::@56 main::@58
+ textcolor::color#7 = phi( main::@102/textcolor::color#3, main::@104/textcolor::color#4, main::@107/textcolor::color#5, main::@111/textcolor::color#6, main::@54/textcolor::color#0, main::@56/textcolor::color#1, main::@58/textcolor::color#2 )
+ textcolor::old#0 = conio_textcolor
+ conio_textcolor = textcolor::color#7
+ textcolor::return#0 = textcolor::old#0
+ to:textcolor::@return
+textcolor::@return: scope:[textcolor] from textcolor
+ textcolor::return#9 = phi( textcolor/textcolor::return#0 )
+ textcolor::return#1 = textcolor::return#9
+ return
+ to:@return
+
+void cscroll()
+cscroll: scope:[cscroll] from cputln
+ cscroll::$0 = conio_cursor_y == $19
+ cscroll::$1 = ! cscroll::$0
+ if(cscroll::$1) goto cscroll::@return
+ to:cscroll::@1
+cscroll::@1: scope:[cscroll] from cscroll
+ cscroll::$7 = 0 != conio_scroll_enable
+ if(cscroll::$7) goto cscroll::@3
+ to:cscroll::@2
+cscroll::@3: scope:[cscroll] from cscroll::@1
+ memcpy::destination#0 = (void *)DEFAULT_SCREEN
+ memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
+ memcpy::num#0 = $19*$28-$28
+ call memcpy
+ memcpy::return#2 = memcpy::return#1
+ to:cscroll::@4
+cscroll::@4: scope:[cscroll] from cscroll::@3
+ memcpy::destination#1 = (void *)COLORRAM
+ memcpy::source#1 = (void *)COLORRAM+$28
+ memcpy::num#1 = $19*$28-$28
+ call memcpy
+ memcpy::return#3 = memcpy::return#1
+ to:cscroll::@5
+cscroll::@5: scope:[cscroll] from cscroll::@4
+ memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-$28
+ memset::c#0 = ' '
+ memset::num#0 = $28
+ call memset
+ memset::return#2 = memset::return#1
+ to:cscroll::@6
+cscroll::@6: scope:[cscroll] from cscroll::@5
+ memset::str#1 = (void *)COLORRAM+$19*$28-$28
+ memset::c#1 = conio_textcolor
+ memset::num#1 = $28
+ call memset
+ memset::return#3 = memset::return#1
+ to:cscroll::@7
+cscroll::@7: scope:[cscroll] from cscroll::@6
+ conio_line_text = conio_line_text - $28
+ conio_line_color = conio_line_color - $28
+ conio_cursor_y = -- conio_cursor_y
+ to:cscroll::@return
+cscroll::@2: scope:[cscroll] from cscroll::@1
+ gotoxy::x#1 = 0
+ gotoxy::y#1 = 0
+ call gotoxy
+ to:cscroll::@8
+cscroll::@8: scope:[cscroll] from cscroll::@2
+ to:cscroll::@return
+cscroll::@return: scope:[cscroll] from cscroll cscroll::@7 cscroll::@8
+ return
+ to:@return
+
+void conio_c64_init()
+conio_c64_init: scope:[conio_c64_init] from __start::__init1
+ conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
+ conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+ conio_c64_init::$1 = ! conio_c64_init::$0
+ if(conio_c64_init::$1) goto conio_c64_init::@1
+ to:conio_c64_init::@2
+conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
+ conio_c64_init::line#2 = phi( conio_c64_init/conio_c64_init::line#0, conio_c64_init::@2/conio_c64_init::line#1 )
+ gotoxy::x#2 = 0
+ gotoxy::y#2 = conio_c64_init::line#2
+ call gotoxy
+ to:conio_c64_init::@3
+conio_c64_init::@3: scope:[conio_c64_init] from conio_c64_init::@1
+ to:conio_c64_init::@return
+conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
+ conio_c64_init::line#1 = $19-1
+ to:conio_c64_init::@1
+conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@3
+ return
+ to:@return
+
+char divr8u(char dividend , char divisor , char rem)
+divr8u: scope:[divr8u] from div16u8u div16u8u::@1
+ divr8u::divisor#6 = phi( div16u8u/divr8u::divisor#0, div16u8u::@1/divr8u::divisor#1 )
+ divr8u::dividend#5 = phi( div16u8u/divr8u::dividend#1, div16u8u::@1/divr8u::dividend#2 )
+ divr8u::rem#10 = phi( div16u8u/divr8u::rem#3, div16u8u::@1/divr8u::rem#4 )
+ divr8u::quotient#0 = 0
+ divr8u::i#0 = 0
+ to:divr8u::@1
+divr8u::@1: scope:[divr8u] from divr8u divr8u::@3
+ divr8u::i#5 = phi( divr8u/divr8u::i#0, divr8u::@3/divr8u::i#1 )
+ divr8u::divisor#4 = phi( divr8u/divr8u::divisor#6, divr8u::@3/divr8u::divisor#7 )
+ divr8u::quotient#6 = phi( divr8u/divr8u::quotient#0, divr8u::@3/divr8u::quotient#8 )
+ divr8u::dividend#3 = phi( divr8u/divr8u::dividend#5, divr8u::@3/divr8u::dividend#6 )
+ divr8u::rem#5 = phi( divr8u/divr8u::rem#10, divr8u::@3/divr8u::rem#11 )
+ divr8u::$0 = divr8u::rem#5 << 1
+ divr8u::rem#0 = divr8u::$0
+ divr8u::$1 = divr8u::dividend#3 & $80
+ divr8u::$2 = divr8u::$1 != 0
+ divr8u::$3 = ! divr8u::$2
+ if(divr8u::$3) goto divr8u::@2
+ to:divr8u::@4
+divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4
+ divr8u::i#3 = phi( divr8u::@1/divr8u::i#5, divr8u::@4/divr8u::i#6 )
+ divr8u::divisor#2 = phi( divr8u::@1/divr8u::divisor#4, divr8u::@4/divr8u::divisor#5 )
+ divr8u::rem#6 = phi( divr8u::@1/divr8u::rem#0, divr8u::@4/divr8u::rem#1 )
+ divr8u::quotient#3 = phi( divr8u::@1/divr8u::quotient#6, divr8u::@4/divr8u::quotient#7 )
+ divr8u::dividend#4 = phi( divr8u::@1/divr8u::dividend#3, divr8u::@4/divr8u::dividend#7 )
+ divr8u::$5 = divr8u::dividend#4 << 1
+ divr8u::dividend#0 = divr8u::$5
+ divr8u::$6 = divr8u::quotient#3 << 1
+ divr8u::quotient#1 = divr8u::$6
+ divr8u::$7 = divr8u::rem#6 >= divr8u::divisor#2
+ divr8u::$8 = ! divr8u::$7
+ if(divr8u::$8) goto divr8u::@3
+ to:divr8u::@5
+divr8u::@4: scope:[divr8u] from divr8u::@1
+ divr8u::i#6 = phi( divr8u::@1/divr8u::i#5 )
+ divr8u::divisor#5 = phi( divr8u::@1/divr8u::divisor#4 )
+ divr8u::quotient#7 = phi( divr8u::@1/divr8u::quotient#6 )
+ divr8u::dividend#7 = phi( divr8u::@1/divr8u::dividend#3 )
+ divr8u::rem#7 = phi( divr8u::@1/divr8u::rem#0 )
+ divr8u::$4 = divr8u::rem#7 | 1
+ divr8u::rem#1 = divr8u::$4
+ to:divr8u::@2
+divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5
+ divr8u::divisor#7 = phi( divr8u::@2/divr8u::divisor#2, divr8u::@5/divr8u::divisor#3 )
+ divr8u::quotient#8 = phi( divr8u::@2/divr8u::quotient#1, divr8u::@5/divr8u::quotient#2 )
+ divr8u::dividend#6 = phi( divr8u::@2/divr8u::dividend#0, divr8u::@5/divr8u::dividend#8 )
+ divr8u::rem#11 = phi( divr8u::@2/divr8u::rem#6, divr8u::@5/divr8u::rem#2 )
+ divr8u::i#2 = phi( divr8u::@2/divr8u::i#3, divr8u::@5/divr8u::i#4 )
+ divr8u::i#1 = divr8u::i#2 + rangenext(0,7)
+ divr8u::$10 = divr8u::i#1 != rangelast(0,7)
+ if(divr8u::$10) goto divr8u::@1
+ to:divr8u::@6
+divr8u::@5: scope:[divr8u] from divr8u::@2
+ divr8u::dividend#8 = phi( divr8u::@2/divr8u::dividend#0 )
+ divr8u::i#4 = phi( divr8u::@2/divr8u::i#3 )
+ divr8u::divisor#3 = phi( divr8u::@2/divr8u::divisor#2 )
+ divr8u::rem#8 = phi( divr8u::@2/divr8u::rem#6 )
+ divr8u::quotient#4 = phi( divr8u::@2/divr8u::quotient#1 )
+ divr8u::quotient#2 = ++ divr8u::quotient#4
+ divr8u::$9 = divr8u::rem#8 - divr8u::divisor#3
+ divr8u::rem#2 = divr8u::$9
+ to:divr8u::@3
+divr8u::@6: scope:[divr8u] from divr8u::@3
+ divr8u::quotient#5 = phi( divr8u::@3/divr8u::quotient#8 )
+ divr8u::rem#9 = phi( divr8u::@3/divr8u::rem#11 )
+ rem8u#0 = divr8u::rem#9
+ divr8u::return#0 = divr8u::quotient#5
+ to:divr8u::@return
+divr8u::@return: scope:[divr8u] from divr8u::@6
+ rem8u#12 = phi( divr8u::@6/rem8u#0 )
+ divr8u::return#4 = phi( divr8u::@6/divr8u::return#0 )
+ divr8u::return#1 = divr8u::return#4
+ rem8u#1 = rem8u#12
+ return
+ to:@return
+
+unsigned int div16u8u(unsigned int dividend , char divisor)
+div16u8u: scope:[div16u8u] from read_chrono
+ rem8u#22 = phi( read_chrono/rem8u#23 )
+ div16u8u::divisor#1 = phi( read_chrono/div16u8u::divisor#0 )
+ div16u8u::dividend#1 = phi( read_chrono/div16u8u::dividend#0 )
+ div16u8u::$0 = byte1 div16u8u::dividend#1
+ divr8u::dividend#1 = div16u8u::$0
+ divr8u::divisor#0 = div16u8u::divisor#1
+ divr8u::rem#3 = 0
+ call divr8u
+ divr8u::return#2 = divr8u::return#1
+ to:div16u8u::@1
+div16u8u::@1: scope:[div16u8u] from div16u8u
+ div16u8u::divisor#2 = phi( div16u8u/div16u8u::divisor#1 )
+ div16u8u::dividend#2 = phi( div16u8u/div16u8u::dividend#1 )
+ rem8u#13 = phi( div16u8u/rem8u#1 )
+ divr8u::return#5 = phi( div16u8u/divr8u::return#2 )
+ div16u8u::quotient_hi#0 = divr8u::return#5
+ rem8u#2 = rem8u#13
+ div16u8u::$2 = byte0 div16u8u::dividend#2
+ divr8u::dividend#2 = div16u8u::$2
+ divr8u::divisor#1 = div16u8u::divisor#2
+ divr8u::rem#4 = rem8u#2
+ call divr8u
+ divr8u::return#3 = divr8u::return#1
+ to:div16u8u::@2
+div16u8u::@2: scope:[div16u8u] from div16u8u::@1
+ div16u8u::quotient_hi#1 = phi( div16u8u::@1/div16u8u::quotient_hi#0 )
+ rem8u#14 = phi( div16u8u::@1/rem8u#1 )
+ divr8u::return#6 = phi( div16u8u::@1/divr8u::return#3 )
+ div16u8u::quotient_lo#0 = divr8u::return#6
+ rem8u#3 = rem8u#14
+ div16u8u::quotient#0 = div16u8u::quotient_hi#1 w= div16u8u::quotient_lo#0
+ div16u8u::return#0 = div16u8u::quotient#0
+ to:div16u8u::@return
+div16u8u::@return: scope:[div16u8u] from div16u8u::@2
+ rem8u#15 = phi( div16u8u::@2/rem8u#3 )
+ div16u8u::return#3 = phi( div16u8u::@2/div16u8u::return#0 )
+ div16u8u::return#1 = div16u8u::return#3
+ rem8u#4 = rem8u#15
+ return
+ to:@return
+
+void clear_screen(char n , char m)
+clear_screen: scope:[clear_screen] from main::@3 main::@45 main::@5
+ clear_screen::n#5 = phi( main::@3/clear_screen::n#0, main::@45/clear_screen::n#2, main::@5/clear_screen::n#1 )
+ clear_screen::m#5 = phi( main::@3/clear_screen::m#0, main::@45/clear_screen::m#2, main::@5/clear_screen::m#1 )
+ z#0 = 0
+ to:clear_screen::@1
+clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@2
+ clear_screen::n#4 = phi( clear_screen/clear_screen::n#5, clear_screen::@2/clear_screen::n#3 )
+ clear_screen::m#4 = phi( clear_screen/clear_screen::m#5, clear_screen::@2/clear_screen::m#3 )
+ z#20 = phi( clear_screen/z#0, clear_screen::@2/z#1 )
+ clear_screen::$2 = z#20 < $1fa
+ if(clear_screen::$2) goto clear_screen::@2
+ to:clear_screen::@3
+clear_screen::@2: scope:[clear_screen] from clear_screen::@1
+ clear_screen::n#3 = phi( clear_screen::@1/clear_screen::n#4 )
+ clear_screen::m#3 = phi( clear_screen::@1/clear_screen::m#4 )
+ z#21 = phi( clear_screen::@1/z#20 )
+ clear_screen::$3 = $1e00 + z#21
+ clear_screen::$4 = clear_screen::$3 + c
+ *((char *)clear_screen::$4) = clear_screen::m#3
+ clear_screen::$5 = $1e00 + z#21
+ *((char *)clear_screen::$5) = clear_screen::n#3
+ z#1 = ++ z#21
+ to:clear_screen::@1
+clear_screen::@3: scope:[clear_screen] from clear_screen::@1
+ z#65 = phi( clear_screen::@1/z#20 )
+ gotoxy::x#3 = 0
+ gotoxy::y#3 = 0
+ call gotoxy
+ to:clear_screen::@4
+clear_screen::@4: scope:[clear_screen] from clear_screen::@3
+ z#52 = phi( clear_screen::@3/z#65 )
+ chrout::petscii = home
+ call chrout
+ to:clear_screen::@5
+clear_screen::@5: scope:[clear_screen] from clear_screen::@4
+ z#39 = phi( clear_screen::@4/z#52 )
+ to:clear_screen::@return
+clear_screen::@return: scope:[clear_screen] from clear_screen::@5
+ z#22 = phi( clear_screen::@5/z#39 )
+ z#2 = z#22
+ return
+ to:@return
+
+void random(char k , char n)
+random: scope:[random] from main::@13 main::@25 main::@90
+ random::n#4 = phi( main::@13/random::n#0, main::@25/random::n#1, main::@90/random::n#2 )
+ random::k#4 = phi( main::@13/random::k#0, main::@25/random::k#1, main::@90/random::k#2 )
+ to:random::@1
+random::@1: scope:[random] from random random::@1
+ random::n#3 = phi( random/random::n#4, random::@1/random::n#3 )
+ random::k#3 = phi( random/random::k#4, random::@1/random::k#3 )
+ m = *((char *)$9114)
+ random::$0 = m < random::k#3
+ random::$1 = m > random::n#3
+ random::$2 = random::$0 || random::$1
+ if(random::$2) goto random::@1
+ to:random::@return
+random::@return: scope:[random] from random::@1
+ return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from clear_screen::@4 main main::@10 main::@101 main::@11 main::@12 main::@16 main::@17 main::@19 main::@22 main::@23 main::@24 main::@47 main::@52 main::@61 main::@62 main::@63 main::@66 main::@7 main::@70 main::@71 main::@72 main::@73 main::@74 main::@8 main::@80 main::@81 main::@84 main::@85 main::@88 write_score::@11 write_score::@13 write_score::@3
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ return
+ to:@return
+
+void write_score()
+write_score: scope:[write_score] from main::@20 main::@29 main::@35
+ score#13 = phi( main::@20/score#29, main::@29/score#4, main::@35/score#6 )
+ write_score::$0 = score#13 > $fde8
+ write_score::$1 = ! write_score::$0
+ if(write_score::$1) goto write_score::@1
+ to:write_score::@4
+write_score::@1: scope:[write_score] from write_score write_score::@4
+ score#38 = phi( write_score/score#13, write_score::@4/score#0 )
+ m = 0
+ to:write_score::@6
+write_score::@4: scope:[write_score] from write_score
+ score#0 = 0
+ to:write_score::@1
+write_score::@6: scope:[write_score] from write_score::@1 write_score::@7
+ score#30 = phi( write_score::@1/score#38, write_score::@7/score#39 )
+ write_score::$9 = m < 4
+ if(write_score::$9) goto write_score::@7
+ to:write_score::@8
+write_score::@7: scope:[write_score] from write_score::@6
+ score#39 = phi( write_score::@6/score#30 )
+ points[m] = '0'
+ m = ++ m
+ to:write_score::@6
+write_score::@8: scope:[write_score] from write_score::@6
+ score#14 = phi( write_score::@6/score#30 )
+ utoa::value#1 = score#14
+ utoa::buffer#5 = buffer
+ utoa::radix#0 = $a
+ call utoa
+ to:write_score::@12
+write_score::@12: scope:[write_score] from write_score::@8
+ score#15 = phi( write_score::@8/score#14 )
+ write_score::$3 = score#15 > 9
+ write_score::$4 = ! write_score::$3
+ if(write_score::$4) goto write_score::@2
+ to:write_score::@9
+write_score::@2: scope:[write_score] from write_score::@12 write_score::@9
+ score#16 = phi( write_score::@12/score#15, write_score::@9/score#31 )
+ write_score::$5 = score#16 > $63
+ write_score::$6 = ! write_score::$5
+ if(write_score::$6) goto write_score::@3
+ to:write_score::@5
+write_score::@9: scope:[write_score] from write_score::@12
+ score#31 = phi( write_score::@12/score#15 )
+ points[2] = buffer[0]
+ points[3] = buffer[1]
+ to:write_score::@2
+write_score::@3: scope:[write_score] from write_score::@2 write_score::@5
+ score#59 = phi( write_score::@2/score#16, write_score::@5/score#68 )
+ chrout::petscii = yellow
+ call chrout
+ to:write_score::@13
+write_score::@13: scope:[write_score] from write_score::@3
+ score#49 = phi( write_score::@3/score#59 )
+ chrout::petscii = home
+ call chrout
+ to:write_score::@14
+write_score::@14: scope:[write_score] from write_score::@13
+ score#40 = phi( write_score::@13/score#49 )
+ *((char *)$d3) = 4
+ m = 0
+ to:write_score::@10
+write_score::@5: scope:[write_score] from write_score::@2
+ score#68 = phi( write_score::@2/score#16 )
+ points[1] = buffer[0]
+ points[2] = buffer[1]
+ points[3] = buffer[2]
+ to:write_score::@3
+write_score::@10: scope:[write_score] from write_score::@14 write_score::@15
+ score#32 = phi( write_score::@14/score#40, write_score::@15/score#41 )
+ write_score::$10 = m < 4
+ if(write_score::$10) goto write_score::@11
+ to:write_score::@return
+write_score::@11: scope:[write_score] from write_score::@10
+ score#50 = phi( write_score::@10/score#32 )
+ chrout::petscii = points[m]
+ call chrout
+ to:write_score::@15
+write_score::@15: scope:[write_score] from write_score::@11
+ score#41 = phi( write_score::@11/score#50 )
+ m = ++ m
+ to:write_score::@10
+write_score::@return: scope:[write_score] from write_score::@10
+ score#17 = phi( write_score::@10/score#32 )
+ score#1 = score#17
+ return
+ to:@return
+
+void wait(char n)
+wait: scope:[wait] from main::@37 main::@43 main::@94 main::@96 main::@99
+ z#53 = phi( main::@37/z#48, main::@43/z#47, main::@94/z#45, main::@96/z#46, main::@99/z#13 )
+ wait::n#6 = phi( main::@37/wait::n#3, main::@43/wait::n#2, main::@94/wait::n#0, main::@96/wait::n#1, main::@99/wait::n#4 )
+ m = 0
+ to:wait::@1
+wait::@1: scope:[wait] from wait wait::@5
+ z#40 = phi( wait/z#53, wait::@5/z#54 )
+ wait::n#5 = phi( wait/wait::n#6, wait::@5/wait::n#7 )
+ wait::$0 = m < wait::n#5
+ if(wait::$0) goto wait::@2
+ to:wait::@return
+wait::@2: scope:[wait] from wait::@1
+ wait::n#9 = phi( wait::@1/wait::n#5 )
+ z#3 = 0
+ to:wait::@3
+wait::@3: scope:[wait] from wait::@2 wait::@4
+ wait::n#8 = phi( wait::@2/wait::n#9, wait::@4/wait::n#10 )
+ z#23 = phi( wait::@2/z#3, wait::@4/z#4 )
+ wait::$1 = z#23 < $21c
+ if(wait::$1) goto wait::@4
+ to:wait::@5
+wait::@4: scope:[wait] from wait::@3
+ wait::n#10 = phi( wait::@3/wait::n#8 )
+ z#24 = phi( wait::@3/z#23 )
+ z#4 = ++ z#24
+ to:wait::@3
+wait::@5: scope:[wait] from wait::@3
+ z#54 = phi( wait::@3/z#23 )
+ wait::n#7 = phi( wait::@3/wait::n#8 )
+ m = ++ m
+ to:wait::@1
+wait::@return: scope:[wait] from wait::@1
+ z#25 = phi( wait::@1/z#40 )
+ z#5 = z#25
+ return
+ to:@return
+
+void chrono_restart()
+chrono_restart: scope:[chrono_restart] from main::@26
+ asm { lda#0 ldy#0 ldx#0 jsr$ffdb }
+ to:chrono_restart::@return
+chrono_restart::@return: scope:[chrono_restart] from chrono_restart
+ return
+ to:@return
+
+void read_chrono()
+read_chrono: scope:[read_chrono] from main::@28
+ rem8u#23 = phi( main::@28/rem8u#25 )
+ asm { jsr$ffde stal stxm }
+ read_chrono::$0 = m * $100
+ read_chrono::$1 = read_chrono::$0 + l
+ div16u8u::dividend#0 = read_chrono::$1
+ div16u8u::divisor#0 = $3c
+ call div16u8u
+ div16u8u::return#2 = div16u8u::return#1
+ to:read_chrono::@2
+read_chrono::@2: scope:[read_chrono] from read_chrono
+ rem8u#16 = phi( read_chrono/rem8u#4 )
+ div16u8u::return#4 = phi( read_chrono/div16u8u::return#2 )
+ read_chrono::$2 = div16u8u::return#4
+ rem8u#5 = rem8u#16
+ time#0 = read_chrono::$2
+ *((char *)$1e15+c) = 7
+ *((char *)$1e15) = $b9
+ read_chrono::$3 = time#0 < $a
+ read_chrono::$4 = ! read_chrono::$3
+ if(read_chrono::$4) goto read_chrono::@return
+ to:read_chrono::@1
+read_chrono::@1: scope:[read_chrono] from read_chrono::@2
+ rem8u#24 = phi( read_chrono::@2/rem8u#5 )
+ time#9 = phi( read_chrono::@2/time#0 )
+ read_chrono::$5 = $b9 - time#9
+ *((char *)$1e15) = read_chrono::$5
+ to:read_chrono::@return
+read_chrono::@return: scope:[read_chrono] from read_chrono::@1 read_chrono::@2
+ time#10 = phi( read_chrono::@1/time#9, read_chrono::@2/time#0 )
+ rem8u#17 = phi( read_chrono::@1/rem8u#24, read_chrono::@2/rem8u#5 )
+ rem8u#6 = rem8u#17
+ time#1 = time#10
+ return
+ to:@return
+
+void main()
+main: scope:[main] from __start::@1
+ n#121 = phi( __start::@1/n#16 )
+ hiscore#122 = phi( __start::@1/hiscore#12 )
+ y#126 = phi( __start::@1/y#25 )
+ rem8u#139 = phi( __start::@1/rem8u#27 )
+ z#82 = phi( __start::@1/z#51 )
+ *((char *)$900f) = 8
+ chrout::petscii = lock
+ call chrout
+ to:main::@52
+main::@52: scope:[main] from main
+ n#120 = phi( main/n#121 )
+ hiscore#121 = phi( main/hiscore#122 )
+ y#125 = phi( main/y#126 )
+ rem8u#138 = phi( main/rem8u#139 )
+ z#75 = phi( main/z#82 )
+ chrout::petscii = lower
+ call chrout
+ to:main::@53
+main::@53: scope:[main] from main::@52
+ n#119 = phi( main::@52/n#120 )
+ hiscore#120 = phi( main::@52/hiscore#121 )
+ y#124 = phi( main::@52/y#125 )
+ rem8u#137 = phi( main::@52/rem8u#138 )
+ z#67 = phi( main::@52/z#75 )
+ m = 0
+ to:main::@1
+main::@1: scope:[main] from main::@2 main::@53
+ n#117 = phi( main::@2/n#118, main::@53/n#119 )
+ hiscore#118 = phi( main::@2/hiscore#119, main::@53/hiscore#120 )
+ y#122 = phi( main::@2/y#123, main::@53/y#124 )
+ rem8u#135 = phi( main::@2/rem8u#136, main::@53/rem8u#137 )
+ z#55 = phi( main::@2/z#66, main::@53/z#67 )
+ main::$2 = m < $28
+ if(main::$2) goto main::@2
+ to:main::@3
+main::@2: scope:[main] from main::@1
+ n#118 = phi( main::@1/n#117 )
+ hiscore#119 = phi( main::@1/hiscore#118 )
+ y#123 = phi( main::@1/y#122 )
+ rem8u#136 = phi( main::@1/rem8u#135 )
+ z#66 = phi( main::@1/z#55 )
+ main::$3 = $1c00 + m
+ *((char *)main::$3) = duck_udg[m]
+ m = ++ m
+ to:main::@1
+main::@3: scope:[main] from main::@1 main::@50
+ n#116 = phi( main::@1/n#117, main::@50/n#17 )
+ hiscore#117 = phi( main::@1/hiscore#118, main::@50/hiscore#14 )
+ y#121 = phi( main::@1/y#122, main::@50/y#29 )
+ rem8u#134 = phi( main::@1/rem8u#135, main::@50/rem8u#29 )
+ z#41 = phi( main::@1/z#55, main::@50/z#56 )
+ clear_screen::n#0 = $20
+ clear_screen::m#0 = 0
+ call clear_screen
+ to:main::@54
+main::@54: scope:[main] from main::@3
+ n#115 = phi( main::@3/n#116 )
+ hiscore#116 = phi( main::@3/hiscore#117 )
+ y#120 = phi( main::@3/y#121 )
+ rem8u#133 = phi( main::@3/rem8u#134 )
+ z#26 = phi( main::@3/z#2 )
+ z#6 = z#26
+ textcolor::color#0 = 7
+ call textcolor
+ textcolor::return#2 = textcolor::return#1
+ to:main::@55
+main::@55: scope:[main] from main::@54
+ n#114 = phi( main::@54/n#115 )
+ hiscore#115 = phi( main::@54/hiscore#116 )
+ y#119 = phi( main::@54/y#120 )
+ rem8u#132 = phi( main::@54/rem8u#133 )
+ z#98 = phi( main::@54/z#6 )
+ cputs::s#1 = intro
+ call cputs
+ to:main::@56
+main::@56: scope:[main] from main::@55
+ n#113 = phi( main::@55/n#114 )
+ hiscore#114 = phi( main::@55/hiscore#115 )
+ y#118 = phi( main::@55/y#119 )
+ rem8u#131 = phi( main::@55/rem8u#132 )
+ z#93 = phi( main::@55/z#98 )
+ textcolor::color#1 = 1
+ call textcolor
+ textcolor::return#3 = textcolor::return#1
+ to:main::@57
+main::@57: scope:[main] from main::@56
+ n#112 = phi( main::@56/n#113 )
+ hiscore#113 = phi( main::@56/hiscore#114 )
+ y#117 = phi( main::@56/y#118 )
+ rem8u#130 = phi( main::@56/rem8u#131 )
+ z#88 = phi( main::@56/z#93 )
+ cputs::s#2 = levels
+ call cputs
+ to:main::@58
+main::@58: scope:[main] from main::@57
+ n#111 = phi( main::@57/n#112 )
+ hiscore#112 = phi( main::@57/hiscore#113 )
+ y#116 = phi( main::@57/y#117 )
+ rem8u#129 = phi( main::@57/rem8u#130 )
+ z#83 = phi( main::@57/z#88 )
+ textcolor::color#2 = 2
+ call textcolor
+ textcolor::return#4 = textcolor::return#1
+ to:main::@59
+main::@59: scope:[main] from main::@58
+ n#110 = phi( main::@58/n#111 )
+ hiscore#111 = phi( main::@58/hiscore#112 )
+ y#115 = phi( main::@58/y#116 )
+ rem8u#128 = phi( main::@58/rem8u#129 )
+ z#76 = phi( main::@58/z#83 )
+ cputs::s#3 = foot
+ call cputs
+ to:main::@60
+main::@60: scope:[main] from main::@59
+ n#109 = phi( main::@59/n#110 )
+ hiscore#110 = phi( main::@59/hiscore#111 )
+ y#114 = phi( main::@59/y#115 )
+ rem8u#127 = phi( main::@59/rem8u#128 )
+ z#68 = phi( main::@59/z#76 )
+ to:main::@4
+main::@4: scope:[main] from main::@4 main::@60
+ n#108 = phi( main::@4/n#108, main::@60/n#109 )
+ hiscore#109 = phi( main::@4/hiscore#109, main::@60/hiscore#110 )
+ y#113 = phi( main::@4/y#113, main::@60/y#114 )
+ rem8u#126 = phi( main::@4/rem8u#126, main::@60/rem8u#127 )
+ z#57 = phi( main::@4/z#57, main::@60/z#68 )
+ l = *((char *)$c5)
+ l = ++ l
+ main::$11 = l > 5
+ if(main::$11) goto main::@4
+ to:main::@5
+main::@5: scope:[main] from main::@4
+ n#107 = phi( main::@4/n#108 )
+ hiscore#106 = phi( main::@4/hiscore#109 )
+ y#110 = phi( main::@4/y#113 )
+ rem8u#123 = phi( main::@4/rem8u#126 )
+ z#42 = phi( main::@4/z#57 )
+ clear_screen::n#1 = 4
+ clear_screen::m#1 = 0
+ call clear_screen
+ to:main::@61
+main::@61: scope:[main] from main::@5
+ n#106 = phi( main::@5/n#107 )
+ hiscore#103 = phi( main::@5/hiscore#106 )
+ y#107 = phi( main::@5/y#110 )
+ rem8u#120 = phi( main::@5/rem8u#123 )
+ z#27 = phi( main::@5/z#2 )
+ z#7 = z#27
+ *((char *)$9005) = $ff
+ chrout::petscii = reverse_on
+ call chrout
+ to:main::@62
+main::@62: scope:[main] from main::@61
+ n#105 = phi( main::@61/n#106 )
+ hiscore#101 = phi( main::@61/hiscore#103 )
+ y#105 = phi( main::@61/y#107 )
+ rem8u#118 = phi( main::@61/rem8u#120 )
+ chrout::petscii = red
+ call chrout
+ to:main::@63
+main::@63: scope:[main] from main::@62
+ n#103 = phi( main::@62/n#105 )
+ hiscore#99 = phi( main::@62/hiscore#101 )
+ y#103 = phi( main::@62/y#105 )
+ rem8u#116 = phi( main::@62/rem8u#118 )
+ chrout::petscii = down
+ call chrout
+ to:main::@64
+main::@64: scope:[main] from main::@63
+ n#100 = phi( main::@63/n#103 )
+ hiscore#96 = phi( main::@63/hiscore#99 )
+ y#100 = phi( main::@63/y#103 )
+ rem8u#113 = phi( main::@63/rem8u#116 )
+ k#0 = 1
+ to:main::@6
+main::@6: scope:[main] from main::@64 main::@69
+ n#97 = phi( main::@64/n#100, main::@69/n#101 )
+ hiscore#93 = phi( main::@64/hiscore#96, main::@69/hiscore#97 )
+ y#97 = phi( main::@64/y#100, main::@69/y#101 )
+ rem8u#110 = phi( main::@64/rem8u#113, main::@69/rem8u#114 )
+ k#6 = phi( main::@64/k#0, main::@69/k#1 )
+ main::$16 = k#6 < $16
+ if(main::$16) goto main::@7
+ to:main::@8
+main::@7: scope:[main] from main::@6
+ hiscore#107 = phi( main::@6/hiscore#93 )
+ y#111 = phi( main::@6/y#97 )
+ rem8u#124 = phi( main::@6/rem8u#110 )
+ k#20 = phi( main::@6/k#6 )
+ chrout::petscii = brick
+ call chrout
+ to:main::@65
+main::@65: scope:[main] from main::@7
+ hiscore#104 = phi( main::@7/hiscore#107 )
+ y#108 = phi( main::@7/y#111 )
+ rem8u#121 = phi( main::@7/rem8u#124 )
+ k#17 = phi( main::@7/k#20 )
+ n#0 = 2
+ to:main::@9
+main::@8: scope:[main] from main::@6
+ n#95 = phi( main::@6/n#97 )
+ k#101 = phi( main::@6/k#6 )
+ hiscore#91 = phi( main::@6/hiscore#93 )
+ y#95 = phi( main::@6/y#97 )
+ rem8u#108 = phi( main::@6/rem8u#110 )
+ chrout::petscii = brick
+ call chrout
+ to:main::@66
+main::@66: scope:[main] from main::@8
+ n#92 = phi( main::@8/n#95 )
+ k#98 = phi( main::@8/k#101 )
+ hiscore#88 = phi( main::@8/hiscore#91 )
+ y#92 = phi( main::@8/y#95 )
+ rem8u#105 = phi( main::@8/rem8u#108 )
+ *((char *)$1ff9) = brick
+ *((char *)$1ff9+c) = 2
+ chrout::petscii = home
+ call chrout
+ to:main::@67
+main::@67: scope:[main] from main::@66
+ n#89 = phi( main::@66/n#92 )
+ k#95 = phi( main::@66/k#98 )
+ hiscore#85 = phi( main::@66/hiscore#88 )
+ y#89 = phi( main::@66/y#92 )
+ rem8u#102 = phi( main::@66/rem8u#105 )
+ z#8 = 1
+ main::$23 = l > 1
+ main::$24 = ! main::$23
+ if(main::$24) goto main::@12
+ to:main::@13
+main::@9: scope:[main] from main::@65 main::@68
+ hiscore#102 = phi( main::@65/hiscore#104, main::@68/hiscore#105 )
+ y#106 = phi( main::@65/y#108, main::@68/y#109 )
+ rem8u#119 = phi( main::@65/rem8u#121, main::@68/rem8u#122 )
+ k#14 = phi( main::@65/k#17, main::@68/k#18 )
+ n#7 = phi( main::@65/n#0, main::@68/n#1 )
+ main::$18 = n#7 < $16
+ if(main::$18) goto main::@10
+ to:main::@11
+main::@10: scope:[main] from main::@9
+ hiscore#108 = phi( main::@9/hiscore#102 )
+ y#112 = phi( main::@9/y#106 )
+ rem8u#125 = phi( main::@9/rem8u#119 )
+ k#21 = phi( main::@9/k#14 )
+ n#13 = phi( main::@9/n#7 )
+ chrout::petscii = right
+ call chrout
+ to:main::@68
+main::@68: scope:[main] from main::@10
+ hiscore#105 = phi( main::@10/hiscore#108 )
+ y#109 = phi( main::@10/y#112 )
+ rem8u#122 = phi( main::@10/rem8u#125 )
+ k#18 = phi( main::@10/k#21 )
+ n#8 = phi( main::@10/n#13 )
+ n#1 = ++ n#8
+ to:main::@9
+main::@11: scope:[main] from main::@9
+ n#104 = phi( main::@9/n#7 )
+ hiscore#100 = phi( main::@9/hiscore#102 )
+ y#104 = phi( main::@9/y#106 )
+ rem8u#117 = phi( main::@9/rem8u#119 )
+ k#11 = phi( main::@9/k#14 )
+ chrout::petscii = brick
+ call chrout
+ to:main::@69
+main::@69: scope:[main] from main::@11
+ n#101 = phi( main::@11/n#104 )
+ hiscore#97 = phi( main::@11/hiscore#100 )
+ y#101 = phi( main::@11/y#104 )
+ rem8u#114 = phi( main::@11/rem8u#117 )
+ k#7 = phi( main::@11/k#11 )
+ k#1 = ++ k#7
+ to:main::@6
+main::@12: scope:[main] from main::@67 main::@76 main::@78
+ n#88 = phi( main::@67/n#89, main::@76/n#90, main::@78/n#91 )
+ k#94 = phi( main::@67/k#95, main::@76/k#96, main::@78/k#97 )
+ hiscore#84 = phi( main::@67/hiscore#85, main::@76/hiscore#86, main::@78/hiscore#87 )
+ z#136 = phi( main::@67/z#8, main::@76/z#28, main::@78/z#9 )
+ y#88 = phi( main::@67/y#89, main::@76/y#90, main::@78/y#91 )
+ rem8u#101 = phi( main::@67/rem8u#102, main::@76/rem8u#103, main::@78/rem8u#104 )
+ peephole#0 = $1f1f
+ *((char *)$900e) = $f
+ score#2 = 0
+ tu#0 = 1
+ chrout::petscii = home
+ call chrout
+ to:main::@70
+main::@70: scope:[main] from main::@12
+ n#87 = phi( main::@12/n#88 )
+ k#93 = phi( main::@12/k#94 )
+ hiscore#83 = phi( main::@12/hiscore#84 )
+ peephole#85 = phi( main::@12/peephole#0 )
+ z#135 = phi( main::@12/z#136 )
+ y#87 = phi( main::@12/y#88 )
+ rem8u#100 = phi( main::@12/rem8u#101 )
+ tu#81 = phi( main::@12/tu#0 )
+ score#92 = phi( main::@12/score#2 )
+ chrout::petscii = yellow
+ call chrout
+ to:main::@71
+main::@71: scope:[main] from main::@70
+ n#86 = phi( main::@70/n#87 )
+ k#92 = phi( main::@70/k#93 )
+ hiscore#82 = phi( main::@70/hiscore#83 )
+ peephole#84 = phi( main::@70/peephole#85 )
+ z#134 = phi( main::@70/z#135 )
+ y#86 = phi( main::@70/y#87 )
+ rem8u#99 = phi( main::@70/rem8u#100 )
+ tu#79 = phi( main::@70/tu#81 )
+ score#84 = phi( main::@70/score#92 )
+ chrout::petscii = $50
+ call chrout
+ to:main::@72
+main::@72: scope:[main] from main::@71
+ n#85 = phi( main::@71/n#86 )
+ k#91 = phi( main::@71/k#92 )
+ hiscore#81 = phi( main::@71/hiscore#82 )
+ peephole#83 = phi( main::@71/peephole#84 )
+ z#133 = phi( main::@71/z#134 )
+ y#85 = phi( main::@71/y#86 )
+ rem8u#98 = phi( main::@71/rem8u#99 )
+ tu#77 = phi( main::@71/tu#79 )
+ score#77 = phi( main::@71/score#84 )
+ chrout::petscii = $54
+ call chrout
+ to:main::@73
+main::@73: scope:[main] from main::@72
+ n#84 = phi( main::@72/n#85 )
+ k#90 = phi( main::@72/k#91 )
+ hiscore#80 = phi( main::@72/hiscore#81 )
+ peephole#82 = phi( main::@72/peephole#83 )
+ z#132 = phi( main::@72/z#133 )
+ y#84 = phi( main::@72/y#85 )
+ rem8u#97 = phi( main::@72/rem8u#98 )
+ tu#75 = phi( main::@72/tu#77 )
+ score#69 = phi( main::@72/score#77 )
+ chrout::petscii = $53
+ call chrout
+ to:main::@74
+main::@74: scope:[main] from main::@73
+ n#82 = phi( main::@73/n#84 )
+ k#88 = phi( main::@73/k#90 )
+ hiscore#78 = phi( main::@73/hiscore#80 )
+ peephole#80 = phi( main::@73/peephole#82 )
+ z#130 = phi( main::@73/z#132 )
+ y#82 = phi( main::@73/y#84 )
+ rem8u#95 = phi( main::@73/rem8u#97 )
+ tu#71 = phi( main::@73/tu#75 )
+ score#60 = phi( main::@73/score#69 )
+ chrout::petscii = $3a
+ call chrout
+ to:main::@75
+main::@75: scope:[main] from main::@74
+ n#80 = phi( main::@74/n#82 )
+ k#86 = phi( main::@74/k#88 )
+ hiscore#76 = phi( main::@74/hiscore#78 )
+ peephole#78 = phi( main::@74/peephole#80 )
+ z#128 = phi( main::@74/z#130 )
+ y#80 = phi( main::@74/y#82 )
+ rem8u#93 = phi( main::@74/rem8u#95 )
+ tu#66 = phi( main::@74/tu#71 )
+ score#51 = phi( main::@74/score#60 )
+ *((char *)$d3) = $12
+ j#0 = 0
+ to:main::@18
+main::@13: scope:[main] from main::@67 main::@78
+ n#93 = phi( main::@67/n#89, main::@78/n#91 )
+ k#99 = phi( main::@67/k#95, main::@78/k#97 )
+ hiscore#89 = phi( main::@67/hiscore#85, main::@78/hiscore#87 )
+ y#93 = phi( main::@67/y#89, main::@78/y#91 )
+ rem8u#106 = phi( main::@67/rem8u#102, main::@78/rem8u#104 )
+ z#43 = phi( main::@67/z#8, main::@78/z#9 )
+ main::$25 = 7 - l
+ main::$26 = 3 * l
+ main::$27 = $1a - main::$26
+ random::k#0 = main::$25
+ random::n#0 = main::$27
+ call random
+ to:main::@76
+main::@76: scope:[main] from main::@13
+ n#90 = phi( main::@13/n#93 )
+ k#96 = phi( main::@13/k#99 )
+ hiscore#86 = phi( main::@13/hiscore#89 )
+ y#90 = phi( main::@13/y#93 )
+ rem8u#103 = phi( main::@13/rem8u#106 )
+ z#28 = phi( main::@13/z#43 )
+ main::$29 = z#28 + m
+ main::$30 = main::$29 > $1f9
+ main::$31 = ! main::$30
+ if(main::$31) goto main::@14
+ to:main::@12
+main::@14: scope:[main] from main::@76
+ n#98 = phi( main::@76/n#90 )
+ k#103 = phi( main::@76/k#96 )
+ hiscore#94 = phi( main::@76/hiscore#86 )
+ y#98 = phi( main::@76/y#90 )
+ rem8u#111 = phi( main::@76/rem8u#103 )
+ z#69 = phi( main::@76/z#28 )
+ j#1 = 1
+ to:main::@15
+main::@15: scope:[main] from main::@14 main::@77
+ n#96 = phi( main::@14/n#98, main::@77/n#99 )
+ k#102 = phi( main::@14/k#103, main::@77/k#104 )
+ hiscore#92 = phi( main::@14/hiscore#94, main::@77/hiscore#95 )
+ y#96 = phi( main::@14/y#98, main::@77/y#99 )
+ rem8u#109 = phi( main::@14/rem8u#111, main::@77/rem8u#112 )
+ z#58 = phi( main::@14/z#69, main::@77/z#70 )
+ j#11 = phi( main::@14/j#1, main::@77/j#2 )
+ main::$32 = j#11 <= m
+ if(main::$32) goto main::@16
+ to:main::@17
+main::@16: scope:[main] from main::@15
+ n#102 = phi( main::@15/n#96 )
+ k#105 = phi( main::@15/k#102 )
+ hiscore#98 = phi( main::@15/hiscore#92 )
+ y#102 = phi( main::@15/y#96 )
+ rem8u#115 = phi( main::@15/rem8u#109 )
+ z#77 = phi( main::@15/z#58 )
+ j#23 = phi( main::@15/j#11 )
+ chrout::petscii = right
+ call chrout
+ to:main::@77
+main::@77: scope:[main] from main::@16
+ n#99 = phi( main::@16/n#102 )
+ k#104 = phi( main::@16/k#105 )
+ hiscore#95 = phi( main::@16/hiscore#98 )
+ y#99 = phi( main::@16/y#102 )
+ rem8u#112 = phi( main::@16/rem8u#115 )
+ z#70 = phi( main::@16/z#77 )
+ j#12 = phi( main::@16/j#23 )
+ j#2 = ++ j#12
+ to:main::@15
+main::@17: scope:[main] from main::@15
+ n#94 = phi( main::@15/n#96 )
+ k#100 = phi( main::@15/k#102 )
+ hiscore#90 = phi( main::@15/hiscore#92 )
+ y#94 = phi( main::@15/y#96 )
+ rem8u#107 = phi( main::@15/rem8u#109 )
+ z#44 = phi( main::@15/z#58 )
+ chrout::petscii = brick
+ call chrout
+ to:main::@78
+main::@78: scope:[main] from main::@17
+ n#91 = phi( main::@17/n#94 )
+ k#97 = phi( main::@17/k#100 )
+ hiscore#87 = phi( main::@17/hiscore#90 )
+ y#91 = phi( main::@17/y#94 )
+ rem8u#104 = phi( main::@17/rem8u#107 )
+ z#29 = phi( main::@17/z#44 )
+ main::$35 = z#29 + m
+ main::$36 = main::$35 + 1
+ z#9 = main::$36
+ main::$37 = z#9 < $1fa
+ if(main::$37) goto main::@13
+ to:main::@12
+main::@18: scope:[main] from main::@75 main::@79
+ n#79 = phi( main::@75/n#80, main::@79/n#81 )
+ k#85 = phi( main::@75/k#86, main::@79/k#87 )
+ hiscore#75 = phi( main::@75/hiscore#76, main::@79/hiscore#77 )
+ peephole#77 = phi( main::@75/peephole#78, main::@79/peephole#79 )
+ z#127 = phi( main::@75/z#128, main::@79/z#129 )
+ y#79 = phi( main::@75/y#80, main::@79/y#81 )
+ rem8u#92 = phi( main::@75/rem8u#93, main::@79/rem8u#94 )
+ tu#58 = phi( main::@75/tu#66, main::@79/tu#67 )
+ score#42 = phi( main::@75/score#51, main::@79/score#52 )
+ j#13 = phi( main::@75/j#0, main::@79/j#3 )
+ main::$44 = j#13 < 4
+ if(main::$44) goto main::@19
+ to:main::@20
+main::@19: scope:[main] from main::@18
+ n#83 = phi( main::@18/n#79 )
+ k#89 = phi( main::@18/k#85 )
+ hiscore#79 = phi( main::@18/hiscore#75 )
+ peephole#81 = phi( main::@18/peephole#77 )
+ z#131 = phi( main::@18/z#127 )
+ y#83 = phi( main::@18/y#79 )
+ rem8u#96 = phi( main::@18/rem8u#92 )
+ tu#72 = phi( main::@18/tu#58 )
+ score#61 = phi( main::@18/score#42 )
+ j#14 = phi( main::@18/j#13 )
+ chrout::petscii = chrono[j#14]
+ call chrout
+ to:main::@79
+main::@79: scope:[main] from main::@19
+ n#81 = phi( main::@19/n#83 )
+ k#87 = phi( main::@19/k#89 )
+ hiscore#77 = phi( main::@19/hiscore#79 )
+ peephole#79 = phi( main::@19/peephole#81 )
+ z#129 = phi( main::@19/z#131 )
+ y#81 = phi( main::@19/y#83 )
+ rem8u#94 = phi( main::@19/rem8u#96 )
+ tu#67 = phi( main::@19/tu#72 )
+ score#52 = phi( main::@19/score#61 )
+ j#15 = phi( main::@19/j#14 )
+ j#3 = ++ j#15
+ to:main::@18
+main::@20: scope:[main] from main::@18
+ n#78 = phi( main::@18/n#79 )
+ k#84 = phi( main::@18/k#85 )
+ hiscore#74 = phi( main::@18/hiscore#75 )
+ peephole#76 = phi( main::@18/peephole#77 )
+ z#126 = phi( main::@18/z#127 )
+ y#78 = phi( main::@18/y#79 )
+ rem8u#90 = phi( main::@18/rem8u#92 )
+ tu#51 = phi( main::@18/tu#58 )
+ score#29 = phi( main::@18/score#42 )
+ call write_score
+ to:main::@80
+main::@80: scope:[main] from main::@20
+ n#77 = phi( main::@20/n#78 )
+ k#83 = phi( main::@20/k#84 )
+ hiscore#73 = phi( main::@20/hiscore#74 )
+ peephole#75 = phi( main::@20/peephole#76 )
+ z#125 = phi( main::@20/z#126 )
+ y#76 = phi( main::@20/y#78 )
+ rem8u#88 = phi( main::@20/rem8u#90 )
+ tu#43 = phi( main::@20/tu#51 )
+ score#18 = phi( main::@20/score#1 )
+ score#3 = score#18
+ chrout::petscii = home
+ call chrout
+ to:main::@81
+main::@81: scope:[main] from main::@80
+ n#75 = phi( main::@80/n#77 )
+ k#81 = phi( main::@80/k#83 )
+ hiscore#71 = phi( main::@80/hiscore#73 )
+ peephole#72 = phi( main::@80/peephole#75 )
+ z#123 = phi( main::@80/z#125 )
+ y#72 = phi( main::@80/y#76 )
+ rem8u#84 = phi( main::@80/rem8u#88 )
+ score#107 = phi( main::@80/score#3 )
+ tu#37 = phi( main::@80/tu#43 )
+ chrout::petscii = green
+ call chrout
+ to:main::@82
+main::@82: scope:[main] from main::@81
+ n#73 = phi( main::@81/n#75 )
+ k#79 = phi( main::@81/k#81 )
+ hiscore#69 = phi( main::@81/hiscore#71 )
+ peephole#69 = phi( main::@81/peephole#72 )
+ z#120 = phi( main::@81/z#123 )
+ y#68 = phi( main::@81/y#72 )
+ rem8u#80 = phi( main::@81/rem8u#84 )
+ score#105 = phi( main::@81/score#107 )
+ tu#31 = phi( main::@81/tu#37 )
+ *((char *)$d3) = $a
+ j#4 = 0
+ to:main::@21
+main::@21: scope:[main] from main::@82 main::@83
+ n#72 = phi( main::@82/n#73, main::@83/n#74 )
+ k#78 = phi( main::@82/k#79, main::@83/k#80 )
+ hiscore#68 = phi( main::@82/hiscore#69, main::@83/hiscore#70 )
+ peephole#67 = phi( main::@82/peephole#69, main::@83/peephole#70 )
+ z#118 = phi( main::@82/z#120, main::@83/z#121 )
+ y#65 = phi( main::@82/y#68, main::@83/y#69 )
+ rem8u#77 = phi( main::@82/rem8u#80, main::@83/rem8u#81 )
+ score#104 = phi( main::@82/score#105, main::@83/score#106 )
+ tu#27 = phi( main::@82/tu#31, main::@83/tu#32 )
+ j#16 = phi( main::@82/j#4, main::@83/j#5 )
+ main::$49 = j#16 < 5
+ if(main::$49) goto main::@22
+ to:main::@23
+main::@22: scope:[main] from main::@21
+ n#76 = phi( main::@21/n#72 )
+ k#82 = phi( main::@21/k#78 )
+ hiscore#72 = phi( main::@21/hiscore#68 )
+ peephole#73 = phi( main::@21/peephole#67 )
+ z#124 = phi( main::@21/z#118 )
+ y#73 = phi( main::@21/y#65 )
+ rem8u#85 = phi( main::@21/rem8u#77 )
+ score#108 = phi( main::@21/score#104 )
+ tu#38 = phi( main::@21/tu#27 )
+ j#17 = phi( main::@21/j#16 )
+ chrout::petscii = ducknumber[j#17]
+ call chrout
+ to:main::@83
+main::@83: scope:[main] from main::@22
+ n#74 = phi( main::@22/n#76 )
+ k#80 = phi( main::@22/k#82 )
+ hiscore#70 = phi( main::@22/hiscore#72 )
+ peephole#70 = phi( main::@22/peephole#73 )
+ z#121 = phi( main::@22/z#124 )
+ y#69 = phi( main::@22/y#73 )
+ rem8u#81 = phi( main::@22/rem8u#85 )
+ score#106 = phi( main::@22/score#108 )
+ tu#32 = phi( main::@22/tu#38 )
+ j#18 = phi( main::@22/j#17 )
+ j#5 = ++ j#18
+ to:main::@21
+main::@23: scope:[main] from main::@21 main::@95
+ n#71 = phi( main::@21/n#72, main::@95/n#36 )
+ k#77 = phi( main::@21/k#78, main::@95/k#38 )
+ hiscore#67 = phi( main::@21/hiscore#68, main::@95/hiscore#28 )
+ peephole#65 = phi( main::@21/peephole#67, main::@95/peephole#68 )
+ z#116 = phi( main::@21/z#118, main::@95/z#10 )
+ y#63 = phi( main::@21/y#65, main::@95/y#66 )
+ rem8u#75 = phi( main::@21/rem8u#77, main::@95/rem8u#78 )
+ score#103 = phi( main::@21/score#104, main::@95/score#101 )
+ tu#23 = phi( main::@21/tu#27, main::@95/tu#9 )
+ chrout::petscii = home
+ call chrout
+ to:main::@84
+main::@84: scope:[main] from main::@23
+ n#70 = phi( main::@23/n#71 )
+ k#75 = phi( main::@23/k#77 )
+ hiscore#65 = phi( main::@23/hiscore#67 )
+ peephole#63 = phi( main::@23/peephole#65 )
+ z#114 = phi( main::@23/z#116 )
+ y#61 = phi( main::@23/y#63 )
+ rem8u#73 = phi( main::@23/rem8u#75 )
+ score#102 = phi( main::@23/score#103 )
+ tu#18 = phi( main::@23/tu#23 )
+ chrout::petscii = green
+ call chrout
+ to:main::@85
+main::@85: scope:[main] from main::@84
+ n#69 = phi( main::@84/n#70 )
+ k#72 = phi( main::@84/k#75 )
+ hiscore#62 = phi( main::@84/hiscore#65 )
+ peephole#61 = phi( main::@84/peephole#63 )
+ z#112 = phi( main::@84/z#114 )
+ y#59 = phi( main::@84/y#61 )
+ rem8u#70 = phi( main::@84/rem8u#73 )
+ score#100 = phi( main::@84/score#102 )
+ tu#13 = phi( main::@84/tu#18 )
+ chrout::petscii = reverse_on
+ call chrout
+ to:main::@86
+main::@86: scope:[main] from main::@85
+ n#64 = phi( main::@85/n#69 )
+ k#66 = phi( main::@85/k#72 )
+ hiscore#56 = phi( main::@85/hiscore#62 )
+ peephole#58 = phi( main::@85/peephole#61 )
+ z#109 = phi( main::@85/z#112 )
+ y#56 = phi( main::@85/y#59 )
+ rem8u#63 = phi( main::@85/rem8u#70 )
+ score#97 = phi( main::@85/score#100 )
+ tu#6 = phi( main::@85/tu#13 )
+ *((char *)$d3) = $f
+ main::$54 = tu#6 < $a
+ if(main::$54) goto main::@24
+ to:main::@47
+main::@24: scope:[main] from main::@86
+ n#58 = phi( main::@86/n#64 )
+ k#60 = phi( main::@86/k#66 )
+ hiscore#50 = phi( main::@86/hiscore#56 )
+ peephole#55 = phi( main::@86/peephole#58 )
+ z#106 = phi( main::@86/z#109 )
+ y#53 = phi( main::@86/y#56 )
+ rem8u#55 = phi( main::@86/rem8u#63 )
+ score#93 = phi( main::@86/score#97 )
+ tu#7 = phi( main::@86/tu#6 )
+ main::$57 = $30 + tu#7
+ chrout::petscii = main::$57
+ call chrout
+ to:main::@87
+main::@87: scope:[main] from main::@24
+ n#52 = phi( main::@24/n#58 )
+ k#54 = phi( main::@24/k#60 )
+ hiscore#44 = phi( main::@24/hiscore#50 )
+ peephole#52 = phi( main::@24/peephole#55 )
+ z#102 = phi( main::@24/z#106 )
+ y#49 = phi( main::@24/y#53 )
+ rem8u#48 = phi( main::@24/rem8u#55 )
+ score#85 = phi( main::@24/score#93 )
+ tu#44 = phi( main::@24/tu#7 )
+ to:main::@25
+main::@47: scope:[main] from main::@86
+ n#65 = phi( main::@86/n#64 )
+ k#67 = phi( main::@86/k#66 )
+ hiscore#57 = phi( main::@86/hiscore#56 )
+ peephole#59 = phi( main::@86/peephole#58 )
+ z#110 = phi( main::@86/z#109 )
+ y#57 = phi( main::@86/y#56 )
+ rem8u#64 = phi( main::@86/rem8u#63 )
+ score#98 = phi( main::@86/score#97 )
+ tu#59 = phi( main::@86/tu#6 )
+ chrout::petscii = $31
+ call chrout
+ to:main::@88
+main::@88: scope:[main] from main::@47
+ n#59 = phi( main::@47/n#65 )
+ k#61 = phi( main::@47/k#67 )
+ hiscore#51 = phi( main::@47/hiscore#57 )
+ peephole#56 = phi( main::@47/peephole#59 )
+ z#107 = phi( main::@47/z#110 )
+ y#54 = phi( main::@47/y#57 )
+ rem8u#56 = phi( main::@47/rem8u#64 )
+ score#94 = phi( main::@47/score#98 )
+ tu#52 = phi( main::@47/tu#59 )
+ chrout::petscii = $30
+ call chrout
+ to:main::@89
+main::@89: scope:[main] from main::@88
+ n#53 = phi( main::@88/n#59 )
+ k#55 = phi( main::@88/k#61 )
+ hiscore#45 = phi( main::@88/hiscore#51 )
+ peephole#53 = phi( main::@88/peephole#56 )
+ z#103 = phi( main::@88/z#107 )
+ y#50 = phi( main::@88/y#54 )
+ rem8u#49 = phi( main::@88/rem8u#56 )
+ score#86 = phi( main::@88/score#94 )
+ tu#45 = phi( main::@88/tu#52 )
+ to:main::@25
+main::@25: scope:[main] from main::@87 main::@89 main::@91
+ n#49 = phi( main::@87/n#52, main::@89/n#53, main::@91/n#44 )
+ k#51 = phi( main::@87/k#54, main::@89/k#55, main::@91/k#46 )
+ hiscore#41 = phi( main::@87/hiscore#44, main::@89/hiscore#45, main::@91/hiscore#36 )
+ peephole#50 = phi( main::@87/peephole#52, main::@89/peephole#53, main::@91/peephole#46 )
+ z#99 = phi( main::@87/z#102, main::@89/z#103, main::@91/z#89 )
+ y#47 = phi( main::@87/y#49, main::@89/y#50, main::@91/y#43 )
+ rem8u#44 = phi( main::@87/rem8u#48, main::@89/rem8u#49, main::@91/rem8u#37 )
+ score#78 = phi( main::@87/score#85, main::@89/score#86, main::@91/score#62 )
+ tu#39 = phi( main::@87/tu#44, main::@89/tu#45, main::@91/tu#28 )
+ random::k#1 = 0
+ random::n#1 = $ff
+ call random
+ to:main::@90
+main::@90: scope:[main] from main::@25
+ n#46 = phi( main::@25/n#49 )
+ k#48 = phi( main::@25/k#51 )
+ hiscore#38 = phi( main::@25/hiscore#41 )
+ peephole#48 = phi( main::@25/peephole#50 )
+ z#94 = phi( main::@25/z#99 )
+ y#45 = phi( main::@25/y#47 )
+ rem8u#40 = phi( main::@25/rem8u#44 )
+ score#70 = phi( main::@25/score#78 )
+ tu#33 = phi( main::@25/tu#39 )
+ duck#0 = m
+ random::k#2 = 0
+ random::n#2 = $ff
+ call random
+ to:main::@91
+main::@91: scope:[main] from main::@90
+ n#44 = phi( main::@90/n#46 )
+ k#46 = phi( main::@90/k#48 )
+ hiscore#36 = phi( main::@90/hiscore#38 )
+ peephole#46 = phi( main::@90/peephole#48 )
+ z#89 = phi( main::@90/z#94 )
+ y#43 = phi( main::@90/y#45 )
+ rem8u#37 = phi( main::@90/rem8u#40 )
+ score#62 = phi( main::@90/score#70 )
+ tu#28 = phi( main::@90/tu#33 )
+ duck#6 = phi( main::@90/duck#0 )
+ main::$61 = m + $1e15
+ main::$62 = main::$61 + duck#6
+ duck#1 = main::$62
+ main::$63 = duck#1 > $1fe3
+ main::$64 = *((char *)duck#1) == brick
+ main::$65 = main::$63 || main::$64
+ main::$66 = duck#1 + 1
+ main::$67 = *((char *)main::$66) == brick
+ main::$68 = main::$65 || main::$67
+ main::$69 = duck#1 + $16
+ main::$70 = *((char *)main::$69) == brick
+ main::$71 = main::$68 || main::$70
+ main::$72 = duck#1 + $17
+ main::$73 = *((char *)main::$72) == brick
+ main::$74 = main::$71 || main::$73
+ if(main::$74) goto main::@25
+ to:main::@26
+main::@26: scope:[main] from main::@91
+ n#42 = phi( main::@91/n#44 )
+ k#44 = phi( main::@91/k#46 )
+ hiscore#34 = phi( main::@91/hiscore#36 )
+ peephole#42 = phi( main::@91/peephole#46 )
+ duck#37 = phi( main::@91/duck#1 )
+ z#84 = phi( main::@91/z#89 )
+ y#40 = phi( main::@91/y#43 )
+ rem8u#34 = phi( main::@91/rem8u#37 )
+ score#53 = phi( main::@91/score#62 )
+ tu#24 = phi( main::@91/tu#28 )
+ time#2 = 0
+ call chrono_restart
+ to:main::@92
+main::@92: scope:[main] from main::@26
+ n#41 = phi( main::@26/n#42 )
+ k#43 = phi( main::@26/k#44 )
+ hiscore#33 = phi( main::@26/hiscore#34 )
+ peephole#40 = phi( main::@26/peephole#42 )
+ duck#31 = phi( main::@26/duck#37 )
+ z#78 = phi( main::@26/z#84 )
+ y#36 = phi( main::@26/y#40 )
+ rem8u#32 = phi( main::@26/rem8u#34 )
+ score#44 = phi( main::@26/score#53 )
+ tu#20 = phi( main::@26/tu#24 )
+ time#18 = phi( main::@26/time#2 )
+ to:main::@27
+main::@27: scope:[main] from main::@100 main::@92
+ n#39 = phi( main::@100/n#40, main::@92/n#41 )
+ k#41 = phi( main::@100/k#42, main::@92/k#43 )
+ hiscore#31 = phi( main::@100/hiscore#32, main::@92/hiscore#33 )
+ peephole#37 = phi( main::@100/peephole#39, main::@92/peephole#40 )
+ duck#25 = phi( main::@100/duck#30, main::@92/duck#31 )
+ z#71 = phi( main::@100/z#14, main::@92/z#78 )
+ y#31 = phi( main::@100/y#35, main::@92/y#36 )
+ rem8u#28 = phi( main::@100/rem8u#31, main::@92/rem8u#32 )
+ score#33 = phi( main::@100/score#43, main::@92/score#44 )
+ tu#14 = phi( main::@100/tu#19, main::@92/tu#20 )
+ time#11 = phi( main::@100/time#17, main::@92/time#18 )
+ main::$76 = time#11 < $a
+ if(main::$76) goto main::@28
+ to:main::@29
+main::@28: scope:[main] from main::@27
+ k#76 = phi( main::@27/k#41 )
+ hiscore#66 = phi( main::@27/hiscore#31 )
+ tu#73 = phi( main::@27/tu#14 )
+ z#100 = phi( main::@27/z#71 )
+ score#87 = phi( main::@27/score#33 )
+ duck#43 = phi( main::@27/duck#25 )
+ peephole#35 = phi( main::@27/peephole#37 )
+ y#26 = phi( main::@27/y#31 )
+ time#19 = phi( main::@27/time#11 )
+ rem8u#25 = phi( main::@27/rem8u#28 )
+ call read_chrono
+ to:main::@93
+main::@93: scope:[main] from main::@28
+ k#74 = phi( main::@28/k#76 )
+ hiscore#64 = phi( main::@28/hiscore#66 )
+ tu#69 = phi( main::@28/tu#73 )
+ z#96 = phi( main::@28/z#100 )
+ score#80 = phi( main::@28/score#87 )
+ duck#39 = phi( main::@28/duck#43 )
+ peephole#32 = phi( main::@28/peephole#35 )
+ y#18 = phi( main::@28/y#26 )
+ time#12 = phi( main::@28/time#1 )
+ rem8u#18 = phi( main::@28/rem8u#6 )
+ rem8u#7 = rem8u#18
+ time#3 = time#12
+ m = *((char *)$911f)
+ *((char *)$9122) = $7f
+ n#2 = *((char *)$9120)
+ *((char *)$9122) = $ff
+ main::$78 = $10 & m
+ main::$79 = main::$78 == 0
+ main::$80 = ! main::$79
+ if(main::$80) goto main::@30
+ to:main::@38
+main::@29: scope:[main] from main::@27
+ time#60 = phi( main::@27/time#11 )
+ n#38 = phi( main::@27/n#39 )
+ k#40 = phi( main::@27/k#41 )
+ peephole#74 = phi( main::@27/peephole#37 )
+ y#74 = phi( main::@27/y#31 )
+ rem8u#86 = phi( main::@27/rem8u#28 )
+ hiscore#30 = phi( main::@27/hiscore#31 )
+ duck#18 = phi( main::@27/duck#25 )
+ z#59 = phi( main::@27/z#71 )
+ score#19 = phi( main::@27/score#33 )
+ tu#8 = phi( main::@27/tu#14 )
+ tu#1 = ++ tu#8
+ main::$147 = score#19 - $a
+ score#4 = main::$147
+ call write_score
+ to:main::@94
+main::@94: scope:[main] from main::@29
+ time#59 = phi( main::@29/time#60 )
+ n#37 = phi( main::@29/n#38 )
+ k#39 = phi( main::@29/k#40 )
+ peephole#71 = phi( main::@29/peephole#74 )
+ y#70 = phi( main::@29/y#74 )
+ rem8u#82 = phi( main::@29/rem8u#86 )
+ hiscore#29 = phi( main::@29/hiscore#30 )
+ tu#15 = phi( main::@29/tu#1 )
+ duck#13 = phi( main::@29/duck#18 )
+ z#45 = phi( main::@29/z#59 )
+ score#20 = phi( main::@29/score#1 )
+ score#5 = score#20
+ *((char *)$900d) = $82
+ wait::n#0 = $14
+ call wait
+ to:main::@95
+main::@95: scope:[main] from main::@94
+ time#58 = phi( main::@94/time#59 )
+ n#36 = phi( main::@94/n#37 )
+ k#38 = phi( main::@94/k#39 )
+ peephole#68 = phi( main::@94/peephole#71 )
+ y#66 = phi( main::@94/y#70 )
+ rem8u#78 = phi( main::@94/rem8u#82 )
+ hiscore#28 = phi( main::@94/hiscore#29 )
+ score#101 = phi( main::@94/score#5 )
+ tu#9 = phi( main::@94/tu#15 )
+ duck#7 = phi( main::@94/duck#13 )
+ z#30 = phi( main::@94/z#5 )
+ z#10 = z#30
+ *((char *)$900d) = 0
+ main::$150 = duck#7 + c
+ *((char *)main::$150) = 0
+ main::$151 = duck#7 + 1
+ main::$152 = main::$151 + c
+ *((char *)main::$152) = 0
+ main::$153 = duck#7 + $16
+ main::$154 = main::$153 + c
+ *((char *)main::$154) = 0
+ main::$155 = duck#7 + $17
+ main::$156 = main::$155 + c
+ *((char *)main::$156) = 0
+ main::$157 = tu#9 < $b
+ if(main::$157) goto main::@23
+ to:main::@45
+main::@30: scope:[main] from main::@38 main::@93
+ k#68 = phi( main::@38/k#73, main::@93/k#74 )
+ hiscore#58 = phi( main::@38/hiscore#63, main::@93/hiscore#64 )
+ rem8u#65 = phi( main::@38/rem8u#71, main::@93/rem8u#7 )
+ tu#60 = phi( main::@38/tu#68, main::@93/tu#69 )
+ z#90 = phi( main::@38/z#95, main::@93/z#96 )
+ time#36 = phi( main::@38/time#40, main::@93/time#3 )
+ score#71 = phi( main::@38/score#79, main::@93/score#80 )
+ duck#32 = phi( main::@38/duck#38, main::@93/duck#39 )
+ peephole#26 = phi( main::@38/peephole#31, main::@93/peephole#32 )
+ y#19 = phi( main::@38/y#0, main::@93/y#18 )
+ n#9 = phi( main::@38/n#14, main::@93/n#2 )
+ main::$81 = $80 & n#9
+ main::$82 = main::$81 == 0
+ main::$83 = ! main::$82
+ if(main::$83) goto main::@31
+ to:main::@39
+main::@38: scope:[main] from main::@93
+ k#73 = phi( main::@93/k#74 )
+ hiscore#63 = phi( main::@93/hiscore#64 )
+ rem8u#71 = phi( main::@93/rem8u#7 )
+ tu#68 = phi( main::@93/tu#69 )
+ z#95 = phi( main::@93/z#96 )
+ time#40 = phi( main::@93/time#3 )
+ score#79 = phi( main::@93/score#80 )
+ duck#38 = phi( main::@93/duck#39 )
+ peephole#31 = phi( main::@93/peephole#32 )
+ n#14 = phi( main::@93/n#2 )
+ y#9 = phi( main::@93/y#18 )
+ y#0 = -- y#9
+ to:main::@30
+main::@31: scope:[main] from main::@30 main::@39
+ n#60 = phi( main::@30/n#9, main::@39/n#66 )
+ k#62 = phi( main::@30/k#68, main::@39/k#69 )
+ hiscore#52 = phi( main::@30/hiscore#58, main::@39/hiscore#59 )
+ rem8u#57 = phi( main::@30/rem8u#65, main::@39/rem8u#66 )
+ tu#53 = phi( main::@30/tu#60, main::@39/tu#61 )
+ z#85 = phi( main::@30/z#90, main::@39/z#91 )
+ time#31 = phi( main::@30/time#36, main::@39/time#37 )
+ score#63 = phi( main::@30/score#71, main::@39/score#72 )
+ duck#26 = phi( main::@30/duck#32, main::@39/duck#33 )
+ peephole#21 = phi( main::@30/peephole#26, main::@39/peephole#27 )
+ y#20 = phi( main::@30/y#19, main::@39/y#1 )
+ main::$84 = 4 & m
+ main::$85 = main::$84 == 0
+ main::$86 = ! main::$85
+ if(main::$86) goto main::@32
+ to:main::@40
+main::@39: scope:[main] from main::@30
+ n#66 = phi( main::@30/n#9 )
+ k#69 = phi( main::@30/k#68 )
+ hiscore#59 = phi( main::@30/hiscore#58 )
+ rem8u#66 = phi( main::@30/rem8u#65 )
+ tu#61 = phi( main::@30/tu#60 )
+ z#91 = phi( main::@30/z#90 )
+ time#37 = phi( main::@30/time#36 )
+ score#72 = phi( main::@30/score#71 )
+ duck#33 = phi( main::@30/duck#32 )
+ peephole#27 = phi( main::@30/peephole#26 )
+ y#10 = phi( main::@30/y#19 )
+ y#1 = ++ y#10
+ to:main::@31
+main::@32: scope:[main] from main::@31 main::@40
+ n#54 = phi( main::@31/n#60, main::@40/n#61 )
+ k#56 = phi( main::@31/k#62, main::@40/k#63 )
+ hiscore#46 = phi( main::@31/hiscore#52, main::@40/hiscore#53 )
+ rem8u#50 = phi( main::@31/rem8u#57, main::@40/rem8u#58 )
+ tu#46 = phi( main::@31/tu#53, main::@40/tu#54 )
+ z#79 = phi( main::@31/z#85, main::@40/z#86 )
+ time#27 = phi( main::@31/time#31, main::@40/time#32 )
+ score#54 = phi( main::@31/score#63, main::@40/score#64 )
+ duck#19 = phi( main::@31/duck#26, main::@40/duck#27 )
+ peephole#16 = phi( main::@31/peephole#21, main::@40/peephole#22 )
+ y#21 = phi( main::@31/y#20, main::@40/y#2 )
+ main::$88 = 8 & m
+ main::$89 = main::$88 == 0
+ main::$90 = ! main::$89
+ if(main::$90) goto main::@33
+ to:main::@41
+main::@40: scope:[main] from main::@31
+ n#61 = phi( main::@31/n#60 )
+ k#63 = phi( main::@31/k#62 )
+ hiscore#53 = phi( main::@31/hiscore#52 )
+ rem8u#58 = phi( main::@31/rem8u#57 )
+ tu#54 = phi( main::@31/tu#53 )
+ z#86 = phi( main::@31/z#85 )
+ time#32 = phi( main::@31/time#31 )
+ score#64 = phi( main::@31/score#63 )
+ duck#27 = phi( main::@31/duck#26 )
+ peephole#22 = phi( main::@31/peephole#21 )
+ y#11 = phi( main::@31/y#20 )
+ main::$87 = y#11 - $16
+ y#2 = main::$87
+ to:main::@32
+main::@33: scope:[main] from main::@32 main::@41
+ n#50 = phi( main::@32/n#54, main::@41/n#55 )
+ k#52 = phi( main::@32/k#56, main::@41/k#57 )
+ hiscore#42 = phi( main::@32/hiscore#46, main::@41/hiscore#47 )
+ rem8u#45 = phi( main::@32/rem8u#50, main::@41/rem8u#51 )
+ tu#40 = phi( main::@32/tu#46, main::@41/tu#47 )
+ z#72 = phi( main::@32/z#79, main::@41/z#80 )
+ time#23 = phi( main::@32/time#27, main::@41/time#28 )
+ score#45 = phi( main::@32/score#54, main::@41/score#55 )
+ duck#14 = phi( main::@32/duck#19, main::@41/duck#20 )
+ peephole#12 = phi( main::@32/peephole#16, main::@41/peephole#17 )
+ y#22 = phi( main::@32/y#21, main::@41/y#3 )
+ main::$92 = $20 & m
+ main::$93 = main::$92 == 0
+ main::$94 = ! main::$93
+ if(main::$94) goto main::@34
+ to:main::@42
+main::@41: scope:[main] from main::@32
+ n#55 = phi( main::@32/n#54 )
+ k#57 = phi( main::@32/k#56 )
+ hiscore#47 = phi( main::@32/hiscore#46 )
+ rem8u#51 = phi( main::@32/rem8u#50 )
+ tu#47 = phi( main::@32/tu#46 )
+ z#80 = phi( main::@32/z#79 )
+ time#28 = phi( main::@32/time#27 )
+ score#55 = phi( main::@32/score#54 )
+ duck#20 = phi( main::@32/duck#19 )
+ peephole#17 = phi( main::@32/peephole#16 )
+ y#12 = phi( main::@32/y#21 )
+ main::$91 = y#12 + $16
+ y#3 = main::$91
+ to:main::@33
+main::@34: scope:[main] from main::@33 main::@36
+ n#47 = phi( main::@33/n#50, main::@36/n#51 )
+ k#49 = phi( main::@33/k#52, main::@36/k#53 )
+ hiscore#39 = phi( main::@33/hiscore#42, main::@36/hiscore#43 )
+ rem8u#41 = phi( main::@33/rem8u#45, main::@36/rem8u#46 )
+ score#73 = phi( main::@33/score#45, main::@36/score#81 )
+ tu#34 = phi( main::@33/tu#40, main::@36/tu#41 )
+ time#33 = phi( main::@33/time#23, main::@36/time#38 )
+ duck#21 = phi( main::@33/duck#14, main::@36/duck#28 )
+ z#62 = phi( main::@33/z#72, main::@36/z#73 )
+ peephole#13 = phi( main::@33/peephole#12, main::@36/peephole#18 )
+ y#13 = phi( main::@33/y#22, main::@36/y#23 )
+ main::$103 = *((char *)y#13) != brick
+ main::$104 = y#13 + 1
+ main::$105 = *((char *)main::$104) != brick
+ main::$106 = main::$103 && main::$105
+ main::$107 = y#13 + $16
+ main::$108 = *((char *)main::$107) != brick
+ main::$109 = main::$106 && main::$108
+ main::$110 = y#13 + $17
+ main::$111 = *((char *)main::$110) != brick
+ main::$112 = main::$109 && main::$111
+ main::$113 = y#13 > $1e16
+ main::$114 = main::$112 && main::$113
+ main::$115 = y#13 < $1fe3
+ main::$116 = main::$114 && main::$115
+ main::$117 = ! main::$116
+ if(main::$117) goto main::@37
+ to:main::@44
+main::@42: scope:[main] from main::@33
+ n#68 = phi( main::@33/n#50 )
+ k#71 = phi( main::@33/k#52 )
+ hiscore#61 = phi( main::@33/hiscore#42 )
+ rem8u#68 = phi( main::@33/rem8u#45 )
+ tu#63 = phi( main::@33/tu#40 )
+ y#38 = phi( main::@33/y#22 )
+ z#61 = phi( main::@33/z#72 )
+ time#20 = phi( main::@33/time#23 )
+ score#34 = phi( main::@33/score#45 )
+ duck#8 = phi( main::@33/duck#14 )
+ peephole#6 = phi( main::@33/peephole#12 )
+ *((char *)$900d) = $82
+ main::$95 = peephole#6 != duck#8
+ if(main::$95) goto main::@35
+ to:main::@43
+main::@35: scope:[main] from main::@42
+ n#67 = phi( main::@42/n#68 )
+ k#70 = phi( main::@42/k#71 )
+ hiscore#60 = phi( main::@42/hiscore#61 )
+ rem8u#67 = phi( main::@42/rem8u#68 )
+ tu#62 = phi( main::@42/tu#63 )
+ time#45 = phi( main::@42/time#20 )
+ duck#44 = phi( main::@42/duck#8 )
+ peephole#33 = phi( main::@42/peephole#6 )
+ y#37 = phi( main::@42/y#38 )
+ z#60 = phi( main::@42/z#61 )
+ score#21 = phi( main::@42/score#34 )
+ main::$100 = score#21 - $a
+ score#6 = main::$100
+ call write_score
+ to:main::@96
+main::@96: scope:[main] from main::@35
+ n#62 = phi( main::@35/n#67 )
+ k#64 = phi( main::@35/k#70 )
+ hiscore#54 = phi( main::@35/hiscore#60 )
+ rem8u#59 = phi( main::@35/rem8u#67 )
+ tu#55 = phi( main::@35/tu#62 )
+ time#43 = phi( main::@35/time#45 )
+ duck#40 = phi( main::@35/duck#44 )
+ peephole#28 = phi( main::@35/peephole#33 )
+ y#32 = phi( main::@35/y#37 )
+ z#46 = phi( main::@35/z#60 )
+ score#22 = phi( main::@35/score#1 )
+ score#7 = score#22
+ wait::n#1 = $a
+ call wait
+ to:main::@97
+main::@97: scope:[main] from main::@96
+ n#56 = phi( main::@96/n#62 )
+ k#58 = phi( main::@96/k#64 )
+ hiscore#48 = phi( main::@96/hiscore#54 )
+ rem8u#52 = phi( main::@96/rem8u#59 )
+ score#88 = phi( main::@96/score#7 )
+ tu#48 = phi( main::@96/tu#55 )
+ time#41 = phi( main::@96/time#43 )
+ duck#34 = phi( main::@96/duck#40 )
+ peephole#23 = phi( main::@96/peephole#28 )
+ y#27 = phi( main::@96/y#32 )
+ z#31 = phi( main::@96/z#5 )
+ z#11 = z#31
+ to:main::@36
+main::@43: scope:[main] from main::@42
+ n#63 = phi( main::@42/n#68 )
+ k#65 = phi( main::@42/k#71 )
+ hiscore#55 = phi( main::@42/hiscore#61 )
+ rem8u#60 = phi( main::@42/rem8u#68 )
+ tu#56 = phi( main::@42/tu#63 )
+ duck#41 = phi( main::@42/duck#8 )
+ peephole#29 = phi( main::@42/peephole#6 )
+ y#33 = phi( main::@42/y#38 )
+ z#47 = phi( main::@42/z#61 )
+ score#23 = phi( main::@42/score#34 )
+ time#13 = phi( main::@42/time#20 )
+ main::$96 = $c - time#13
+ main::$97 = main::$96 * $a
+ main::$98 = score#23 + main::$97
+ score#8 = main::$98
+ wait::n#2 = $a
+ call wait
+ to:main::@98
+main::@98: scope:[main] from main::@43
+ n#57 = phi( main::@43/n#63 )
+ k#59 = phi( main::@43/k#65 )
+ hiscore#49 = phi( main::@43/hiscore#55 )
+ rem8u#53 = phi( main::@43/rem8u#60 )
+ score#89 = phi( main::@43/score#8 )
+ tu#49 = phi( main::@43/tu#56 )
+ duck#35 = phi( main::@43/duck#41 )
+ peephole#24 = phi( main::@43/peephole#29 )
+ y#28 = phi( main::@43/y#33 )
+ z#32 = phi( main::@43/z#5 )
+ z#12 = z#32
+ time#4 = $a
+ to:main::@36
+main::@36: scope:[main] from main::@97 main::@98
+ n#51 = phi( main::@97/n#56, main::@98/n#57 )
+ k#53 = phi( main::@97/k#58, main::@98/k#59 )
+ hiscore#43 = phi( main::@97/hiscore#48, main::@98/hiscore#49 )
+ rem8u#46 = phi( main::@97/rem8u#52, main::@98/rem8u#53 )
+ score#81 = phi( main::@97/score#88, main::@98/score#89 )
+ tu#41 = phi( main::@97/tu#48, main::@98/tu#49 )
+ time#38 = phi( main::@97/time#41, main::@98/time#4 )
+ duck#28 = phi( main::@97/duck#34, main::@98/duck#35 )
+ z#73 = phi( main::@97/z#11, main::@98/z#12 )
+ peephole#18 = phi( main::@97/peephole#23, main::@98/peephole#24 )
+ y#23 = phi( main::@97/y#27, main::@98/y#28 )
+ *((char *)$900d) = 0
+ to:main::@34
+main::@37: scope:[main] from main::@34 main::@44
+ n#45 = phi( main::@34/n#47, main::@44/n#48 )
+ k#47 = phi( main::@34/k#49, main::@44/k#50 )
+ hiscore#37 = phi( main::@34/hiscore#39, main::@44/hiscore#40 )
+ rem8u#38 = phi( main::@34/rem8u#41, main::@44/rem8u#42 )
+ score#65 = phi( main::@34/score#73, main::@44/score#74 )
+ tu#29 = phi( main::@34/tu#34, main::@44/tu#35 )
+ time#29 = phi( main::@34/time#33, main::@44/time#34 )
+ duck#15 = phi( main::@34/duck#21, main::@44/duck#22 )
+ z#48 = phi( main::@34/z#62, main::@44/z#63 )
+ peephole#7 = phi( main::@34/peephole#13, main::@44/peephole#1 )
+ y#4 = peephole#7
+ *((char *)peephole#7) = $fd
+ main::$125 = peephole#7 + c
+ *((char *)main::$125) = 1
+ main::$126 = peephole#7 + 1
+ *((char *)main::$126) = $ed
+ main::$127 = peephole#7 + 1
+ main::$128 = main::$127 + c
+ *((char *)main::$128) = 1
+ main::$129 = peephole#7 + $16
+ *((char *)main::$129) = $ee
+ main::$130 = peephole#7 + $16
+ main::$131 = main::$130 + c
+ *((char *)main::$131) = 1
+ main::$132 = peephole#7 + $17
+ *((char *)main::$132) = $f0
+ main::$133 = peephole#7 + $17
+ main::$134 = main::$133 + c
+ *((char *)main::$134) = 1
+ wait::n#3 = 5
+ call wait
+ to:main::@99
+main::@99: scope:[main] from main::@37
+ n#43 = phi( main::@37/n#45 )
+ k#45 = phi( main::@37/k#47 )
+ hiscore#35 = phi( main::@37/hiscore#37 )
+ peephole#43 = phi( main::@37/peephole#7 )
+ y#41 = phi( main::@37/y#4 )
+ rem8u#35 = phi( main::@37/rem8u#38 )
+ score#56 = phi( main::@37/score#65 )
+ tu#25 = phi( main::@37/tu#29 )
+ time#24 = phi( main::@37/time#29 )
+ duck#9 = phi( main::@37/duck#15 )
+ z#33 = phi( main::@37/z#5 )
+ z#13 = z#33
+ *((char *)duck#9) = 0
+ main::$136 = duck#9 + c
+ *((char *)main::$136) = 7
+ main::$137 = duck#9 + 1
+ *((char *)main::$137) = 1
+ main::$138 = duck#9 + 1
+ main::$139 = main::$138 + c
+ *((char *)main::$139) = 7
+ main::$140 = duck#9 + $16
+ *((char *)main::$140) = 2
+ main::$141 = duck#9 + $16
+ main::$142 = main::$141 + c
+ *((char *)main::$142) = 7
+ main::$143 = duck#9 + $17
+ *((char *)main::$143) = 3
+ main::$144 = duck#9 + $17
+ main::$145 = main::$144 + c
+ *((char *)main::$145) = 7
+ wait::n#4 = 5
+ call wait
+ to:main::@100
+main::@100: scope:[main] from main::@99
+ n#40 = phi( main::@99/n#43 )
+ k#42 = phi( main::@99/k#45 )
+ hiscore#32 = phi( main::@99/hiscore#35 )
+ peephole#39 = phi( main::@99/peephole#43 )
+ duck#30 = phi( main::@99/duck#9 )
+ y#35 = phi( main::@99/y#41 )
+ rem8u#31 = phi( main::@99/rem8u#35 )
+ score#43 = phi( main::@99/score#56 )
+ tu#19 = phi( main::@99/tu#25 )
+ time#17 = phi( main::@99/time#24 )
+ z#34 = phi( main::@99/z#5 )
+ z#14 = z#34
+ to:main::@27
+main::@44: scope:[main] from main::@34
+ n#48 = phi( main::@34/n#47 )
+ k#50 = phi( main::@34/k#49 )
+ hiscore#40 = phi( main::@34/hiscore#39 )
+ rem8u#42 = phi( main::@34/rem8u#41 )
+ score#74 = phi( main::@34/score#73 )
+ tu#35 = phi( main::@34/tu#34 )
+ time#34 = phi( main::@34/time#33 )
+ duck#22 = phi( main::@34/duck#21 )
+ z#63 = phi( main::@34/z#62 )
+ y#14 = phi( main::@34/y#13 )
+ peephole#8 = phi( main::@34/peephole#13 )
+ main::$118 = peephole#8 + c
+ *((char *)main::$118) = 0
+ main::$119 = peephole#8 + c
+ main::$120 = main::$119 + 1
+ *((char *)main::$120) = 0
+ main::$121 = peephole#8 + c
+ main::$122 = main::$121 + $16
+ *((char *)main::$122) = 0
+ main::$123 = peephole#8 + c
+ main::$124 = main::$123 + $17
+ *((char *)main::$124) = 0
+ peephole#1 = y#14
+ to:main::@37
+main::@45: scope:[main] from main::@95
+ y#77 = phi( main::@95/y#66 )
+ rem8u#91 = phi( main::@95/rem8u#78 )
+ time#57 = phi( main::@95/time#58 )
+ duck#58 = phi( main::@95/duck#7 )
+ tu#85 = phi( main::@95/tu#9 )
+ peephole#66 = phi( main::@95/peephole#68 )
+ n#35 = phi( main::@95/n#36 )
+ k#37 = phi( main::@95/k#38 )
+ hiscore#27 = phi( main::@95/hiscore#28 )
+ score#99 = phi( main::@95/score#101 )
+ z#49 = phi( main::@95/z#10 )
+ clear_screen::n#2 = 4
+ clear_screen::m#2 = 0
+ call clear_screen
+ to:main::@101
+main::@101: scope:[main] from main::@45
+ y#75 = phi( main::@45/y#77 )
+ rem8u#89 = phi( main::@45/rem8u#91 )
+ time#56 = phi( main::@45/time#57 )
+ duck#57 = phi( main::@45/duck#58 )
+ tu#84 = phi( main::@45/tu#85 )
+ peephole#64 = phi( main::@45/peephole#66 )
+ n#34 = phi( main::@45/n#35 )
+ k#36 = phi( main::@45/k#37 )
+ hiscore#26 = phi( main::@45/hiscore#27 )
+ score#95 = phi( main::@45/score#99 )
+ z#35 = phi( main::@45/z#2 )
+ z#15 = z#35
+ *((char *)$9005) = $f0
+ chrout::petscii = lower
+ call chrout
+ to:main::@102
+main::@102: scope:[main] from main::@101
+ y#71 = phi( main::@101/y#75 )
+ rem8u#87 = phi( main::@101/rem8u#89 )
+ time#55 = phi( main::@101/time#56 )
+ duck#56 = phi( main::@101/duck#57 )
+ tu#83 = phi( main::@101/tu#84 )
+ peephole#62 = phi( main::@101/peephole#64 )
+ n#33 = phi( main::@101/n#34 )
+ k#35 = phi( main::@101/k#36 )
+ z#122 = phi( main::@101/z#15 )
+ hiscore#24 = phi( main::@101/hiscore#26 )
+ score#90 = phi( main::@101/score#95 )
+ textcolor::color#3 = 7
+ call textcolor
+ textcolor::return#5 = textcolor::return#1
+ to:main::@103
+main::@103: scope:[main] from main::@102
+ y#67 = phi( main::@102/y#71 )
+ rem8u#83 = phi( main::@102/rem8u#87 )
+ time#54 = phi( main::@102/time#55 )
+ duck#55 = phi( main::@102/duck#56 )
+ tu#82 = phi( main::@102/tu#83 )
+ peephole#60 = phi( main::@102/peephole#62 )
+ n#32 = phi( main::@102/n#33 )
+ k#34 = phi( main::@102/k#35 )
+ z#119 = phi( main::@102/z#122 )
+ hiscore#22 = phi( main::@102/hiscore#24 )
+ score#82 = phi( main::@102/score#90 )
+ cputs::s#4 = game_over
+ call cputs
+ to:main::@104
+main::@104: scope:[main] from main::@103
+ y#64 = phi( main::@103/y#67 )
+ rem8u#79 = phi( main::@103/rem8u#83 )
+ time#53 = phi( main::@103/time#54 )
+ duck#54 = phi( main::@103/duck#55 )
+ tu#80 = phi( main::@103/tu#82 )
+ peephole#57 = phi( main::@103/peephole#60 )
+ n#31 = phi( main::@103/n#32 )
+ k#33 = phi( main::@103/k#34 )
+ z#117 = phi( main::@103/z#119 )
+ hiscore#20 = phi( main::@103/hiscore#22 )
+ score#75 = phi( main::@103/score#82 )
+ textcolor::color#4 = 2
+ call textcolor
+ textcolor::return#6 = textcolor::return#1
+ to:main::@105
+main::@105: scope:[main] from main::@104
+ y#62 = phi( main::@104/y#64 )
+ rem8u#76 = phi( main::@104/rem8u#79 )
+ time#52 = phi( main::@104/time#53 )
+ duck#53 = phi( main::@104/duck#54 )
+ tu#78 = phi( main::@104/tu#80 )
+ peephole#54 = phi( main::@104/peephole#57 )
+ n#30 = phi( main::@104/n#31 )
+ k#32 = phi( main::@104/k#33 )
+ z#115 = phi( main::@104/z#117 )
+ hiscore#18 = phi( main::@104/hiscore#20 )
+ score#66 = phi( main::@104/score#75 )
+ cputs::s#5 = your_score
+ call cputs
+ to:main::@106
+main::@106: scope:[main] from main::@105
+ y#60 = phi( main::@105/y#62 )
+ rem8u#74 = phi( main::@105/rem8u#76 )
+ time#51 = phi( main::@105/time#52 )
+ duck#52 = phi( main::@105/duck#53 )
+ tu#76 = phi( main::@105/tu#78 )
+ peephole#51 = phi( main::@105/peephole#54 )
+ n#29 = phi( main::@105/n#30 )
+ k#31 = phi( main::@105/k#32 )
+ z#113 = phi( main::@105/z#115 )
+ hiscore#16 = phi( main::@105/hiscore#18 )
+ score#57 = phi( main::@105/score#66 )
+ cputs::s#6 = buffer
+ call cputs
+ to:main::@107
+main::@107: scope:[main] from main::@106
+ y#58 = phi( main::@106/y#60 )
+ rem8u#72 = phi( main::@106/rem8u#74 )
+ time#50 = phi( main::@106/time#51 )
+ duck#51 = phi( main::@106/duck#52 )
+ tu#74 = phi( main::@106/tu#76 )
+ peephole#49 = phi( main::@106/peephole#51 )
+ n#28 = phi( main::@106/n#29 )
+ k#30 = phi( main::@106/k#31 )
+ z#111 = phi( main::@106/z#113 )
+ hiscore#13 = phi( main::@106/hiscore#16 )
+ score#46 = phi( main::@106/score#57 )
+ textcolor::color#5 = 3
+ call textcolor
+ textcolor::return#7 = textcolor::return#1
+ to:main::@108
+main::@108: scope:[main] from main::@107
+ y#55 = phi( main::@107/y#58 )
+ rem8u#69 = phi( main::@107/rem8u#72 )
+ time#49 = phi( main::@107/time#50 )
+ duck#50 = phi( main::@107/duck#51 )
+ tu#70 = phi( main::@107/tu#74 )
+ peephole#47 = phi( main::@107/peephole#49 )
+ n#27 = phi( main::@107/n#28 )
+ k#29 = phi( main::@107/k#30 )
+ z#108 = phi( main::@107/z#111 )
+ hiscore#10 = phi( main::@107/hiscore#13 )
+ score#35 = phi( main::@107/score#46 )
+ cputs::s#7 = high_score
+ call cputs
+ to:main::@109
+main::@109: scope:[main] from main::@108
+ y#51 = phi( main::@108/y#55 )
+ rem8u#61 = phi( main::@108/rem8u#69 )
+ time#47 = phi( main::@108/time#49 )
+ duck#48 = phi( main::@108/duck#50 )
+ tu#64 = phi( main::@108/tu#70 )
+ peephole#44 = phi( main::@108/peephole#47 )
+ n#25 = phi( main::@108/n#27 )
+ k#27 = phi( main::@108/k#29 )
+ z#104 = phi( main::@108/z#108 )
+ hiscore#5 = phi( main::@108/hiscore#10 )
+ score#24 = phi( main::@108/score#35 )
+ main::$167 = score#24 > hiscore#5
+ main::$168 = ! main::$167
+ if(main::$168) goto main::@48
+ to:main::@46
+main::@48: scope:[main] from main::@109 main::@46
+ y#48 = phi( main::@109/y#51, main::@46/y#52 )
+ rem8u#54 = phi( main::@109/rem8u#61, main::@46/rem8u#62 )
+ time#46 = phi( main::@109/time#47, main::@46/time#48 )
+ duck#47 = phi( main::@109/duck#48, main::@46/duck#49 )
+ tu#57 = phi( main::@109/tu#64, main::@46/tu#65 )
+ score#96 = phi( main::@109/score#24, main::@46/score#25 )
+ peephole#41 = phi( main::@109/peephole#44, main::@46/peephole#45 )
+ n#24 = phi( main::@109/n#25, main::@46/n#26 )
+ k#26 = phi( main::@109/k#27, main::@46/k#28 )
+ z#101 = phi( main::@109/z#104, main::@46/z#105 )
+ hiscore#6 = phi( main::@109/hiscore#5, main::@46/hiscore#0 )
+ utoa::value#2 = hiscore#6
+ utoa::buffer#6 = buffer
+ utoa::radix#1 = $a
+ call utoa
+ to:main::@110
+main::@110: scope:[main] from main::@48
+ hiscore#25 = phi( main::@48/hiscore#6 )
+ y#46 = phi( main::@48/y#48 )
+ rem8u#47 = phi( main::@48/rem8u#54 )
+ time#44 = phi( main::@48/time#46 )
+ duck#46 = phi( main::@48/duck#47 )
+ tu#50 = phi( main::@48/tu#57 )
+ score#91 = phi( main::@48/score#96 )
+ peephole#38 = phi( main::@48/peephole#41 )
+ n#23 = phi( main::@48/n#24 )
+ k#25 = phi( main::@48/k#26 )
+ z#97 = phi( main::@48/z#101 )
+ cputs::s#8 = buffer
+ call cputs
+ to:main::@111
+main::@111: scope:[main] from main::@110
+ hiscore#23 = phi( main::@110/hiscore#25 )
+ y#44 = phi( main::@110/y#46 )
+ rem8u#43 = phi( main::@110/rem8u#47 )
+ time#42 = phi( main::@110/time#44 )
+ duck#45 = phi( main::@110/duck#46 )
+ tu#42 = phi( main::@110/tu#50 )
+ score#83 = phi( main::@110/score#91 )
+ peephole#36 = phi( main::@110/peephole#38 )
+ n#22 = phi( main::@110/n#23 )
+ k#24 = phi( main::@110/k#25 )
+ z#92 = phi( main::@110/z#97 )
+ textcolor::color#6 = 1
+ call textcolor
+ textcolor::return#8 = textcolor::return#1
+ to:main::@112
+main::@112: scope:[main] from main::@111
+ hiscore#21 = phi( main::@111/hiscore#23 )
+ y#42 = phi( main::@111/y#44 )
+ rem8u#39 = phi( main::@111/rem8u#43 )
+ time#39 = phi( main::@111/time#42 )
+ duck#42 = phi( main::@111/duck#45 )
+ tu#36 = phi( main::@111/tu#42 )
+ score#76 = phi( main::@111/score#83 )
+ peephole#34 = phi( main::@111/peephole#36 )
+ n#21 = phi( main::@111/n#22 )
+ k#23 = phi( main::@111/k#24 )
+ z#87 = phi( main::@111/z#92 )
+ cputs::s#9 = play_again
+ call cputs
+ to:main::@113
+main::@113: scope:[main] from main::@112
+ hiscore#19 = phi( main::@112/hiscore#21 )
+ y#39 = phi( main::@112/y#42 )
+ rem8u#36 = phi( main::@112/rem8u#39 )
+ time#35 = phi( main::@112/time#39 )
+ duck#36 = phi( main::@112/duck#42 )
+ tu#30 = phi( main::@112/tu#36 )
+ score#67 = phi( main::@112/score#76 )
+ peephole#30 = phi( main::@112/peephole#34 )
+ n#20 = phi( main::@112/n#21 )
+ k#22 = phi( main::@112/k#23 )
+ z#81 = phi( main::@112/z#87 )
+ to:main::@49
+main::@46: scope:[main] from main::@109
+ y#52 = phi( main::@109/y#51 )
+ rem8u#62 = phi( main::@109/rem8u#61 )
+ time#48 = phi( main::@109/time#47 )
+ duck#49 = phi( main::@109/duck#48 )
+ tu#65 = phi( main::@109/tu#64 )
+ peephole#45 = phi( main::@109/peephole#44 )
+ n#26 = phi( main::@109/n#25 )
+ k#28 = phi( main::@109/k#27 )
+ z#105 = phi( main::@109/z#104 )
+ score#25 = phi( main::@109/score#24 )
+ hiscore#0 = score#25
+ to:main::@48
+main::@49: scope:[main] from main::@113 main::@49
+ hiscore#17 = phi( main::@113/hiscore#19, main::@49/hiscore#17 )
+ y#34 = phi( main::@113/y#39, main::@49/y#34 )
+ rem8u#33 = phi( main::@113/rem8u#36, main::@49/rem8u#33 )
+ time#30 = phi( main::@113/time#35, main::@49/time#30 )
+ duck#29 = phi( main::@113/duck#36, main::@49/duck#29 )
+ tu#26 = phi( main::@113/tu#30, main::@49/tu#26 )
+ score#58 = phi( main::@113/score#67, main::@49/score#58 )
+ peephole#25 = phi( main::@113/peephole#30, main::@49/peephole#25 )
+ n#19 = phi( main::@113/n#20, main::@49/n#19 )
+ k#19 = phi( main::@113/k#22, main::@49/k#19 )
+ z#74 = phi( main::@113/z#81, main::@49/z#74 )
+ j#6 = *((char *)$c5)
+ main::$173 = j#6 != $b
+ main::$174 = j#6 != $1c
+ main::$175 = main::$173 && main::$174
+ if(main::$175) goto main::@49
+ to:main::@50
+main::@50: scope:[main] from main::@49
+ hiscore#14 = phi( main::@49/hiscore#17 )
+ y#29 = phi( main::@49/y#34 )
+ rem8u#29 = phi( main::@49/rem8u#33 )
+ time#25 = phi( main::@49/time#30 )
+ duck#23 = phi( main::@49/duck#29 )
+ tu#21 = phi( main::@49/tu#26 )
+ score#47 = phi( main::@49/score#58 )
+ peephole#19 = phi( main::@49/peephole#25 )
+ n#17 = phi( main::@49/n#19 )
+ k#15 = phi( main::@49/k#19 )
+ z#56 = phi( main::@49/z#74 )
+ j#19 = phi( main::@49/j#6 )
+ main::$176 = j#19 == $b
+ if(main::$176) goto main::@3
+ to:main::@51
+main::@51: scope:[main] from main::@50
+ hiscore#11 = phi( main::@50/hiscore#14 )
+ y#24 = phi( main::@50/y#29 )
+ rem8u#26 = phi( main::@50/rem8u#29 )
+ time#21 = phi( main::@50/time#25 )
+ duck#16 = phi( main::@50/duck#23 )
+ j#24 = phi( main::@50/j#19 )
+ tu#16 = phi( main::@50/tu#21 )
+ score#36 = phi( main::@50/score#47 )
+ peephole#14 = phi( main::@50/peephole#19 )
+ n#15 = phi( main::@50/n#17 )
+ k#12 = phi( main::@50/k#15 )
+ z#50 = phi( main::@50/z#56 )
+ asm { jsr$FD22 }
+ to:main::@return
+main::@return: scope:[main] from main::@51
+ hiscore#7 = phi( main::@51/hiscore#11 )
+ y#15 = phi( main::@51/y#24 )
+ rem8u#19 = phi( main::@51/rem8u#26 )
+ time#14 = phi( main::@51/time#21 )
+ duck#10 = phi( main::@51/duck#16 )
+ j#20 = phi( main::@51/j#24 )
+ tu#10 = phi( main::@51/tu#16 )
+ score#26 = phi( main::@51/score#36 )
+ peephole#9 = phi( main::@51/peephole#14 )
+ n#10 = phi( main::@51/n#15 )
+ k#8 = phi( main::@51/k#12 )
+ z#36 = phi( main::@51/z#50 )
+ z#16 = z#36
+ k#2 = k#8
+ n#3 = n#10
+ peephole#2 = peephole#9
+ score#9 = score#26
+ tu#2 = tu#10
+ j#7 = j#20
+ duck#2 = duck#10
+ time#5 = time#14
+ rem8u#8 = rem8u#19
+ y#5 = y#15
+ hiscore#1 = hiscore#7
+ return
+ to:@return
+
+void __start()
+__start: scope:[__start] from
+ to:__start::__init1
+__start::__init1: scope:[__start] from __start
+ conio_cursor_x = 0
+ conio_cursor_y = 0
+ conio_line_text = DEFAULT_SCREEN
+ conio_line_color = COLORRAM
+ conio_textcolor = LIGHT_BLUE
+ conio_scroll_enable = 1
+ rem8u#9 = 0
+ j#8 = 0
+ k#3 = 0
+ l = 0
+ m = 0
+ n#4 = 0
+ tu#3 = 0
+ duck#3 = 0
+ peephole#3 = 0
+ y#6 = 0
+ z#17 = 0
+ time#6 = 0
+ score#10 = 0
+ hiscore#2 = 0
+ call conio_c64_init
+ to:__start::@2
+__start::@2: scope:[__start] from __start::__init1
+ hiscore#15 = phi( __start::__init1/hiscore#2 )
+ y#30 = phi( __start::__init1/y#6 )
+ rem8u#30 = phi( __start::__init1/rem8u#9 )
+ time#26 = phi( __start::__init1/time#6 )
+ duck#24 = phi( __start::__init1/duck#3 )
+ j#26 = phi( __start::__init1/j#8 )
+ tu#22 = phi( __start::__init1/tu#3 )
+ score#48 = phi( __start::__init1/score#10 )
+ peephole#20 = phi( __start::__init1/peephole#3 )
+ n#18 = phi( __start::__init1/n#4 )
+ k#16 = phi( __start::__init1/k#3 )
+ z#64 = phi( __start::__init1/z#17 )
+ to:__start::@1
+__start::@1: scope:[__start] from __start::@2
+ hiscore#12 = phi( __start::@2/hiscore#15 )
+ y#25 = phi( __start::@2/y#30 )
+ rem8u#27 = phi( __start::@2/rem8u#30 )
+ time#22 = phi( __start::@2/time#26 )
+ duck#17 = phi( __start::@2/duck#24 )
+ j#25 = phi( __start::@2/j#26 )
+ tu#17 = phi( __start::@2/tu#22 )
+ score#37 = phi( __start::@2/score#48 )
+ peephole#15 = phi( __start::@2/peephole#20 )
+ n#16 = phi( __start::@2/n#18 )
+ k#13 = phi( __start::@2/k#16 )
+ z#51 = phi( __start::@2/z#64 )
+ call main
+ to:__start::@3
+__start::@3: scope:[__start] from __start::@1
+ hiscore#8 = phi( __start::@1/hiscore#1 )
+ y#16 = phi( __start::@1/y#5 )
+ rem8u#20 = phi( __start::@1/rem8u#8 )
+ time#15 = phi( __start::@1/time#5 )
+ duck#11 = phi( __start::@1/duck#2 )
+ j#21 = phi( __start::@1/j#7 )
+ tu#11 = phi( __start::@1/tu#2 )
+ score#27 = phi( __start::@1/score#9 )
+ peephole#10 = phi( __start::@1/peephole#2 )
+ n#11 = phi( __start::@1/n#3 )
+ k#9 = phi( __start::@1/k#2 )
+ z#37 = phi( __start::@1/z#16 )
+ z#18 = z#37
+ k#4 = k#9
+ n#5 = n#11
+ peephole#4 = peephole#10
+ score#11 = score#27
+ tu#4 = tu#11
+ j#9 = j#21
+ duck#4 = duck#11
+ time#7 = time#15
+ rem8u#10 = rem8u#20
+ y#7 = y#16
+ hiscore#3 = hiscore#8
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@3
+ hiscore#9 = phi( __start::@3/hiscore#3 )
+ score#28 = phi( __start::@3/score#11 )
+ time#16 = phi( __start::@3/time#7 )
+ z#38 = phi( __start::@3/z#18 )
+ y#17 = phi( __start::@3/y#7 )
+ peephole#11 = phi( __start::@3/peephole#4 )
+ duck#12 = phi( __start::@3/duck#4 )
+ tu#12 = phi( __start::@3/tu#4 )
+ n#12 = phi( __start::@3/n#5 )
+ k#10 = phi( __start::@3/k#4 )
+ j#22 = phi( __start::@3/j#9 )
+ rem8u#21 = phi( __start::@3/rem8u#10 )
+ rem8u#11 = rem8u#21
+ j#10 = j#22
+ k#5 = k#10
+ n#6 = n#12
+ tu#5 = tu#12
+ duck#5 = duck#12
+ peephole#5 = peephole#11
+ y#8 = y#17
+ z#19 = z#38
+ time#8 = time#16
+ score#12 = score#28
+ hiscore#4 = hiscore#9
+ return
+ to:@return
+
+SYMBOL TABLE SSA
+__constant char BINARY = 2
+__constant char * const COLORRAM = (char *)$d800
+__constant char DECIMAL = $a
+__constant char * const DEFAULT_SCREEN = (char *)$400
+__constant char DIGITS[] = "0123456789abcdef"z
+__constant char HEXADECIMAL = $10
+__constant const char LIGHT_BLUE = $e
+__constant char OCTAL = 8
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+__constant unsigned int RADIX_BINARY_VALUES[] = { $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 }
+__constant unsigned int RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
+__constant unsigned int RADIX_HEXADECIMAL_VALUES[] = { $1000, $100, $10 }
+__constant unsigned int RADIX_OCTAL_VALUES[] = { $8000, $1000, $200, $40, 8 }
+__constant char SIZEOF_UNSIGNED_INT = 2
+void __start()
+__constant const char brick = $e6
+__constant char buffer[] = { 0, 0, 0, 0 }
+__constant const unsigned int c = $7800
+__constant const char chrono[] = { $54, $4d, $3a, $39 }
+void chrono_restart()
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii
+void clear_screen(char n , char m)
+bool clear_screen::$2
+number clear_screen::$3
+number clear_screen::$4
+number clear_screen::$5
+char clear_screen::m
+char clear_screen::m#0
+char clear_screen::m#1
+char clear_screen::m#2
+char clear_screen::m#3
+char clear_screen::m#4
+char clear_screen::m#5
+char clear_screen::n
+char clear_screen::n#0
+char clear_screen::n#1
+char clear_screen::n#2
+char clear_screen::n#3
+char clear_screen::n#4
+char clear_screen::n#5
+void conio_c64_init()
+bool conio_c64_init::$0
+bool conio_c64_init::$1
+__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *)$d6
+char conio_c64_init::line
+char conio_c64_init::line#0
+char conio_c64_init::line#1
+char conio_c64_init::line#2
+__loadstore char conio_cursor_x
+__loadstore char conio_cursor_y
+__loadstore char *conio_line_color
+__loadstore char *conio_line_text
+__loadstore char conio_scroll_enable
+__loadstore char conio_textcolor
+void cputc(char c)
+bool cputc::$0
+bool cputc::$1
+bool cputc::$2
+char cputc::c
+char cputc::c#0
+char cputc::c#1
+char cputc::c#2
+void cputln()
+void cputs(const char *s)
+char cputs::$0
+bool cputs::$2
+char cputs::c
+char cputs::c#0
+char cputs::c#1
+char cputs::c#2
+const char *cputs::s
+const char *cputs::s#0
+const char *cputs::s#1
+const char *cputs::s#10
+const char *cputs::s#11
+const char *cputs::s#12
+const char *cputs::s#13
+const char *cputs::s#2
+const char *cputs::s#3
+const char *cputs::s#4
+const char *cputs::s#5
+const char *cputs::s#6
+const char *cputs::s#7
+const char *cputs::s#8
+const char *cputs::s#9
+void cscroll()
+bool cscroll::$0
+bool cscroll::$1
+bool cscroll::$7
+unsigned int div16u8u(unsigned int dividend , char divisor)
+char div16u8u::$0
+char div16u8u::$2
+unsigned int div16u8u::dividend
+unsigned int div16u8u::dividend#0
+unsigned int div16u8u::dividend#1
+unsigned int div16u8u::dividend#2
+char div16u8u::divisor
+char div16u8u::divisor#0
+char div16u8u::divisor#1
+char div16u8u::divisor#2
+unsigned int div16u8u::quotient
+unsigned int div16u8u::quotient#0
+char div16u8u::quotient_hi
+char div16u8u::quotient_hi#0
+char div16u8u::quotient_hi#1
+char div16u8u::quotient_lo
+char div16u8u::quotient_lo#0
+unsigned int div16u8u::return
+unsigned int div16u8u::return#0
+unsigned int div16u8u::return#1
+unsigned int div16u8u::return#2
+unsigned int div16u8u::return#3
+unsigned int div16u8u::return#4
+char divr8u(char dividend , char divisor , char rem)
+char divr8u::$0
+number divr8u::$1
+bool divr8u::$10
+bool divr8u::$2
+bool divr8u::$3
+number divr8u::$4
+char divr8u::$5
+char divr8u::$6
+bool divr8u::$7
+bool divr8u::$8
+char divr8u::$9
+char divr8u::dividend
+char divr8u::dividend#0
+char divr8u::dividend#1
+char divr8u::dividend#2
+char divr8u::dividend#3
+char divr8u::dividend#4
+char divr8u::dividend#5
+char divr8u::dividend#6
+char divr8u::dividend#7
+char divr8u::dividend#8
+char divr8u::divisor
+char divr8u::divisor#0
+char divr8u::divisor#1
+char divr8u::divisor#2
+char divr8u::divisor#3
+char divr8u::divisor#4
+char divr8u::divisor#5
+char divr8u::divisor#6
+char divr8u::divisor#7
+char divr8u::i
+char divr8u::i#0
+char divr8u::i#1
+char divr8u::i#2
+char divr8u::i#3
+char divr8u::i#4
+char divr8u::i#5
+char divr8u::i#6
+char divr8u::quotient
+char divr8u::quotient#0
+char divr8u::quotient#1
+char divr8u::quotient#2
+char divr8u::quotient#3
+char divr8u::quotient#4
+char divr8u::quotient#5
+char divr8u::quotient#6
+char divr8u::quotient#7
+char divr8u::quotient#8
+char divr8u::rem
+char divr8u::rem#0
+char divr8u::rem#1
+char divr8u::rem#10
+char divr8u::rem#11
+char divr8u::rem#2
+char divr8u::rem#3
+char divr8u::rem#4
+char divr8u::rem#5
+char divr8u::rem#6
+char divr8u::rem#7
+char divr8u::rem#8
+char divr8u::rem#9
+char divr8u::return
+char divr8u::return#0
+char divr8u::return#1
+char divr8u::return#2
+char divr8u::return#3
+char divr8u::return#4
+char divr8u::return#5
+char divr8u::return#6
+__constant const char down = $11
+unsigned int duck
+unsigned int duck#0
+unsigned int duck#1
+unsigned int duck#10
+unsigned int duck#11
+unsigned int duck#12
+unsigned int duck#13
+unsigned int duck#14
+unsigned int duck#15
+unsigned int duck#16
+unsigned int duck#17
+unsigned int duck#18
+unsigned int duck#19
+unsigned int duck#2
+unsigned int duck#20
+unsigned int duck#21
+unsigned int duck#22
+unsigned int duck#23
+unsigned int duck#24
+unsigned int duck#25
+unsigned int duck#26
+unsigned int duck#27
+unsigned int duck#28
+unsigned int duck#29
+unsigned int duck#3
+unsigned int duck#30
+unsigned int duck#31
+unsigned int duck#32
+unsigned int duck#33
+unsigned int duck#34
+unsigned int duck#35
+unsigned int duck#36
+unsigned int duck#37
+unsigned int duck#38
+unsigned int duck#39
+unsigned int duck#4
+unsigned int duck#40
+unsigned int duck#41
+unsigned int duck#42
+unsigned int duck#43
+unsigned int duck#44
+unsigned int duck#45
+unsigned int duck#46
+unsigned int duck#47
+unsigned int duck#48
+unsigned int duck#49
+unsigned int duck#5
+unsigned int duck#50
+unsigned int duck#51
+unsigned int duck#52
+unsigned int duck#53
+unsigned int duck#54
+unsigned int duck#55
+unsigned int duck#56
+unsigned int duck#57
+unsigned int duck#58
+unsigned int duck#6
+unsigned int duck#7
+unsigned int duck#8
+unsigned int duck#9
+__constant const char duck_udg[] = { $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0 }
+__constant const char ducknumber[] = { $44, $55, $43, $4b, $3a }
+__constant const char foot[] = "PRESS: 1,3,5,7 or 9
+
+"
+__constant const char game_over[] = "
+
+
+
+GAME OVER"
+void gotoxy(char x , char y)
+bool gotoxy::$0
+bool gotoxy::$1
+bool gotoxy::$2
+bool gotoxy::$3
+char *gotoxy::$5
+char *gotoxy::$6
+unsigned int gotoxy::$7
+unsigned int gotoxy::line_offset
+unsigned int gotoxy::line_offset#0
+char gotoxy::x
+char gotoxy::x#0
+char gotoxy::x#1
+char gotoxy::x#2
+char gotoxy::x#3
+char gotoxy::x#4
+char gotoxy::x#5
+char gotoxy::x#6
+char gotoxy::x#7
+char gotoxy::y
+char gotoxy::y#0
+char gotoxy::y#1
+char gotoxy::y#2
+char gotoxy::y#3
+char gotoxy::y#4
+char gotoxy::y#5
+char gotoxy::y#6
+char gotoxy::y#7
+__constant const char green = $1e
+__constant const char high_score[] = "
+
+Hi-Score: "
+unsigned int hiscore
+unsigned int hiscore#0
+unsigned int hiscore#1
+unsigned int hiscore#10
+unsigned int hiscore#100
+unsigned int hiscore#101
+unsigned int hiscore#102
+unsigned int hiscore#103
+unsigned int hiscore#104
+unsigned int hiscore#105
+unsigned int hiscore#106
+unsigned int hiscore#107
+unsigned int hiscore#108
+unsigned int hiscore#109
+unsigned int hiscore#11
+unsigned int hiscore#110
+unsigned int hiscore#111
+unsigned int hiscore#112
+unsigned int hiscore#113
+unsigned int hiscore#114
+unsigned int hiscore#115
+unsigned int hiscore#116
+unsigned int hiscore#117
+unsigned int hiscore#118
+unsigned int hiscore#119
+unsigned int hiscore#12
+unsigned int hiscore#120
+unsigned int hiscore#121
+unsigned int hiscore#122
+unsigned int hiscore#13
+unsigned int hiscore#14
+unsigned int hiscore#15
+unsigned int hiscore#16
+unsigned int hiscore#17
+unsigned int hiscore#18
+unsigned int hiscore#19
+unsigned int hiscore#2
+unsigned int hiscore#20
+unsigned int hiscore#21
+unsigned int hiscore#22
+unsigned int hiscore#23
+unsigned int hiscore#24
+unsigned int hiscore#25
+unsigned int hiscore#26
+unsigned int hiscore#27
+unsigned int hiscore#28
+unsigned int hiscore#29
+unsigned int hiscore#3
+unsigned int hiscore#30
+unsigned int hiscore#31
+unsigned int hiscore#32
+unsigned int hiscore#33
+unsigned int hiscore#34
+unsigned int hiscore#35
+unsigned int hiscore#36
+unsigned int hiscore#37
+unsigned int hiscore#38
+unsigned int hiscore#39
+unsigned int hiscore#4
+unsigned int hiscore#40
+unsigned int hiscore#41
+unsigned int hiscore#42
+unsigned int hiscore#43
+unsigned int hiscore#44
+unsigned int hiscore#45
+unsigned int hiscore#46
+unsigned int hiscore#47
+unsigned int hiscore#48
+unsigned int hiscore#49
+unsigned int hiscore#5
+unsigned int hiscore#50
+unsigned int hiscore#51
+unsigned int hiscore#52
+unsigned int hiscore#53
+unsigned int hiscore#54
+unsigned int hiscore#55
+unsigned int hiscore#56
+unsigned int hiscore#57
+unsigned int hiscore#58
+unsigned int hiscore#59
+unsigned int hiscore#6
+unsigned int hiscore#60
+unsigned int hiscore#61
+unsigned int hiscore#62
+unsigned int hiscore#63
+unsigned int hiscore#64
+unsigned int hiscore#65
+unsigned int hiscore#66
+unsigned int hiscore#67
+unsigned int hiscore#68
+unsigned int hiscore#69
+unsigned int hiscore#7
+unsigned int hiscore#70
+unsigned int hiscore#71
+unsigned int hiscore#72
+unsigned int hiscore#73
+unsigned int hiscore#74
+unsigned int hiscore#75
+unsigned int hiscore#76
+unsigned int hiscore#77
+unsigned int hiscore#78
+unsigned int hiscore#79
+unsigned int hiscore#8
+unsigned int hiscore#80
+unsigned int hiscore#81
+unsigned int hiscore#82
+unsigned int hiscore#83
+unsigned int hiscore#84
+unsigned int hiscore#85
+unsigned int hiscore#86
+unsigned int hiscore#87
+unsigned int hiscore#88
+unsigned int hiscore#89
+unsigned int hiscore#9
+unsigned int hiscore#90
+unsigned int hiscore#91
+unsigned int hiscore#92
+unsigned int hiscore#93
+unsigned int hiscore#94
+unsigned int hiscore#95
+unsigned int hiscore#96
+unsigned int hiscore#97
+unsigned int hiscore#98
+unsigned int hiscore#99
+__constant const char home = $13
+__constant const char intro[] = "
+
+
+DIFFICULTY
+----------
+
+
+"
+char j
+char j#0
+char j#1
+char j#10
+char j#11
+char j#12
+char j#13
+char j#14
+char j#15
+char j#16
+char j#17
+char j#18
+char j#19
+char j#2
+char j#20
+char j#21
+char j#22
+char j#23
+char j#24
+char j#25
+char j#26
+char j#3
+char j#4
+char j#5
+char j#6
+char j#7
+char j#8
+char j#9
+char k
+char k#0
+char k#1
+char k#10
+char k#100
+char k#101
+char k#102
+char k#103
+char k#104
+char k#105
+char k#11
+char k#12
+char k#13
+char k#14
+char k#15
+char k#16
+char k#17
+char k#18
+char k#19
+char k#2
+char k#20
+char k#21
+char k#22
+char k#23
+char k#24
+char k#25
+char k#26
+char k#27
+char k#28
+char k#29
+char k#3
+char k#30
+char k#31
+char k#32
+char k#33
+char k#34
+char k#35
+char k#36
+char k#37
+char k#38
+char k#39
+char k#4
+char k#40
+char k#41
+char k#42
+char k#43
+char k#44
+char k#45
+char k#46
+char k#47
+char k#48
+char k#49
+char k#5
+char k#50
+char k#51
+char k#52
+char k#53
+char k#54
+char k#55
+char k#56
+char k#57
+char k#58
+char k#59
+char k#6
+char k#60
+char k#61
+char k#62
+char k#63
+char k#64
+char k#65
+char k#66
+char k#67
+char k#68
+char k#69
+char k#7
+char k#70
+char k#71
+char k#72
+char k#73
+char k#74
+char k#75
+char k#76
+char k#77
+char k#78
+char k#79
+char k#8
+char k#80
+char k#81
+char k#82
+char k#83
+char k#84
+char k#85
+char k#86
+char k#87
+char k#88
+char k#89
+char k#9
+char k#90
+char k#91
+char k#92
+char k#93
+char k#94
+char k#95
+char k#96
+char k#97
+char k#98
+char k#99
+__loadstore volatile char l
+__constant const char levels[] = "1.EASIEST
+
+3.EASY
+
+5.MEDIUM
+
+7.HARD
+
+9.EXPERT
+
+
+
+
+"
+__constant const char lock = 8
+__constant const char lower = $e
+__loadstore volatile char m
+void main()
+number main::$100
+bool main::$103
+number main::$104
+bool main::$105
+bool main::$106
+number main::$107
+bool main::$108
+bool main::$109
+bool main::$11
+number main::$110
+bool main::$111
+bool main::$112
+bool main::$113
+bool main::$114
+bool main::$115
+bool main::$116
+bool main::$117
+unsigned int main::$118
+unsigned int main::$119
+number main::$120
+unsigned int main::$121
+number main::$122
+unsigned int main::$123
+number main::$124
+unsigned int main::$125
+number main::$126
+number main::$127
+number main::$128
+number main::$129
+number main::$130
+number main::$131
+number main::$132
+number main::$133
+number main::$134
+unsigned int main::$136
+number main::$137
+number main::$138
+number main::$139
+number main::$140
+number main::$141
+number main::$142
+number main::$143
+number main::$144
+number main::$145
+number main::$147
+unsigned int main::$150
+number main::$151
+number main::$152
+number main::$153
+number main::$154
+number main::$155
+number main::$156
+bool main::$157
+bool main::$16
+bool main::$167
+bool main::$168
+bool main::$173
+bool main::$174
+bool main::$175
+bool main::$176
+bool main::$18
+bool main::$2
+bool main::$23
+bool main::$24
+number main::$25
+number main::$26
+number main::$27
+unsigned int main::$29
+number main::$3
+bool main::$30
+bool main::$31
+bool main::$32
+unsigned int main::$35
+number main::$36
+bool main::$37
+bool main::$44
+bool main::$49
+bool main::$54
+number main::$57
+number main::$61
+number main::$62
+bool main::$63
+bool main::$64
+bool main::$65
+number main::$66
+bool main::$67
+bool main::$68
+number main::$69
+bool main::$70
+bool main::$71
+number main::$72
+bool main::$73
+bool main::$74
+bool main::$76
+number main::$78
+bool main::$79
+bool main::$80
+number main::$81
+bool main::$82
+bool main::$83
+number main::$84
+bool main::$85
+bool main::$86
+number main::$87
+number main::$88
+bool main::$89
+bool main::$90
+number main::$91
+number main::$92
+bool main::$93
+bool main::$94
+bool main::$95
+number main::$96
+number main::$97
+number main::$98
+void * memcpy(void *destination , void *source , unsigned int num)
+bool memcpy::$1
+char *memcpy::$2
+void *memcpy::destination
+void *memcpy::destination#0
+void *memcpy::destination#1
+void *memcpy::destination#2
+void *memcpy::destination#3
+void *memcpy::destination#4
+void *memcpy::destination#5
+char *memcpy::dst
+char *memcpy::dst#0
+char *memcpy::dst#1
+char *memcpy::dst#2
+char *memcpy::dst#3
+unsigned int memcpy::num
+unsigned int memcpy::num#0
+unsigned int memcpy::num#1
+unsigned int memcpy::num#2
+void *memcpy::return
+void *memcpy::return#0
+void *memcpy::return#1
+void *memcpy::return#2
+void *memcpy::return#3
+void *memcpy::return#4
+void *memcpy::source
+void *memcpy::source#0
+void *memcpy::source#1
+void *memcpy::source#2
+char *memcpy::src
+char *memcpy::src#0
+char *memcpy::src#1
+char *memcpy::src#2
+char *memcpy::src#3
+char *memcpy::src_end
+char *memcpy::src_end#0
+char *memcpy::src_end#1
+char *memcpy::src_end#2
+void * memset(void *str , char c , unsigned int num)
+bool memset::$0
+bool memset::$1
+bool memset::$3
+char *memset::$4
+char memset::c
+char memset::c#0
+char memset::c#1
+char memset::c#2
+char memset::c#3
+char memset::c#4
+char memset::c#5
+char *memset::dst
+char *memset::dst#0
+char *memset::dst#1
+char *memset::dst#2
+char *memset::dst#3
+char *memset::end
+char *memset::end#0
+char *memset::end#1
+char *memset::end#2
+unsigned int memset::num
+unsigned int memset::num#0
+unsigned int memset::num#1
+unsigned int memset::num#2
+unsigned int 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
+void *memset::str#6
+char n
+char n#0
+char n#1
+char n#10
+char n#100
+char n#101
+char n#102
+char n#103
+char n#104
+char n#105
+char n#106
+char n#107
+char n#108
+char n#109
+char n#11
+char n#110
+char n#111
+char n#112
+char n#113
+char n#114
+char n#115
+char n#116
+char n#117
+char n#118
+char n#119
+char n#12
+char n#120
+char n#121
+char n#13
+char n#14
+char n#15
+char n#16
+char n#17
+char n#18
+char n#19
+char n#2
+char n#20
+char n#21
+char n#22
+char n#23
+char n#24
+char n#25
+char n#26
+char n#27
+char n#28
+char n#29
+char n#3
+char n#30
+char n#31
+char n#32
+char n#33
+char n#34
+char n#35
+char n#36
+char n#37
+char n#38
+char n#39
+char n#4
+char n#40
+char n#41
+char n#42
+char n#43
+char n#44
+char n#45
+char n#46
+char n#47
+char n#48
+char n#49
+char n#5
+char n#50
+char n#51
+char n#52
+char n#53
+char n#54
+char n#55
+char n#56
+char n#57
+char n#58
+char n#59
+char n#6
+char n#60
+char n#61
+char n#62
+char n#63
+char n#64
+char n#65
+char n#66
+char n#67
+char n#68
+char n#69
+char n#7
+char n#70
+char n#71
+char n#72
+char n#73
+char n#74
+char n#75
+char n#76
+char n#77
+char n#78
+char n#79
+char n#8
+char n#80
+char n#81
+char n#82
+char n#83
+char n#84
+char n#85
+char n#86
+char n#87
+char n#88
+char n#89
+char n#9
+char n#90
+char n#91
+char n#92
+char n#93
+char n#94
+char n#95
+char n#96
+char n#97
+char n#98
+char n#99
+unsigned int peephole
+unsigned int peephole#0
+unsigned int peephole#1
+unsigned int peephole#10
+unsigned int peephole#11
+unsigned int peephole#12
+unsigned int peephole#13
+unsigned int peephole#14
+unsigned int peephole#15
+unsigned int peephole#16
+unsigned int peephole#17
+unsigned int peephole#18
+unsigned int peephole#19
+unsigned int peephole#2
+unsigned int peephole#20
+unsigned int peephole#21
+unsigned int peephole#22
+unsigned int peephole#23
+unsigned int peephole#24
+unsigned int peephole#25
+unsigned int peephole#26
+unsigned int peephole#27
+unsigned int peephole#28
+unsigned int peephole#29
+unsigned int peephole#3
+unsigned int peephole#30
+unsigned int peephole#31
+unsigned int peephole#32
+unsigned int peephole#33
+unsigned int peephole#34
+unsigned int peephole#35
+unsigned int peephole#36
+unsigned int peephole#37
+unsigned int peephole#38
+unsigned int peephole#39
+unsigned int peephole#4
+unsigned int peephole#40
+unsigned int peephole#41
+unsigned int peephole#42
+unsigned int peephole#43
+unsigned int peephole#44
+unsigned int peephole#45
+unsigned int peephole#46
+unsigned int peephole#47
+unsigned int peephole#48
+unsigned int peephole#49
+unsigned int peephole#5
+unsigned int peephole#50
+unsigned int peephole#51
+unsigned int peephole#52
+unsigned int peephole#53
+unsigned int peephole#54
+unsigned int peephole#55
+unsigned int peephole#56
+unsigned int peephole#57
+unsigned int peephole#58
+unsigned int peephole#59
+unsigned int peephole#6
+unsigned int peephole#60
+unsigned int peephole#61
+unsigned int peephole#62
+unsigned int peephole#63
+unsigned int peephole#64
+unsigned int peephole#65
+unsigned int peephole#66
+unsigned int peephole#67
+unsigned int peephole#68
+unsigned int peephole#69
+unsigned int peephole#7
+unsigned int peephole#70
+unsigned int peephole#71
+unsigned int peephole#72
+unsigned int peephole#73
+unsigned int peephole#74
+unsigned int peephole#75
+unsigned int peephole#76
+unsigned int peephole#77
+unsigned int peephole#78
+unsigned int peephole#79
+unsigned int peephole#8
+unsigned int peephole#80
+unsigned int peephole#81
+unsigned int peephole#82
+unsigned int peephole#83
+unsigned int peephole#84
+unsigned int peephole#85
+unsigned int peephole#9
+__constant const char play_again[] = "
+
+
+Play Again (Y/N)?"
+__constant char points[] = { 0, 0, 0, 0 }
+void random(char k , char n)
+bool random::$0
+bool random::$1
+bool random::$2
+char random::k
+char random::k#0
+char random::k#1
+char random::k#2
+char random::k#3
+char random::k#4
+char random::n
+char random::n#0
+char random::n#1
+char random::n#2
+char random::n#3
+char random::n#4
+void read_chrono()
+number read_chrono::$0
+number read_chrono::$1
+unsigned int read_chrono::$2
+bool read_chrono::$3
+bool read_chrono::$4
+number read_chrono::$5
+__constant const char red = $1c
+char rem8u
+char rem8u#0
+char rem8u#1
+char rem8u#10
+char rem8u#100
+char rem8u#101
+char rem8u#102
+char rem8u#103
+char rem8u#104
+char rem8u#105
+char rem8u#106
+char rem8u#107
+char rem8u#108
+char rem8u#109
+char rem8u#11
+char rem8u#110
+char rem8u#111
+char rem8u#112
+char rem8u#113
+char rem8u#114
+char rem8u#115
+char rem8u#116
+char rem8u#117
+char rem8u#118
+char rem8u#119
+char rem8u#12
+char rem8u#120
+char rem8u#121
+char rem8u#122
+char rem8u#123
+char rem8u#124
+char rem8u#125
+char rem8u#126
+char rem8u#127
+char rem8u#128
+char rem8u#129
+char rem8u#13
+char rem8u#130
+char rem8u#131
+char rem8u#132
+char rem8u#133
+char rem8u#134
+char rem8u#135
+char rem8u#136
+char rem8u#137
+char rem8u#138
+char rem8u#139
+char rem8u#14
+char rem8u#15
+char rem8u#16
+char rem8u#17
+char rem8u#18
+char rem8u#19
+char rem8u#2
+char rem8u#20
+char rem8u#21
+char rem8u#22
+char rem8u#23
+char rem8u#24
+char rem8u#25
+char rem8u#26
+char rem8u#27
+char rem8u#28
+char rem8u#29
+char rem8u#3
+char rem8u#30
+char rem8u#31
+char rem8u#32
+char rem8u#33
+char rem8u#34
+char rem8u#35
+char rem8u#36
+char rem8u#37
+char rem8u#38
+char rem8u#39
+char rem8u#4
+char rem8u#40
+char rem8u#41
+char rem8u#42
+char rem8u#43
+char rem8u#44
+char rem8u#45
+char rem8u#46
+char rem8u#47
+char rem8u#48
+char rem8u#49
+char rem8u#5
+char rem8u#50
+char rem8u#51
+char rem8u#52
+char rem8u#53
+char rem8u#54
+char rem8u#55
+char rem8u#56
+char rem8u#57
+char rem8u#58
+char rem8u#59
+char rem8u#6
+char rem8u#60
+char rem8u#61
+char rem8u#62
+char rem8u#63
+char rem8u#64
+char rem8u#65
+char rem8u#66
+char rem8u#67
+char rem8u#68
+char rem8u#69
+char rem8u#7
+char rem8u#70
+char rem8u#71
+char rem8u#72
+char rem8u#73
+char rem8u#74
+char rem8u#75
+char rem8u#76
+char rem8u#77
+char rem8u#78
+char rem8u#79
+char rem8u#8
+char rem8u#80
+char rem8u#81
+char rem8u#82
+char rem8u#83
+char rem8u#84
+char rem8u#85
+char rem8u#86
+char rem8u#87
+char rem8u#88
+char rem8u#89
+char rem8u#9
+char rem8u#90
+char rem8u#91
+char rem8u#92
+char rem8u#93
+char rem8u#94
+char rem8u#95
+char rem8u#96
+char rem8u#97
+char rem8u#98
+char rem8u#99
+__constant const char reverse_on = $12
+__constant const char right = $1d
+unsigned int score
+unsigned int score#0
+unsigned int score#1
+unsigned int score#10
+unsigned int score#100
+unsigned int score#101
+unsigned int score#102
+unsigned int score#103
+unsigned int score#104
+unsigned int score#105
+unsigned int score#106
+unsigned int score#107
+unsigned int score#108
+unsigned int score#11
+unsigned int score#12
+unsigned int score#13
+unsigned int score#14
+unsigned int score#15
+unsigned int score#16
+unsigned int score#17
+unsigned int score#18
+unsigned int score#19
+unsigned int score#2
+unsigned int score#20
+unsigned int score#21
+unsigned int score#22
+unsigned int score#23
+unsigned int score#24
+unsigned int score#25
+unsigned int score#26
+unsigned int score#27
+unsigned int score#28
+unsigned int score#29
+unsigned int score#3
+unsigned int score#30
+unsigned int score#31
+unsigned int score#32
+unsigned int score#33
+unsigned int score#34
+unsigned int score#35
+unsigned int score#36
+unsigned int score#37
+unsigned int score#38
+unsigned int score#39
+unsigned int score#4
+unsigned int score#40
+unsigned int score#41
+unsigned int score#42
+unsigned int score#43
+unsigned int score#44
+unsigned int score#45
+unsigned int score#46
+unsigned int score#47
+unsigned int score#48
+unsigned int score#49
+unsigned int score#5
+unsigned int score#50
+unsigned int score#51
+unsigned int score#52
+unsigned int score#53
+unsigned int score#54
+unsigned int score#55
+unsigned int score#56
+unsigned int score#57
+unsigned int score#58
+unsigned int score#59
+unsigned int score#6
+unsigned int score#60
+unsigned int score#61
+unsigned int score#62
+unsigned int score#63
+unsigned int score#64
+unsigned int score#65
+unsigned int score#66
+unsigned int score#67
+unsigned int score#68
+unsigned int score#69
+unsigned int score#7
+unsigned int score#70
+unsigned int score#71
+unsigned int score#72
+unsigned int score#73
+unsigned int score#74
+unsigned int score#75
+unsigned int score#76
+unsigned int score#77
+unsigned int score#78
+unsigned int score#79
+unsigned int score#8
+unsigned int score#80
+unsigned int score#81
+unsigned int score#82
+unsigned int score#83
+unsigned int score#84
+unsigned int score#85
+unsigned int score#86
+unsigned int score#87
+unsigned int score#88
+unsigned int score#89
+unsigned int score#9
+unsigned int score#90
+unsigned int score#91
+unsigned int score#92
+unsigned int score#93
+unsigned int score#94
+unsigned int score#95
+unsigned int score#96
+unsigned int score#97
+unsigned int score#98
+unsigned int score#99
+char textcolor(char color)
+char textcolor::color
+char textcolor::color#0
+char textcolor::color#1
+char textcolor::color#2
+char textcolor::color#3
+char textcolor::color#4
+char textcolor::color#5
+char textcolor::color#6
+char textcolor::color#7
+char textcolor::old
+char textcolor::old#0
+char textcolor::return
+char textcolor::return#0
+char textcolor::return#1
+char textcolor::return#2
+char textcolor::return#3
+char textcolor::return#4
+char textcolor::return#5
+char textcolor::return#6
+char textcolor::return#7
+char textcolor::return#8
+char textcolor::return#9
+unsigned int time
+unsigned int time#0
+unsigned int time#1
+unsigned int time#10
+unsigned int time#11
+unsigned int time#12
+unsigned int time#13
+unsigned int time#14
+unsigned int time#15
+unsigned int time#16
+unsigned int time#17
+unsigned int time#18
+unsigned int time#19
+unsigned int time#2
+unsigned int time#20
+unsigned int time#21
+unsigned int time#22
+unsigned int time#23
+unsigned int time#24
+unsigned int time#25
+unsigned int time#26
+unsigned int time#27
+unsigned int time#28
+unsigned int time#29
+unsigned int time#3
+unsigned int time#30
+unsigned int time#31
+unsigned int time#32
+unsigned int time#33
+unsigned int time#34
+unsigned int time#35
+unsigned int time#36
+unsigned int time#37
+unsigned int time#38
+unsigned int time#39
+unsigned int time#4
+unsigned int time#40
+unsigned int time#41
+unsigned int time#42
+unsigned int time#43
+unsigned int time#44
+unsigned int time#45
+unsigned int time#46
+unsigned int time#47
+unsigned int time#48
+unsigned int time#49
+unsigned int time#5
+unsigned int time#50
+unsigned int time#51
+unsigned int time#52
+unsigned int time#53
+unsigned int time#54
+unsigned int time#55
+unsigned int time#56
+unsigned int time#57
+unsigned int time#58
+unsigned int time#59
+unsigned int time#6
+unsigned int time#60
+unsigned int time#7
+unsigned int time#8
+unsigned int time#9
+unsigned int tu
+unsigned int tu#0
+unsigned int tu#1
+unsigned int tu#10
+unsigned int tu#11
+unsigned int tu#12
+unsigned int tu#13
+unsigned int tu#14
+unsigned int tu#15
+unsigned int tu#16
+unsigned int tu#17
+unsigned int tu#18
+unsigned int tu#19
+unsigned int tu#2
+unsigned int tu#20
+unsigned int tu#21
+unsigned int tu#22
+unsigned int tu#23
+unsigned int tu#24
+unsigned int tu#25
+unsigned int tu#26
+unsigned int tu#27
+unsigned int tu#28
+unsigned int tu#29
+unsigned int tu#3
+unsigned int tu#30
+unsigned int tu#31
+unsigned int tu#32
+unsigned int tu#33
+unsigned int tu#34
+unsigned int tu#35
+unsigned int tu#36
+unsigned int tu#37
+unsigned int tu#38
+unsigned int tu#39
+unsigned int tu#4
+unsigned int tu#40
+unsigned int tu#41
+unsigned int tu#42
+unsigned int tu#43
+unsigned int tu#44
+unsigned int tu#45
+unsigned int tu#46
+unsigned int tu#47
+unsigned int tu#48
+unsigned int tu#49
+unsigned int tu#5
+unsigned int tu#50
+unsigned int tu#51
+unsigned int tu#52
+unsigned int tu#53
+unsigned int tu#54
+unsigned int tu#55
+unsigned int tu#56
+unsigned int tu#57
+unsigned int tu#58
+unsigned int tu#59
+unsigned int tu#6
+unsigned int tu#60
+unsigned int tu#61
+unsigned int tu#62
+unsigned int tu#63
+unsigned int tu#64
+unsigned int tu#65
+unsigned int tu#66
+unsigned int tu#67
+unsigned int tu#68
+unsigned int tu#69
+unsigned int tu#7
+unsigned int tu#70
+unsigned int tu#71
+unsigned int tu#72
+unsigned int tu#73
+unsigned int tu#74
+unsigned int tu#75
+unsigned int tu#76
+unsigned int tu#77
+unsigned int tu#78
+unsigned int tu#79
+unsigned int tu#8
+unsigned int tu#80
+unsigned int tu#81
+unsigned int tu#82
+unsigned int tu#83
+unsigned int tu#84
+unsigned int tu#85
+unsigned int tu#9
+void utoa(unsigned int value , char *buffer , char radix)
+bool utoa::$0
+bool utoa::$1
+char utoa::$10
+char utoa::$11
+bool utoa::$2
+bool utoa::$3
+number utoa::$4
+bool utoa::$5
+bool utoa::$6
+bool utoa::$7
+bool utoa::$8
+unsigned int utoa::$9
+char *utoa::buffer
+char *utoa::buffer#0
+char *utoa::buffer#1
+char *utoa::buffer#10
+char *utoa::buffer#11
+char *utoa::buffer#12
+char *utoa::buffer#13
+char *utoa::buffer#14
+char *utoa::buffer#15
+char *utoa::buffer#16
+char *utoa::buffer#17
+char *utoa::buffer#18
+char *utoa::buffer#19
+char *utoa::buffer#2
+char *utoa::buffer#20
+char *utoa::buffer#21
+char *utoa::buffer#22
+char *utoa::buffer#3
+char *utoa::buffer#4
+char *utoa::buffer#5
+char *utoa::buffer#6
+char *utoa::buffer#7
+char *utoa::buffer#8
+char *utoa::buffer#9
+char utoa::digit
+char utoa::digit#0
+char utoa::digit#1
+char utoa::digit#2
+char utoa::digit#3
+char utoa::digit#4
+char utoa::digit#5
+char utoa::digit#6
+unsigned int utoa::digit_value
+unsigned int utoa::digit_value#0
+unsigned int utoa::digit_value#1
+unsigned int *utoa::digit_values
+unsigned int *utoa::digit_values#0
+unsigned int *utoa::digit_values#1
+unsigned int *utoa::digit_values#10
+unsigned int *utoa::digit_values#2
+unsigned int *utoa::digit_values#3
+unsigned int *utoa::digit_values#4
+unsigned int *utoa::digit_values#5
+unsigned int *utoa::digit_values#6
+unsigned int *utoa::digit_values#7
+unsigned int *utoa::digit_values#8
+unsigned int *utoa::digit_values#9
+char utoa::max_digits
+char utoa::max_digits#0
+char utoa::max_digits#1
+char utoa::max_digits#10
+char utoa::max_digits#2
+char utoa::max_digits#3
+char utoa::max_digits#4
+char utoa::max_digits#5
+char utoa::max_digits#6
+char utoa::max_digits#7
+char utoa::max_digits#8
+char utoa::max_digits#9
+char utoa::radix
+char utoa::radix#0
+char utoa::radix#1
+char utoa::radix#2
+char utoa::radix#3
+char utoa::radix#4
+char utoa::radix#5
+char utoa::started
+char utoa::started#0
+char utoa::started#1
+char utoa::started#2
+char utoa::started#3
+char utoa::started#4
+unsigned int utoa::value
+unsigned int utoa::value#0
+unsigned int utoa::value#1
+unsigned int utoa::value#10
+unsigned int utoa::value#11
+unsigned int utoa::value#12
+unsigned int utoa::value#13
+unsigned int utoa::value#14
+unsigned int utoa::value#15
+unsigned int utoa::value#16
+unsigned int utoa::value#2
+unsigned int utoa::value#3
+unsigned int utoa::value#4
+unsigned int utoa::value#5
+unsigned int utoa::value#6
+unsigned int utoa::value#7
+unsigned int utoa::value#8
+unsigned int utoa::value#9
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+bool utoa_append::$0
+char *utoa_append::buffer
+char *utoa_append::buffer#0
+char *utoa_append::buffer#1
+char *utoa_append::buffer#2
+char *utoa_append::buffer#3
+char *utoa_append::buffer#4
+char utoa_append::digit
+char utoa_append::digit#0
+char utoa_append::digit#1
+char utoa_append::digit#2
+char utoa_append::digit#3
+char utoa_append::digit#4
+unsigned int utoa_append::return
+unsigned int utoa_append::return#0
+unsigned int utoa_append::return#1
+unsigned int utoa_append::return#2
+unsigned int utoa_append::return#3
+unsigned int utoa_append::return#4
+unsigned int utoa_append::sub
+unsigned int utoa_append::sub#0
+unsigned int utoa_append::sub#1
+unsigned int utoa_append::sub#2
+unsigned int utoa_append::sub#3
+unsigned int utoa_append::value
+unsigned int utoa_append::value#0
+unsigned int utoa_append::value#1
+unsigned int utoa_append::value#2
+unsigned int utoa_append::value#3
+unsigned int utoa_append::value#4
+unsigned int utoa_append::value#5
+void wait(char n)
+bool wait::$0
+bool wait::$1
+char wait::n
+char wait::n#0
+char wait::n#1
+char wait::n#10
+char wait::n#2
+char wait::n#3
+char wait::n#4
+char wait::n#5
+char wait::n#6
+char wait::n#7
+char wait::n#8
+char wait::n#9
+void write_score()
+bool write_score::$0
+bool write_score::$1
+bool write_score::$10
+bool write_score::$3
+bool write_score::$4
+bool write_score::$5
+bool write_score::$6
+bool write_score::$9
+unsigned int y
+unsigned int y#0
+unsigned int y#1
+unsigned int y#10
+unsigned int y#100
+unsigned int y#101
+unsigned int y#102
+unsigned int y#103
+unsigned int y#104
+unsigned int y#105
+unsigned int y#106
+unsigned int y#107
+unsigned int y#108
+unsigned int y#109
+unsigned int y#11
+unsigned int y#110
+unsigned int y#111
+unsigned int y#112
+unsigned int y#113
+unsigned int y#114
+unsigned int y#115
+unsigned int y#116
+unsigned int y#117
+unsigned int y#118
+unsigned int y#119
+unsigned int y#12
+unsigned int y#120
+unsigned int y#121
+unsigned int y#122
+unsigned int y#123
+unsigned int y#124
+unsigned int y#125
+unsigned int y#126
+unsigned int y#13
+unsigned int y#14
+unsigned int y#15
+unsigned int y#16
+unsigned int y#17
+unsigned int y#18
+unsigned int y#19
+unsigned int y#2
+unsigned int y#20
+unsigned int y#21
+unsigned int y#22
+unsigned int y#23
+unsigned int y#24
+unsigned int y#25
+unsigned int y#26
+unsigned int y#27
+unsigned int y#28
+unsigned int y#29
+unsigned int y#3
+unsigned int y#30
+unsigned int y#31
+unsigned int y#32
+unsigned int y#33
+unsigned int y#34
+unsigned int y#35
+unsigned int y#36
+unsigned int y#37
+unsigned int y#38
+unsigned int y#39
+unsigned int y#4
+unsigned int y#40
+unsigned int y#41
+unsigned int y#42
+unsigned int y#43
+unsigned int y#44
+unsigned int y#45
+unsigned int y#46
+unsigned int y#47
+unsigned int y#48
+unsigned int y#49
+unsigned int y#5
+unsigned int y#50
+unsigned int y#51
+unsigned int y#52
+unsigned int y#53
+unsigned int y#54
+unsigned int y#55
+unsigned int y#56
+unsigned int y#57
+unsigned int y#58
+unsigned int y#59
+unsigned int y#6
+unsigned int y#60
+unsigned int y#61
+unsigned int y#62
+unsigned int y#63
+unsigned int y#64
+unsigned int y#65
+unsigned int y#66
+unsigned int y#67
+unsigned int y#68
+unsigned int y#69
+unsigned int y#7
+unsigned int y#70
+unsigned int y#71
+unsigned int y#72
+unsigned int y#73
+unsigned int y#74
+unsigned int y#75
+unsigned int y#76
+unsigned int y#77
+unsigned int y#78
+unsigned int y#79
+unsigned int y#8
+unsigned int y#80
+unsigned int y#81
+unsigned int y#82
+unsigned int y#83
+unsigned int y#84
+unsigned int y#85
+unsigned int y#86
+unsigned int y#87
+unsigned int y#88
+unsigned int y#89
+unsigned int y#9
+unsigned int y#90
+unsigned int y#91
+unsigned int y#92
+unsigned int y#93
+unsigned int y#94
+unsigned int y#95
+unsigned int y#96
+unsigned int y#97
+unsigned int y#98
+unsigned int y#99
+__constant const char yellow = $9e
+__constant const char your_score[] = "
+
+
+Your Score: "
+unsigned int z
+unsigned int z#0
+unsigned int z#1
+unsigned int z#10
+unsigned int z#100
+unsigned int z#101
+unsigned int z#102
+unsigned int z#103
+unsigned int z#104
+unsigned int z#105
+unsigned int z#106
+unsigned int z#107
+unsigned int z#108
+unsigned int z#109
+unsigned int z#11
+unsigned int z#110
+unsigned int z#111
+unsigned int z#112
+unsigned int z#113
+unsigned int z#114
+unsigned int z#115
+unsigned int z#116
+unsigned int z#117
+unsigned int z#118
+unsigned int z#119
+unsigned int z#12
+unsigned int z#120
+unsigned int z#121
+unsigned int z#122
+unsigned int z#123
+unsigned int z#124
+unsigned int z#125
+unsigned int z#126
+unsigned int z#127
+unsigned int z#128
+unsigned int z#129
+unsigned int z#13
+unsigned int z#130
+unsigned int z#131
+unsigned int z#132
+unsigned int z#133
+unsigned int z#134
+unsigned int z#135
+unsigned int z#136
+unsigned int z#14
+unsigned int z#15
+unsigned int z#16
+unsigned int z#17
+unsigned int z#18
+unsigned int z#19
+unsigned int z#2
+unsigned int z#20
+unsigned int z#21
+unsigned int z#22
+unsigned int z#23
+unsigned int z#24
+unsigned int z#25
+unsigned int z#26
+unsigned int z#27
+unsigned int z#28
+unsigned int z#29
+unsigned int z#3
+unsigned int z#30
+unsigned int z#31
+unsigned int z#32
+unsigned int z#33
+unsigned int z#34
+unsigned int z#35
+unsigned int z#36
+unsigned int z#37
+unsigned int z#38
+unsigned int z#39
+unsigned int z#4
+unsigned int z#40
+unsigned int z#41
+unsigned int z#42
+unsigned int z#43
+unsigned int z#44
+unsigned int z#45
+unsigned int z#46
+unsigned int z#47
+unsigned int z#48
+unsigned int z#49
+unsigned int z#5
+unsigned int z#50
+unsigned int z#51
+unsigned int z#52
+unsigned int z#53
+unsigned int z#54
+unsigned int z#55
+unsigned int z#56
+unsigned int z#57
+unsigned int z#58
+unsigned int z#59
+unsigned int z#6
+unsigned int z#60
+unsigned int z#61
+unsigned int z#62
+unsigned int z#63
+unsigned int z#64
+unsigned int z#65
+unsigned int z#66
+unsigned int z#67
+unsigned int z#68
+unsigned int z#69
+unsigned int z#7
+unsigned int z#70
+unsigned int z#71
+unsigned int z#72
+unsigned int z#73
+unsigned int z#74
+unsigned int z#75
+unsigned int z#76
+unsigned int z#77
+unsigned int z#78
+unsigned int z#79
+unsigned int z#8
+unsigned int z#80
+unsigned int z#81
+unsigned int z#82
+unsigned int z#83
+unsigned int z#84
+unsigned int z#85
+unsigned int z#86
+unsigned int z#87
+unsigned int z#88
+unsigned int z#89
+unsigned int z#9
+unsigned int z#90
+unsigned int z#91
+unsigned int z#92
+unsigned int z#93
+unsigned int z#94
+unsigned int z#95
+unsigned int z#96
+unsigned int z#97
+unsigned int z#98
+unsigned int z#99
+
+Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0
+Adding number conversion cast (unumber) 5 in utoa::max_digits#1 = 5
+Adding number conversion cast (unumber) 4 in utoa::max_digits#2 = 4
+Adding number conversion cast (unumber) 6 in utoa::max_digits#3 = 6
+Adding number conversion cast (unumber) $10 in utoa::max_digits#4 = $10
+Adding number conversion cast (unumber) 0 in *utoa::buffer#2 = 0
+Adding number conversion cast (unumber) 1 in utoa::$4 = utoa::max_digits#5 - 1
+Adding number conversion cast (unumber) utoa::$4 in utoa::$4 = utoa::max_digits#5 - (unumber)1
+Adding number conversion cast (unumber) 0 in *utoa::buffer#3 = 0
+Adding number conversion cast (unumber) 1 in utoa::started#1 = 1
+Adding number conversion cast (unumber) $19 in gotoxy::$0 = gotoxy::y#4 > $19
+Adding number conversion cast (unumber) $28 in gotoxy::$2 = gotoxy::x#4 >= $28
+Adding number conversion cast (unumber) 0 in gotoxy::y#0 = 0
+Adding number conversion cast (unumber) $28 in gotoxy::line_offset#0 = gotoxy::$7 * $28
+Adding number conversion cast (unumber) 0 in gotoxy::x#0 = 0
+Adding number conversion cast (unumber) $28 in cputc::$1 = conio_cursor_x == $28
+Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text + $28
+Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color + $28
+Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
+Adding number conversion cast (unumber) 0 in cputs::$2 = 0 != cputs::$0
+Adding number conversion cast (unumber) $19 in cscroll::$0 = conio_cursor_y == $19
+Adding number conversion cast (unumber) 0 in cscroll::$7 = 0 != conio_scroll_enable
+Adding number conversion cast (unumber) $28 in memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
+Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#0 = $19*$28-$28
+Adding number conversion cast (unumber) $28 in memcpy::source#1 = (void *)COLORRAM+$28
+Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#1 = $19*$28-$28
+Adding number conversion cast (unumber) $28 in memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-$28
+Adding number conversion cast (unumber) $19*$28 in memset::str#0 = (void *)DEFAULT_SCREEN+$19*$28-(unumber)$28
+Adding number conversion cast (unumber) $28 in memset::num#0 = $28
+Adding number conversion cast (unumber) $28 in memset::str#1 = (void *)COLORRAM+$19*$28-$28
+Adding number conversion cast (unumber) $19*$28 in memset::str#1 = (void *)COLORRAM+$19*$28-(unumber)$28
+Adding number conversion cast (unumber) $28 in memset::num#1 = $28
+Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text - $28
+Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color - $28
+Adding number conversion cast (unumber) 0 in gotoxy::x#1 = 0
+Adding number conversion cast (unumber) 0 in gotoxy::y#1 = 0
+Adding number conversion cast (unumber) $19 in conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+Adding number conversion cast (unumber) 0 in gotoxy::x#2 = 0
+Adding number conversion cast (unumber) $19-1 in conio_c64_init::line#1 = $19-1
+Adding number conversion cast (unumber) 1 in divr8u::$0 = divr8u::rem#5 << 1
+Adding number conversion cast (unumber) $80 in divr8u::$1 = divr8u::dividend#3 & $80
+Adding number conversion cast (unumber) divr8u::$1 in divr8u::$1 = divr8u::dividend#3 & (unumber)$80
+Adding number conversion cast (unumber) 0 in divr8u::$2 = divr8u::$1 != 0
+Adding number conversion cast (unumber) 1 in divr8u::$5 = divr8u::dividend#4 << 1
+Adding number conversion cast (unumber) 1 in divr8u::$6 = divr8u::quotient#3 << 1
+Adding number conversion cast (unumber) 1 in divr8u::$4 = divr8u::rem#7 | 1
+Adding number conversion cast (unumber) divr8u::$4 in divr8u::$4 = divr8u::rem#7 | (unumber)1
+Adding number conversion cast (unumber) 0 in divr8u::rem#3 = 0
+Adding number conversion cast (unumber) 0 in z#0 = 0
+Adding number conversion cast (unumber) $1fa in clear_screen::$2 = z#20 < $1fa
+Adding number conversion cast (unumber) $1e00 in clear_screen::$3 = $1e00 + z#21
+Adding number conversion cast (unumber) clear_screen::$3 in clear_screen::$3 = (unumber)$1e00 + z#21
+Adding number conversion cast (unumber) clear_screen::$4 in clear_screen::$4 = clear_screen::$3 + c
+Adding number conversion cast (unumber) $1e00 in clear_screen::$5 = $1e00 + z#21
+Adding number conversion cast (unumber) clear_screen::$5 in clear_screen::$5 = (unumber)$1e00 + z#21
+Adding number conversion cast (unumber) 0 in gotoxy::x#3 = 0
+Adding number conversion cast (unumber) 0 in gotoxy::y#3 = 0
+Adding number conversion cast (unumber) $fde8 in write_score::$0 = score#13 > $fde8
+Adding number conversion cast (unumber) 0 in m = 0
+Adding number conversion cast (unumber) 0 in score#0 = 0
+Adding number conversion cast (unumber) 4 in write_score::$9 = m < 4
+Adding number conversion cast (unumber) $a in utoa::radix#0 = $a
+Adding number conversion cast (unumber) 9 in write_score::$3 = score#15 > 9
+Adding number conversion cast (unumber) $63 in write_score::$5 = score#16 > $63
+Adding number conversion cast (unumber) 0 in points[2] = buffer[0]
+Adding number conversion cast (unumber) 2 in points[2] = buffer[(unumber)0]
+Adding number conversion cast (unumber) 1 in points[3] = buffer[1]
+Adding number conversion cast (unumber) 3 in points[3] = buffer[(unumber)1]
+Adding number conversion cast (unumber) 4 in *((char *)$d3) = 4
+Adding number conversion cast (unumber) 0 in m = 0
+Adding number conversion cast (unumber) 0 in points[1] = buffer[0]
+Adding number conversion cast (unumber) 1 in points[1] = buffer[(unumber)0]
+Adding number conversion cast (unumber) 1 in points[2] = buffer[1]
+Adding number conversion cast (unumber) 2 in points[2] = buffer[(unumber)1]
+Adding number conversion cast (unumber) 2 in points[3] = buffer[2]
+Adding number conversion cast (unumber) 3 in points[3] = buffer[(unumber)2]
+Adding number conversion cast (unumber) 4 in write_score::$10 = m < 4
+Adding number conversion cast (unumber) 0 in m = 0
+Adding number conversion cast (unumber) 0 in z#3 = 0
+Adding number conversion cast (unumber) $21c in wait::$1 = z#23 < $21c
+Adding number conversion cast (unumber) $100 in read_chrono::$0 = m * $100
+Adding number conversion cast (unumber) read_chrono::$0 in read_chrono::$0 = m * (unumber)$100
+Adding number conversion cast (unumber) read_chrono::$1 in read_chrono::$1 = read_chrono::$0 + l
+Adding number conversion cast (unumber) $3c in div16u8u::divisor#0 = $3c
+Adding number conversion cast (unumber) 7 in *((char *)$1e15+c) = 7
+Adding number conversion cast (unumber) $1e15 in *((char *)$1e15+c) = ((unumber)) 7
+Adding number conversion cast (unumber) $b9 in *((char *)$1e15) = $b9
+Adding number conversion cast (unumber) $a in read_chrono::$3 = time#0 < $a
+Adding number conversion cast (unumber) $b9 in read_chrono::$5 = $b9 - time#9
+Adding number conversion cast (unumber) read_chrono::$5 in read_chrono::$5 = (unumber)$b9 - time#9
+Adding number conversion cast (unumber) 8 in *((char *)$900f) = 8
+Adding number conversion cast (unumber) 0 in m = 0
+Adding number conversion cast (unumber) $28 in main::$2 = m < $28
+Adding number conversion cast (unumber) $1c00 in main::$3 = $1c00 + m
+Adding number conversion cast (unumber) main::$3 in main::$3 = (unumber)$1c00 + m
+Adding number conversion cast (unumber) $20 in clear_screen::n#0 = $20
+Adding number conversion cast (unumber) 0 in clear_screen::m#0 = 0
+Adding number conversion cast (unumber) 7 in textcolor::color#0 = 7
+Adding number conversion cast (unumber) 1 in textcolor::color#1 = 1
+Adding number conversion cast (unumber) 2 in textcolor::color#2 = 2
+Adding number conversion cast (unumber) 5 in main::$11 = l > 5
+Adding number conversion cast (unumber) 4 in clear_screen::n#1 = 4
+Adding number conversion cast (unumber) 0 in clear_screen::m#1 = 0
+Adding number conversion cast (unumber) $ff in *((char *)$9005) = $ff
+Adding number conversion cast (unumber) 1 in k#0 = 1
+Adding number conversion cast (unumber) $16 in main::$16 = k#6 < $16
+Adding number conversion cast (unumber) 2 in n#0 = 2
+Adding number conversion cast (unumber) 2 in *((char *)$1ff9+c) = 2
+Adding number conversion cast (unumber) $1ff9 in *((char *)$1ff9+c) = ((unumber)) 2
+Adding number conversion cast (unumber) 1 in z#8 = 1
+Adding number conversion cast (unumber) 1 in main::$23 = l > 1
+Adding number conversion cast (unumber) $16 in main::$18 = n#7 < $16
+Adding number conversion cast (unumber) $1f1f in peephole#0 = $1f1f
+Adding number conversion cast (unumber) $f in *((char *)$900e) = $f
+Adding number conversion cast (unumber) 0 in score#2 = 0
+Adding number conversion cast (unumber) 1 in tu#0 = 1
+Adding number conversion cast (unumber) $50 in chrout::petscii = $50
+Adding number conversion cast (unumber) $54 in chrout::petscii = $54
+Adding number conversion cast (unumber) $53 in chrout::petscii = $53
+Adding number conversion cast (unumber) $3a in chrout::petscii = $3a
+Adding number conversion cast (unumber) $12 in *((char *)$d3) = $12
+Adding number conversion cast (unumber) 0 in j#0 = 0
+Adding number conversion cast (unumber) 7 in main::$25 = 7 - l
+Adding number conversion cast (unumber) main::$25 in main::$25 = (unumber)7 - l
+Adding number conversion cast (unumber) 3 in main::$26 = 3 * l
+Adding number conversion cast (unumber) main::$26 in main::$26 = (unumber)3 * l
+Adding number conversion cast (unumber) $1a in main::$27 = $1a - main::$26
+Adding number conversion cast (unumber) main::$27 in main::$27 = (unumber)$1a - main::$26
+Adding number conversion cast (unumber) $1f9 in main::$30 = main::$29 > $1f9
+Adding number conversion cast (unumber) 1 in j#1 = 1
+Adding number conversion cast (unumber) 1 in main::$36 = main::$35 + 1
+Adding number conversion cast (unumber) main::$36 in main::$36 = main::$35 + (unumber)1
+Adding number conversion cast (unumber) $1fa in main::$37 = z#9 < $1fa
+Adding number conversion cast (unumber) 4 in main::$44 = j#13 < 4
+Adding number conversion cast (unumber) $a in *((char *)$d3) = $a
+Adding number conversion cast (unumber) 0 in j#4 = 0
+Adding number conversion cast (unumber) 5 in main::$49 = j#16 < 5
+Adding number conversion cast (unumber) $f in *((char *)$d3) = $f
+Adding number conversion cast (unumber) $a in main::$54 = tu#6 < $a
+Adding number conversion cast (unumber) $30 in main::$57 = $30 + tu#7
+Adding number conversion cast (unumber) main::$57 in main::$57 = (unumber)$30 + tu#7
+Adding number conversion cast (unumber) $31 in chrout::petscii = $31
+Adding number conversion cast (unumber) $30 in chrout::petscii = $30
+Adding number conversion cast (unumber) 0 in random::k#1 = 0
+Adding number conversion cast (unumber) $ff in random::n#1 = $ff
+Adding number conversion cast (unumber) 0 in random::k#2 = 0
+Adding number conversion cast (unumber) $ff in random::n#2 = $ff
+Adding number conversion cast (unumber) $1e15 in main::$61 = m + $1e15
+Adding number conversion cast (unumber) main::$61 in main::$61 = m + (unumber)$1e15
+Adding number conversion cast (unumber) main::$62 in main::$62 = main::$61 + duck#6
+Adding number conversion cast (unumber) $1fe3 in main::$63 = duck#1 > $1fe3
+Adding number conversion cast (unumber) 1 in main::$66 = duck#1 + 1
+Adding number conversion cast (unumber) main::$66 in main::$66 = duck#1 + (unumber)1
+Adding number conversion cast (unumber) $16 in main::$69 = duck#1 + $16
+Adding number conversion cast (unumber) main::$69 in main::$69 = duck#1 + (unumber)$16
+Adding number conversion cast (unumber) $17 in main::$72 = duck#1 + $17
+Adding number conversion cast (unumber) main::$72 in main::$72 = duck#1 + (unumber)$17
+Adding number conversion cast (unumber) 0 in time#2 = 0
+Adding number conversion cast (unumber) $a in main::$76 = time#11 < $a
+Adding number conversion cast (unumber) $7f in *((char *)$9122) = $7f
+Adding number conversion cast (unumber) $ff in *((char *)$9122) = $ff
+Adding number conversion cast (unumber) $10 in main::$78 = $10 & m
+Adding number conversion cast (unumber) main::$78 in main::$78 = (unumber)$10 & m
+Adding number conversion cast (unumber) 0 in main::$79 = main::$78 == 0
+Adding number conversion cast (unumber) $a in main::$147 = score#19 - $a
+Adding number conversion cast (unumber) main::$147 in main::$147 = score#19 - (unumber)$a
+Adding number conversion cast (unumber) $82 in *((char *)$900d) = $82
+Adding number conversion cast (unumber) $14 in wait::n#0 = $14
+Adding number conversion cast (unumber) 0 in *((char *)$900d) = 0
+Adding number conversion cast (unumber) 0 in *((char *)main::$150) = 0
+Adding number conversion cast (unumber) 1 in main::$151 = duck#7 + 1
+Adding number conversion cast (unumber) main::$151 in main::$151 = duck#7 + (unumber)1
+Adding number conversion cast (unumber) main::$152 in main::$152 = main::$151 + c
+Adding number conversion cast (unumber) 0 in *((char *)main::$152) = 0
+Adding number conversion cast (unumber) $16 in main::$153 = duck#7 + $16
+Adding number conversion cast (unumber) main::$153 in main::$153 = duck#7 + (unumber)$16
+Adding number conversion cast (unumber) main::$154 in main::$154 = main::$153 + c
+Adding number conversion cast (unumber) 0 in *((char *)main::$154) = 0
+Adding number conversion cast (unumber) $17 in main::$155 = duck#7 + $17
+Adding number conversion cast (unumber) main::$155 in main::$155 = duck#7 + (unumber)$17
+Adding number conversion cast (unumber) main::$156 in main::$156 = main::$155 + c
+Adding number conversion cast (unumber) 0 in *((char *)main::$156) = 0
+Adding number conversion cast (unumber) $b in main::$157 = tu#9 < $b
+Adding number conversion cast (unumber) $80 in main::$81 = $80 & n#9
+Adding number conversion cast (unumber) main::$81 in main::$81 = (unumber)$80 & n#9
+Adding number conversion cast (unumber) 0 in main::$82 = main::$81 == 0
+Adding number conversion cast (unumber) 4 in main::$84 = 4 & m
+Adding number conversion cast (unumber) main::$84 in main::$84 = (unumber)4 & m
+Adding number conversion cast (unumber) 0 in main::$85 = main::$84 == 0
+Adding number conversion cast (unumber) 8 in main::$88 = 8 & m
+Adding number conversion cast (unumber) main::$88 in main::$88 = (unumber)8 & m
+Adding number conversion cast (unumber) 0 in main::$89 = main::$88 == 0
+Adding number conversion cast (unumber) $16 in main::$87 = y#11 - $16
+Adding number conversion cast (unumber) main::$87 in main::$87 = y#11 - (unumber)$16
+Adding number conversion cast (unumber) $20 in main::$92 = $20 & m
+Adding number conversion cast (unumber) main::$92 in main::$92 = (unumber)$20 & m
+Adding number conversion cast (unumber) 0 in main::$93 = main::$92 == 0
+Adding number conversion cast (unumber) $16 in main::$91 = y#12 + $16
+Adding number conversion cast (unumber) main::$91 in main::$91 = y#12 + (unumber)$16
+Adding number conversion cast (unumber) 1 in main::$104 = y#13 + 1
+Adding number conversion cast (unumber) main::$104 in main::$104 = y#13 + (unumber)1
+Adding number conversion cast (unumber) $16 in main::$107 = y#13 + $16
+Adding number conversion cast (unumber) main::$107 in main::$107 = y#13 + (unumber)$16
+Adding number conversion cast (unumber) $17 in main::$110 = y#13 + $17
+Adding number conversion cast (unumber) main::$110 in main::$110 = y#13 + (unumber)$17
+Adding number conversion cast (unumber) $1e16 in main::$113 = y#13 > $1e16
+Adding number conversion cast (unumber) $1fe3 in main::$115 = y#13 < $1fe3
+Adding number conversion cast (unumber) $82 in *((char *)$900d) = $82
+Adding number conversion cast (unumber) $a in main::$100 = score#21 - $a
+Adding number conversion cast (unumber) main::$100 in main::$100 = score#21 - (unumber)$a
+Adding number conversion cast (unumber) $a in wait::n#1 = $a
+Adding number conversion cast (unumber) $c in main::$96 = $c - time#13
+Adding number conversion cast (unumber) main::$96 in main::$96 = (unumber)$c - time#13
+Adding number conversion cast (unumber) $a in main::$97 = main::$96 * $a
+Adding number conversion cast (unumber) main::$97 in main::$97 = main::$96 * (unumber)$a
+Adding number conversion cast (unumber) main::$98 in main::$98 = score#23 + main::$97
+Adding number conversion cast (unumber) $a in wait::n#2 = $a
+Adding number conversion cast (unumber) $a in time#4 = $a
+Adding number conversion cast (unumber) 0 in *((char *)$900d) = 0
+Adding number conversion cast (unumber) $fd in *((char *)peephole#7) = $fd
+Adding number conversion cast (unumber) 1 in *((char *)main::$125) = 1
+Adding number conversion cast (unumber) 1 in main::$126 = peephole#7 + 1
+Adding number conversion cast (unumber) main::$126 in main::$126 = peephole#7 + (unumber)1
+Adding number conversion cast (unumber) $ed in *((char *)main::$126) = $ed
+Adding number conversion cast (unumber) 1 in main::$127 = peephole#7 + 1
+Adding number conversion cast (unumber) main::$127 in main::$127 = peephole#7 + (unumber)1
+Adding number conversion cast (unumber) main::$128 in main::$128 = main::$127 + c
+Adding number conversion cast (unumber) 1 in *((char *)main::$128) = 1
+Adding number conversion cast (unumber) $16 in main::$129 = peephole#7 + $16
+Adding number conversion cast (unumber) main::$129 in main::$129 = peephole#7 + (unumber)$16
+Adding number conversion cast (unumber) $ee in *((char *)main::$129) = $ee
+Adding number conversion cast (unumber) $16 in main::$130 = peephole#7 + $16
+Adding number conversion cast (unumber) main::$130 in main::$130 = peephole#7 + (unumber)$16
+Adding number conversion cast (unumber) main::$131 in main::$131 = main::$130 + c
+Adding number conversion cast (unumber) 1 in *((char *)main::$131) = 1
+Adding number conversion cast (unumber) $17 in main::$132 = peephole#7 + $17
+Adding number conversion cast (unumber) main::$132 in main::$132 = peephole#7 + (unumber)$17
+Adding number conversion cast (unumber) $f0 in *((char *)main::$132) = $f0
+Adding number conversion cast (unumber) $17 in main::$133 = peephole#7 + $17
+Adding number conversion cast (unumber) main::$133 in main::$133 = peephole#7 + (unumber)$17
+Adding number conversion cast (unumber) main::$134 in main::$134 = main::$133 + c
+Adding number conversion cast (unumber) 1 in *((char *)main::$134) = 1
+Adding number conversion cast (unumber) 5 in wait::n#3 = 5
+Adding number conversion cast (unumber) 0 in *((char *)duck#9) = 0
+Adding number conversion cast (unumber) 7 in *((char *)main::$136) = 7
+Adding number conversion cast (unumber) 1 in main::$137 = duck#9 + 1
+Adding number conversion cast (unumber) main::$137 in main::$137 = duck#9 + (unumber)1
+Adding number conversion cast (unumber) 1 in *((char *)main::$137) = 1
+Adding number conversion cast (unumber) 1 in main::$138 = duck#9 + 1
+Adding number conversion cast (unumber) main::$138 in main::$138 = duck#9 + (unumber)1
+Adding number conversion cast (unumber) main::$139 in main::$139 = main::$138 + c
+Adding number conversion cast (unumber) 7 in *((char *)main::$139) = 7
+Adding number conversion cast (unumber) $16 in main::$140 = duck#9 + $16
+Adding number conversion cast (unumber) main::$140 in main::$140 = duck#9 + (unumber)$16
+Adding number conversion cast (unumber) 2 in *((char *)main::$140) = 2
+Adding number conversion cast (unumber) $16 in main::$141 = duck#9 + $16
+Adding number conversion cast (unumber) main::$141 in main::$141 = duck#9 + (unumber)$16
+Adding number conversion cast (unumber) main::$142 in main::$142 = main::$141 + c
+Adding number conversion cast (unumber) 7 in *((char *)main::$142) = 7
+Adding number conversion cast (unumber) $17 in main::$143 = duck#9 + $17
+Adding number conversion cast (unumber) main::$143 in main::$143 = duck#9 + (unumber)$17
+Adding number conversion cast (unumber) 3 in *((char *)main::$143) = 3
+Adding number conversion cast (unumber) $17 in main::$144 = duck#9 + $17
+Adding number conversion cast (unumber) main::$144 in main::$144 = duck#9 + (unumber)$17
+Adding number conversion cast (unumber) main::$145 in main::$145 = main::$144 + c
+Adding number conversion cast (unumber) 7 in *((char *)main::$145) = 7
+Adding number conversion cast (unumber) 5 in wait::n#4 = 5
+Adding number conversion cast (unumber) 0 in *((char *)main::$118) = 0
+Adding number conversion cast (unumber) 1 in main::$120 = main::$119 + 1
+Adding number conversion cast (unumber) main::$120 in main::$120 = main::$119 + (unumber)1
+Adding number conversion cast (unumber) 0 in *((char *)main::$120) = 0
+Adding number conversion cast (unumber) $16 in main::$122 = main::$121 + $16
+Adding number conversion cast (unumber) main::$122 in main::$122 = main::$121 + (unumber)$16
+Adding number conversion cast (unumber) 0 in *((char *)main::$122) = 0
+Adding number conversion cast (unumber) $17 in main::$124 = main::$123 + $17
+Adding number conversion cast (unumber) main::$124 in main::$124 = main::$123 + (unumber)$17
+Adding number conversion cast (unumber) 0 in *((char *)main::$124) = 0
+Adding number conversion cast (unumber) 4 in clear_screen::n#2 = 4
+Adding number conversion cast (unumber) 0 in clear_screen::m#2 = 0
+Adding number conversion cast (unumber) $f0 in *((char *)$9005) = $f0
+Adding number conversion cast (unumber) 7 in textcolor::color#3 = 7
+Adding number conversion cast (unumber) 2 in textcolor::color#4 = 2
+Adding number conversion cast (unumber) 3 in textcolor::color#5 = 3
+Adding number conversion cast (unumber) $a in utoa::radix#1 = $a
+Adding number conversion cast (unumber) 1 in textcolor::color#6 = 1
+Adding number conversion cast (unumber) $b in main::$173 = j#6 != $b
+Adding number conversion cast (unumber) $1c in main::$174 = j#6 != $1c
+Adding number conversion cast (unumber) $b in main::$176 = j#19 == $b
+Successful SSA optimization PassNAddNumberTypeConversions
+Inlining cast memcpy::src#0 = (char *)memcpy::source#2
+Inlining cast memcpy::dst#0 = (char *)memcpy::destination#2
+Inlining cast memset::dst#0 = (char *)memset::str#3
+Inlining cast utoa::max_digits#1 = (unumber)5
+Inlining cast utoa::max_digits#2 = (unumber)4
+Inlining cast utoa::max_digits#3 = (unumber)6
+Inlining cast utoa::max_digits#4 = (unumber)$10
+Inlining cast *utoa::buffer#2 = (unumber)0
+Inlining cast *utoa::buffer#3 = (unumber)0
+Inlining cast utoa::started#1 = (unumber)1
+Inlining cast gotoxy::y#0 = (unumber)0
+Inlining cast gotoxy::x#0 = (unumber)0
+Inlining cast conio_cursor_x = (unumber)0
+Inlining cast memcpy::num#0 = (unumber)$19*$28-$28
+Inlining cast memcpy::num#1 = (unumber)$19*$28-$28
+Inlining cast memset::num#0 = (unumber)$28
+Inlining cast memset::num#1 = (unumber)$28
+Inlining cast gotoxy::x#1 = (unumber)0
+Inlining cast gotoxy::y#1 = (unumber)0
+Inlining cast gotoxy::x#2 = (unumber)0
+Inlining cast conio_c64_init::line#1 = (unumber)$19-1
+Inlining cast divr8u::rem#3 = (unumber)0
+Inlining cast z#0 = (unumber)0
+Inlining cast gotoxy::x#3 = (unumber)0
+Inlining cast gotoxy::y#3 = (unumber)0
+Inlining cast m = (unumber)0
+Inlining cast score#0 = (unumber)0
+Inlining cast utoa::radix#0 = (unumber)$a
+Inlining cast *((char *)$d3) = (unumber)4
+Inlining cast m = (unumber)0
+Inlining cast m = (unumber)0
+Inlining cast z#3 = (unumber)0
+Inlining cast div16u8u::divisor#0 = (unumber)$3c
+Inlining cast *((char *)(unumber)$1e15+c) = (unumber)7
+Inlining cast *((char *)$1e15) = (unumber)$b9
+Inlining cast *((char *)$900f) = (unumber)8
+Inlining cast m = (unumber)0
+Inlining cast clear_screen::n#0 = (unumber)$20
+Inlining cast clear_screen::m#0 = (unumber)0
+Inlining cast textcolor::color#0 = (unumber)7
+Inlining cast textcolor::color#1 = (unumber)1
+Inlining cast textcolor::color#2 = (unumber)2
+Inlining cast clear_screen::n#1 = (unumber)4
+Inlining cast clear_screen::m#1 = (unumber)0
+Inlining cast *((char *)$9005) = (unumber)$ff
+Inlining cast k#0 = (unumber)1
+Inlining cast n#0 = (unumber)2
+Inlining cast *((char *)(unumber)$1ff9+c) = (unumber)2
+Inlining cast z#8 = (unumber)1
+Inlining cast peephole#0 = (unumber)$1f1f
+Inlining cast *((char *)$900e) = (unumber)$f
+Inlining cast score#2 = (unumber)0
+Inlining cast tu#0 = (unumber)1
+Inlining cast chrout::petscii = (unumber)$50
+Inlining cast chrout::petscii = (unumber)$54
+Inlining cast chrout::petscii = (unumber)$53
+Inlining cast chrout::petscii = (unumber)$3a
+Inlining cast *((char *)$d3) = (unumber)$12
+Inlining cast j#0 = (unumber)0
+Inlining cast j#1 = (unumber)1
+Inlining cast *((char *)$d3) = (unumber)$a
+Inlining cast j#4 = (unumber)0
+Inlining cast *((char *)$d3) = (unumber)$f
+Inlining cast chrout::petscii = (unumber)$31
+Inlining cast chrout::petscii = (unumber)$30
+Inlining cast random::k#1 = (unumber)0
+Inlining cast random::n#1 = (unumber)$ff
+Inlining cast random::k#2 = (unumber)0
+Inlining cast random::n#2 = (unumber)$ff
+Inlining cast time#2 = (unumber)0
+Inlining cast *((char *)$9122) = (unumber)$7f
+Inlining cast *((char *)$9122) = (unumber)$ff
+Inlining cast *((char *)$900d) = (unumber)$82
+Inlining cast wait::n#0 = (unumber)$14
+Inlining cast *((char *)$900d) = (unumber)0
+Inlining cast *((char *)main::$150) = (unumber)0
+Inlining cast *((char *)main::$152) = (unumber)0
+Inlining cast *((char *)main::$154) = (unumber)0
+Inlining cast *((char *)main::$156) = (unumber)0
+Inlining cast *((char *)$900d) = (unumber)$82
+Inlining cast wait::n#1 = (unumber)$a
+Inlining cast wait::n#2 = (unumber)$a
+Inlining cast time#4 = (unumber)$a
+Inlining cast *((char *)$900d) = (unumber)0
+Inlining cast *((char *)peephole#7) = (unumber)$fd
+Inlining cast *((char *)main::$125) = (unumber)1
+Inlining cast *((char *)main::$126) = (unumber)$ed
+Inlining cast *((char *)main::$128) = (unumber)1
+Inlining cast *((char *)main::$129) = (unumber)$ee
+Inlining cast *((char *)main::$131) = (unumber)1
+Inlining cast *((char *)main::$132) = (unumber)$f0
+Inlining cast *((char *)main::$134) = (unumber)1
+Inlining cast wait::n#3 = (unumber)5
+Inlining cast *((char *)duck#9) = (unumber)0
+Inlining cast *((char *)main::$136) = (unumber)7
+Inlining cast *((char *)main::$137) = (unumber)1
+Inlining cast *((char *)main::$139) = (unumber)7
+Inlining cast *((char *)main::$140) = (unumber)2
+Inlining cast *((char *)main::$142) = (unumber)7
+Inlining cast *((char *)main::$143) = (unumber)3
+Inlining cast *((char *)main::$145) = (unumber)7
+Inlining cast wait::n#4 = (unumber)5
+Inlining cast *((char *)main::$118) = (unumber)0
+Inlining cast *((char *)main::$120) = (unumber)0
+Inlining cast *((char *)main::$122) = (unumber)0
+Inlining cast *((char *)main::$124) = (unumber)0
+Inlining cast clear_screen::n#2 = (unumber)4
+Inlining cast clear_screen::m#2 = (unumber)0
+Inlining cast *((char *)$9005) = (unumber)$f0
+Inlining cast textcolor::color#3 = (unumber)7
+Inlining cast textcolor::color#4 = (unumber)2
+Inlining cast textcolor::color#5 = (unumber)3
+Inlining cast utoa::radix#1 = (unumber)$a
+Inlining cast textcolor::color#6 = (unumber)1
+Successful SSA optimization Pass2InlineCast
+Simplifying constant pointer cast (char *) 55296
+Simplifying constant pointer cast (char *) 1024
+Simplifying constant pointer cast (char *) 214
+Simplifying constant integer cast 0
+Simplifying constant integer cast 5
+Simplifying constant integer cast 4
+Simplifying constant integer cast 6
+Simplifying constant integer cast $10
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $19
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast $19
+Simplifying constant integer cast 0
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast $19
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $80
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast $1fa
+Simplifying constant integer cast $1e00
+Simplifying constant integer cast $1e00
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant pointer cast (char *) 37140
+Simplifying constant integer cast $fde8
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast 4
+Simplifying constant integer cast $a
+Simplifying constant integer cast 9
+Simplifying constant integer cast $63
+Simplifying constant integer cast 0
+Simplifying constant integer cast 2
+Simplifying constant integer cast 1
+Simplifying constant integer cast 3
+Simplifying constant integer cast 4
+Simplifying constant pointer cast (char *) 211
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 2
+Simplifying constant integer cast 2
+Simplifying constant integer cast 3
+Simplifying constant integer cast 4
+Simplifying constant integer cast 0
+Simplifying constant integer cast 0
+Simplifying constant integer cast $21c
+Simplifying constant integer cast $100
+Simplifying constant integer cast $3c
+Simplifying constant integer cast 7
+Simplifying constant integer cast $1e15
+Simplifying constant integer cast $b9
+Simplifying constant pointer cast (char *) 7701
+Simplifying constant integer cast $a
+Simplifying constant integer cast $b9
+Simplifying constant pointer cast (char *) 7701
+Simplifying constant integer cast 8
+Simplifying constant pointer cast (char *) 36879
+Simplifying constant integer cast 0
+Simplifying constant integer cast $28
+Simplifying constant integer cast $1c00
+Simplifying constant integer cast $20
+Simplifying constant integer cast 0
+Simplifying constant integer cast 7
+Simplifying constant integer cast 1
+Simplifying constant integer cast 2
+Simplifying constant pointer cast (char *) 197
+Simplifying constant integer cast 5
+Simplifying constant integer cast 4
+Simplifying constant integer cast 0
+Simplifying constant integer cast $ff
+Simplifying constant pointer cast (char *) 36869
+Simplifying constant integer cast 1
+Simplifying constant integer cast $16
+Simplifying constant integer cast 2
+Simplifying constant pointer cast (char *) 8185
+Simplifying constant integer cast 2
+Simplifying constant integer cast $1ff9
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $16
+Simplifying constant integer cast $1f1f
+Simplifying constant integer cast $f
+Simplifying constant pointer cast (char *) 36878
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $50
+Simplifying constant integer cast $54
+Simplifying constant integer cast $53
+Simplifying constant integer cast $3a
+Simplifying constant integer cast $12
+Simplifying constant pointer cast (char *) 211
+Simplifying constant integer cast 0
+Simplifying constant integer cast 7
+Simplifying constant integer cast 3
+Simplifying constant integer cast $1a
+Simplifying constant integer cast $1f9
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $1fa
+Simplifying constant integer cast 4
+Simplifying constant integer cast $a
+Simplifying constant pointer cast (char *) 211
+Simplifying constant integer cast 0
+Simplifying constant integer cast 5
+Simplifying constant integer cast $f
+Simplifying constant pointer cast (char *) 211
+Simplifying constant integer cast $a
+Simplifying constant integer cast $30
+Simplifying constant integer cast $31
+Simplifying constant integer cast $30
+Simplifying constant integer cast 0
+Simplifying constant integer cast $ff
+Simplifying constant integer cast 0
+Simplifying constant integer cast $ff
+Simplifying constant integer cast $1e15
+Simplifying constant integer cast $1fe3
+Simplifying constant integer cast 1
+Simplifying constant integer cast $16
+Simplifying constant integer cast $17
+Simplifying constant integer cast 0
+Simplifying constant integer cast $a
+Simplifying constant pointer cast (char *) 37151
+Simplifying constant integer cast $7f
+Simplifying constant pointer cast (char *) 37154
+Simplifying constant pointer cast (char *) 37152
+Simplifying constant integer cast $ff
+Simplifying constant pointer cast (char *) 37154
+Simplifying constant integer cast $10
+Simplifying constant integer cast 0
+Simplifying constant integer cast $a
+Simplifying constant integer cast $82
+Simplifying constant pointer cast (char *) 36877
+Simplifying constant integer cast $14
+Simplifying constant integer cast 0
+Simplifying constant pointer cast (char *) 36877
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 0
+Simplifying constant integer cast $16
+Simplifying constant integer cast 0
+Simplifying constant integer cast $17
+Simplifying constant integer cast 0
+Simplifying constant integer cast $b
+Simplifying constant integer cast $80
+Simplifying constant integer cast 0
+Simplifying constant integer cast 4
+Simplifying constant integer cast 0
+Simplifying constant integer cast 8
+Simplifying constant integer cast 0
+Simplifying constant integer cast $16
+Simplifying constant integer cast $20
+Simplifying constant integer cast 0
+Simplifying constant integer cast $16
+Simplifying constant integer cast 1
+Simplifying constant integer cast $16
+Simplifying constant integer cast $17
+Simplifying constant integer cast $1e16
+Simplifying constant integer cast $1fe3
+Simplifying constant integer cast $82
+Simplifying constant pointer cast (char *) 36877
+Simplifying constant integer cast $a
+Simplifying constant integer cast $a
+Simplifying constant integer cast $c
+Simplifying constant integer cast $a
+Simplifying constant integer cast $a
+Simplifying constant integer cast $a
+Simplifying constant integer cast 0
+Simplifying constant pointer cast (char *) 36877
+Simplifying constant integer cast $fd
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $ed
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $16
+Simplifying constant integer cast $ee
+Simplifying constant integer cast $16
+Simplifying constant integer cast 1
+Simplifying constant integer cast $17
+Simplifying constant integer cast $f0
+Simplifying constant integer cast $17
+Simplifying constant integer cast 1
+Simplifying constant integer cast 5
+Simplifying constant integer cast 0
+Simplifying constant integer cast 7
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 7
+Simplifying constant integer cast $16
+Simplifying constant integer cast 2
+Simplifying constant integer cast $16
+Simplifying constant integer cast 7
+Simplifying constant integer cast $17
+Simplifying constant integer cast 3
+Simplifying constant integer cast $17
+Simplifying constant integer cast 7
+Simplifying constant integer cast 5
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast 0
+Simplifying constant integer cast $16
+Simplifying constant integer cast 0
+Simplifying constant integer cast $17
+Simplifying constant integer cast 0
+Simplifying constant integer cast 4
+Simplifying constant integer cast 0
+Simplifying constant integer cast $f0
+Simplifying constant pointer cast (char *) 36869
+Simplifying constant integer cast 7
+Simplifying constant integer cast 2
+Simplifying constant integer cast 3
+Simplifying constant integer cast $a
+Simplifying constant integer cast 1
+Simplifying constant pointer cast (char *) 197
+Simplifying constant integer cast $b
+Simplifying constant integer cast $1c
+Simplifying constant integer cast $b
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 5
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 6
+Finalized unsigned number type (char) $10
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $80
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (unsigned int) $1fa
+Finalized unsigned number type (unsigned int) $1e00
+Finalized unsigned number type (unsigned int) $1e00
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (unsigned int) $fde8
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) 9
+Finalized unsigned number type (char) $63
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 3
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 3
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (unsigned int) $21c
+Finalized unsigned number type (unsigned int) $100
+Finalized unsigned number type (char) $3c
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (unsigned int) $1e15
+Finalized unsigned number type (char) $b9
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $b9
+Finalized unsigned number type (char) 8
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (unsigned int) $1c00
+Finalized unsigned number type (char) $20
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 5
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $ff
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (unsigned int) $1ff9
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (unsigned int) $1f1f
+Finalized unsigned number type (char) $f
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $50
+Finalized unsigned number type (char) $54
+Finalized unsigned number type (char) $53
+Finalized unsigned number type (char) $3a
+Finalized unsigned number type (char) $12
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) 3
+Finalized unsigned number type (char) $1a
+Finalized unsigned number type (unsigned int) $1f9
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (unsigned int) $1fa
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 5
+Finalized unsigned number type (char) $f
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $30
+Finalized unsigned number type (char) $31
+Finalized unsigned number type (char) $30
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $ff
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $ff
+Finalized unsigned number type (unsigned int) $1e15
+Finalized unsigned number type (unsigned int) $1fe3
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $7f
+Finalized unsigned number type (char) $ff
+Finalized unsigned number type (char) $10
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $82
+Finalized unsigned number type (char) $14
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $b
+Finalized unsigned number type (char) $80
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 8
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) $20
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (unsigned int) $1e16
+Finalized unsigned number type (unsigned int) $1fe3
+Finalized unsigned number type (char) $82
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $c
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $fd
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $ed
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) $ee
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) $f0
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 5
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 3
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) 5
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $16
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $17
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $f0
+Finalized unsigned number type (char) 7
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 3
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) $b
+Finalized unsigned number type (char) $1c
+Finalized unsigned number type (char) $b
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inferred type updated to char in utoa::$4 = utoa::max_digits#5 - 1
+Inferred type updated to char in divr8u::$1 = divr8u::dividend#3 & $80
+Inferred type updated to char in divr8u::$4 = divr8u::rem#7 | 1
+Inferred type updated to unsigned int in clear_screen::$3 = $1e00 + z#21
+Inferred type updated to unsigned int in clear_screen::$4 = clear_screen::$3 + c
+Inferred type updated to unsigned int in clear_screen::$5 = $1e00 + z#21
+Inferred type updated to unsigned int in read_chrono::$0 = m * $100
+Inferred type updated to unsigned int in read_chrono::$1 = read_chrono::$0 + l
+Inferred type updated to unsigned int in read_chrono::$5 = $b9 - time#9
+Inferred type updated to unsigned int in main::$3 = $1c00 + m
+Inferred type updated to char in main::$25 = 7 - l
+Inferred type updated to char in main::$26 = 3 * l
+Inferred type updated to char in main::$27 = $1a - main::$26
+Inferred type updated to unsigned int in main::$36 = main::$35 + 1
+Inferred type updated to unsigned int in main::$57 = $30 + tu#7
+Inferred type updated to unsigned int in main::$61 = m + $1e15
+Inferred type updated to unsigned int in main::$62 = main::$61 + duck#6
+Inferred type updated to unsigned int in main::$66 = duck#1 + 1
+Inferred type updated to unsigned int in main::$69 = duck#1 + $16
+Inferred type updated to unsigned int in main::$72 = duck#1 + $17
+Inferred type updated to char in main::$78 = $10 & m
+Inferred type updated to unsigned int in main::$147 = score#19 - $a
+Inferred type updated to unsigned int in main::$151 = duck#7 + 1
+Inferred type updated to unsigned int in main::$152 = main::$151 + c
+Inferred type updated to unsigned int in main::$153 = duck#7 + $16
+Inferred type updated to unsigned int in main::$154 = main::$153 + c
+Inferred type updated to unsigned int in main::$155 = duck#7 + $17
+Inferred type updated to unsigned int in main::$156 = main::$155 + c
+Inferred type updated to char in main::$81 = $80 & n#9
+Inferred type updated to char in main::$84 = 4 & m
+Inferred type updated to char in main::$88 = 8 & m
+Inferred type updated to unsigned int in main::$87 = y#11 - $16
+Inferred type updated to char in main::$92 = $20 & m
+Inferred type updated to unsigned int in main::$91 = y#12 + $16
+Inferred type updated to unsigned int in main::$104 = y#13 + 1
+Inferred type updated to unsigned int in main::$107 = y#13 + $16
+Inferred type updated to unsigned int in main::$110 = y#13 + $17
+Inferred type updated to unsigned int in main::$100 = score#21 - $a
+Inferred type updated to unsigned int in main::$96 = $c - time#13
+Inferred type updated to unsigned int in main::$97 = main::$96 * $a
+Inferred type updated to unsigned int in main::$98 = score#23 + main::$97
+Inferred type updated to unsigned int in main::$126 = peephole#7 + 1
+Inferred type updated to unsigned int in main::$127 = peephole#7 + 1
+Inferred type updated to unsigned int in main::$128 = main::$127 + c
+Inferred type updated to unsigned int in main::$129 = peephole#7 + $16
+Inferred type updated to unsigned int in main::$130 = peephole#7 + $16
+Inferred type updated to unsigned int in main::$131 = main::$130 + c
+Inferred type updated to unsigned int in main::$132 = peephole#7 + $17
+Inferred type updated to unsigned int in main::$133 = peephole#7 + $17
+Inferred type updated to unsigned int in main::$134 = main::$133 + c
+Inferred type updated to unsigned int in main::$137 = duck#9 + 1
+Inferred type updated to unsigned int in main::$138 = duck#9 + 1
+Inferred type updated to unsigned int in main::$139 = main::$138 + c
+Inferred type updated to unsigned int in main::$140 = duck#9 + $16
+Inferred type updated to unsigned int in main::$141 = duck#9 + $16
+Inferred type updated to unsigned int in main::$142 = main::$141 + c
+Inferred type updated to unsigned int in main::$143 = duck#9 + $17
+Inferred type updated to unsigned int in main::$144 = duck#9 + $17
+Inferred type updated to unsigned int in main::$145 = main::$144 + c
+Inferred type updated to unsigned int in main::$120 = main::$119 + 1
+Inferred type updated to unsigned int in main::$122 = main::$121 + $16
+Inferred type updated to unsigned int in main::$124 = main::$123 + $17
+Inversing boolean not [19] memset::$1 = memset::num#2 <= 0 from [18] memset::$0 = memset::num#2 > 0
+Inversing boolean not [119] gotoxy::$1 = gotoxy::y#4 <= $19 from [118] gotoxy::$0 = gotoxy::y#4 > $19
+Inversing boolean not [123] gotoxy::$3 = gotoxy::x#4 < $28 from [122] gotoxy::$2 = gotoxy::x#4 >= $28
+Inversing boolean not [148] cputc::$2 = conio_cursor_x != $28 from [147] cputc::$1 = conio_cursor_x == $28
+Inversing boolean not [179] cscroll::$1 = conio_cursor_y != $19 from [178] cscroll::$0 = conio_cursor_y == $19
+Inversing boolean not [212] conio_c64_init::$1 = conio_c64_init::line#0 < $19 from [211] conio_c64_init::$0 = conio_c64_init::line#0 >= $19
+Inversing boolean not [228] divr8u::$3 = divr8u::$1 == 0 from [227] divr8u::$2 = divr8u::$1 != 0
+Inversing boolean not [236] divr8u::$8 = divr8u::rem#6 < divr8u::divisor#2 from [235] divr8u::$7 = divr8u::rem#6 >= divr8u::divisor#2
+Inversing boolean not [316] write_score::$1 = score#13 <= $fde8 from [315] write_score::$0 = score#13 > $fde8
+Inversing boolean not [334] write_score::$4 = score#15 <= 9 from [333] write_score::$3 = score#15 > 9
+Inversing boolean not [338] write_score::$6 = score#16 <= $63 from [337] write_score::$5 = score#16 > $63
+Inversing boolean not [401] read_chrono::$4 = time#0 >= $a from [400] read_chrono::$3 = time#0 < $a
+Inversing boolean not [494] main::$24 = l <= 1 from [493] main::$23 = l > 1
+Inversing boolean not [544] main::$31 = main::$29 <= $1f9 from [543] main::$30 = main::$29 > $1f9
+Inversing boolean not [662] main::$80 = main::$78 != 0 from [661] main::$79 = main::$78 == 0
+Inversing boolean not [693] main::$83 = main::$81 != 0 from [692] main::$82 = main::$81 == 0
+Inversing boolean not [700] main::$86 = main::$84 != 0 from [699] main::$85 = main::$84 == 0
+Inversing boolean not [707] main::$90 = main::$88 != 0 from [706] main::$89 = main::$88 == 0
+Inversing boolean not [715] main::$94 = main::$92 != 0 from [714] main::$93 = main::$92 == 0
+Inversing boolean not [857] main::$168 = score#24 <= hiscore#5 from [856] main::$167 = score#24 > hiscore#5
+Successful SSA optimization Pass2UnaryNotSimplification
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias memcpy::src#2 = memcpy::src#3
+Alias memcpy::dst#2 = memcpy::dst#3
+Alias memcpy::src_end#1 = memcpy::src_end#2
+Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1
+Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1
+Alias memset::str#3 = memset::str#4
+Alias memset::num#2 = memset::num#3
+Alias memset::c#4 = memset::c#5
+Alias memset::c#2 = memset::c#3
+Alias memset::dst#2 = memset::dst#3
+Alias memset::end#1 = memset::end#2
+Alias memset::str#5 = memset::str#6
+Alias utoa::value#10 = utoa::value#9 utoa::value#13 utoa::value#14 utoa::value#15 utoa::value#11 utoa::value#16 utoa::value#12
+Alias utoa::buffer#11 = utoa::buffer#18 utoa::buffer#22 utoa::buffer#17 utoa::buffer#19 utoa::buffer#14 utoa::buffer#20 utoa::buffer#21 utoa::buffer#7
+Alias utoa::radix#2 = utoa::radix#3 utoa::radix#4 utoa::radix#5
+Alias utoa::digit#2 = utoa::digit#3 utoa::digit#6 utoa::digit#5
+Alias utoa::digit_values#10 = utoa::digit_values#5 utoa::digit_values#6 utoa::digit_values#9
+Alias utoa::value#3 = utoa::value#6 utoa::value#4 utoa::value#5
+Alias utoa::started#2 = utoa::started#3
+Alias utoa::buffer#10 = utoa::buffer#13 utoa::buffer#12 utoa::buffer#8 utoa::buffer#9
+Alias utoa::max_digits#10 = utoa::max_digits#8 utoa::max_digits#5 utoa::max_digits#9
+Alias utoa::digit_value#0 = utoa::digit_value#1
+Alias utoa_append::return#0 = utoa_append::return#3
+Alias utoa::value#0 = utoa::$9
+Alias utoa_append::digit#2 = utoa_append::digit#4 utoa_append::digit#3
+Alias utoa_append::value#2 = utoa_append::value#3 utoa_append::value#4 utoa_append::return#1 utoa_append::return#4 utoa_append::return#2
+Alias utoa_append::sub#1 = utoa_append::sub#2
+Alias utoa_append::buffer#1 = utoa_append::buffer#4 utoa_append::buffer#2
+Alias gotoxy::x#6 = gotoxy::x#7
+Alias gotoxy::y#6 = gotoxy::y#7
+Alias cputc::c#1 = cputc::c#2
+Alias cputs::c#1 = cputs::$0 cputs::c#2
+Alias cputs::s#0 = cputs::s#13 cputs::s#12
+Alias textcolor::return#0 = textcolor::old#0 textcolor::return#9 textcolor::return#1
+Alias divr8u::rem#0 = divr8u::$0 divr8u::rem#7
+Alias divr8u::dividend#0 = divr8u::$5 divr8u::dividend#8
+Alias divr8u::quotient#1 = divr8u::$6 divr8u::quotient#4
+Alias divr8u::dividend#3 = divr8u::dividend#7
+Alias divr8u::quotient#6 = divr8u::quotient#7
+Alias divr8u::divisor#4 = divr8u::divisor#5
+Alias divr8u::i#5 = divr8u::i#6
+Alias divr8u::rem#1 = divr8u::$4
+Alias divr8u::rem#6 = divr8u::rem#8
+Alias divr8u::divisor#2 = divr8u::divisor#3
+Alias divr8u::i#3 = divr8u::i#4
+Alias divr8u::rem#2 = divr8u::$9
+Alias divr8u::rem#11 = divr8u::rem#9
+Alias divr8u::return#0 = divr8u::quotient#5 divr8u::quotient#8 divr8u::return#4 divr8u::return#1
+Alias rem8u#0 = rem8u#12 rem8u#1
+Alias divr8u::dividend#1 = div16u8u::$0
+Alias divr8u::return#2 = divr8u::return#5
+Alias div16u8u::dividend#1 = div16u8u::dividend#2
+Alias div16u8u::divisor#1 = div16u8u::divisor#2
+Alias rem8u#13 = rem8u#2
+Alias divr8u::dividend#2 = div16u8u::$2
+Alias divr8u::return#3 = divr8u::return#6
+Alias div16u8u::quotient_hi#0 = div16u8u::quotient_hi#1
+Alias rem8u#14 = rem8u#3 rem8u#15 rem8u#4
+Alias div16u8u::return#0 = div16u8u::quotient#0 div16u8u::return#3 div16u8u::return#1
+Alias z#2 = z#21 z#20 z#65 z#52 z#39 z#22
+Alias clear_screen::m#3 = clear_screen::m#4
+Alias clear_screen::n#3 = clear_screen::n#4
+Alias score#14 = score#39 score#30 score#15 score#31
+Alias score#40 = score#49 score#59
+Alias score#16 = score#68
+Alias score#1 = score#50 score#32 score#41 score#17
+Alias wait::n#5 = wait::n#9
+Alias z#23 = z#24 z#54
+Alias wait::n#10 = wait::n#8 wait::n#7
+Alias z#25 = z#40 z#5
+Alias div16u8u::dividend#0 = read_chrono::$1
+Alias div16u8u::return#2 = div16u8u::return#4
+Alias rem8u#16 = rem8u#5 rem8u#24
+Alias time#0 = read_chrono::$2 time#9
+Alias rem8u#17 = rem8u#6
+Alias time#1 = time#10
+Alias z#67 = z#75 z#82
+Alias rem8u#137 = rem8u#138 rem8u#139
+Alias y#124 = y#125 y#126
+Alias hiscore#120 = hiscore#121 hiscore#122
+Alias n#119 = n#120 n#121
+Alias z#55 = z#66
+Alias rem8u#135 = rem8u#136
+Alias y#122 = y#123
+Alias hiscore#118 = hiscore#119
+Alias n#117 = n#118
+Alias rem8u#127 = rem8u#133 rem8u#134 rem8u#132 rem8u#131 rem8u#130 rem8u#129 rem8u#128
+Alias y#114 = y#120 y#121 y#119 y#118 y#117 y#116 y#115
+Alias hiscore#110 = hiscore#116 hiscore#117 hiscore#115 hiscore#114 hiscore#113 hiscore#112 hiscore#111
+Alias n#109 = n#115 n#116 n#114 n#113 n#112 n#111 n#110
+Alias z#26 = z#6 z#98 z#93 z#88 z#83 z#76 z#68
+Alias z#42 = z#57
+Alias rem8u#113 = rem8u#123 rem8u#126 rem8u#120 rem8u#118 rem8u#116
+Alias y#100 = y#110 y#113 y#107 y#105 y#103
+Alias hiscore#101 = hiscore#106 hiscore#109 hiscore#103 hiscore#99 hiscore#96
+Alias n#100 = n#107 n#108 n#106 n#105 n#103
+Alias z#27 = z#7
+Alias k#101 = k#20 k#6 k#17 k#98 k#95
+Alias rem8u#102 = rem8u#124 rem8u#110 rem8u#121 rem8u#108 rem8u#105
+Alias y#108 = y#111 y#97 y#95 y#92 y#89
+Alias hiscore#104 = hiscore#107 hiscore#93 hiscore#91 hiscore#88 hiscore#85
+Alias n#89 = n#95 n#97 n#92
+Alias n#101 = n#13 n#7 n#8 n#104
+Alias k#11 = k#21 k#14 k#18 k#7
+Alias rem8u#114 = rem8u#125 rem8u#119 rem8u#122 rem8u#117
+Alias y#101 = y#112 y#106 y#109 y#104
+Alias hiscore#100 = hiscore#108 hiscore#102 hiscore#105 hiscore#97
+Alias score#2 = score#92 score#84 score#77 score#69 score#60 score#51
+Alias tu#0 = tu#81 tu#79 tu#77 tu#75 tu#71 tu#66
+Alias rem8u#100 = rem8u#101 rem8u#99 rem8u#98 rem8u#97 rem8u#95 rem8u#93
+Alias y#80 = y#87 y#88 y#86 y#85 y#84 y#82
+Alias z#128 = z#135 z#136 z#134 z#133 z#132 z#130
+Alias peephole#0 = peephole#85 peephole#84 peephole#83 peephole#82 peephole#80 peephole#78
+Alias hiscore#76 = hiscore#83 hiscore#84 hiscore#82 hiscore#81 hiscore#80 hiscore#78
+Alias k#86 = k#93 k#94 k#92 k#91 k#90 k#88
+Alias n#80 = n#87 n#88 n#86 n#85 n#84 n#82
+Alias random::k#0 = main::$25
+Alias random::n#0 = main::$27
+Alias z#28 = z#43 z#69
+Alias rem8u#103 = rem8u#106 rem8u#111
+Alias y#90 = y#93 y#98
+Alias hiscore#86 = hiscore#89 hiscore#94
+Alias k#103 = k#96 k#99
+Alias n#90 = n#93 n#98
+Alias j#11 = j#23 j#12
+Alias z#29 = z#77 z#58 z#70 z#44
+Alias rem8u#104 = rem8u#115 rem8u#109 rem8u#112 rem8u#107
+Alias y#102 = y#96 y#99 y#94 y#91
+Alias hiscore#87 = hiscore#98 hiscore#92 hiscore#95 hiscore#90
+Alias k#100 = k#105 k#102 k#104 k#97
+Alias n#102 = n#96 n#99 n#94 n#91
+Alias z#9 = main::$36
+Alias j#13 = j#14 j#15
+Alias score#29 = score#61 score#42 score#52
+Alias tu#31 = tu#72 tu#58 tu#67 tu#51 tu#43 tu#37
+Alias rem8u#80 = rem8u#96 rem8u#92 rem8u#94 rem8u#90 rem8u#88 rem8u#84
+Alias y#68 = y#83 y#79 y#81 y#78 y#76 y#72
+Alias z#120 = z#131 z#127 z#129 z#126 z#125 z#123
+Alias peephole#69 = peephole#81 peephole#77 peephole#79 peephole#76 peephole#75 peephole#72
+Alias hiscore#69 = hiscore#79 hiscore#75 hiscore#77 hiscore#74 hiscore#73 hiscore#71
+Alias k#79 = k#89 k#85 k#87 k#84 k#83 k#81
+Alias n#73 = n#83 n#79 n#81 n#78 n#77 n#75
+Alias score#105 = score#3 score#18 score#107
+Alias j#16 = j#17 j#18
+Alias tu#27 = tu#38 tu#32
+Alias score#104 = score#108 score#106
+Alias rem8u#77 = rem8u#85 rem8u#81
+Alias y#65 = y#73 y#69
+Alias z#118 = z#124 z#121
+Alias peephole#67 = peephole#73 peephole#70
+Alias hiscore#68 = hiscore#72 hiscore#70
+Alias k#78 = k#82 k#80
+Alias n#72 = n#76 n#74
+Alias tu#13 = tu#18 tu#23 tu#6 tu#7 tu#44 tu#59 tu#52 tu#45
+Alias score#100 = score#102 score#103 score#97 score#93 score#85 score#98 score#94 score#86
+Alias rem8u#48 = rem8u#73 rem8u#75 rem8u#70 rem8u#63 rem8u#55 rem8u#64 rem8u#56 rem8u#49
+Alias y#49 = y#61 y#63 y#59 y#56 y#53 y#57 y#54 y#50
+Alias z#102 = z#114 z#116 z#112 z#109 z#106 z#110 z#107 z#103
+Alias peephole#52 = peephole#63 peephole#65 peephole#61 peephole#58 peephole#55 peephole#59 peephole#56 peephole#53
+Alias hiscore#44 = hiscore#65 hiscore#67 hiscore#62 hiscore#56 hiscore#50 hiscore#57 hiscore#51 hiscore#45
+Alias k#54 = k#75 k#77 k#72 k#66 k#60 k#67 k#61 k#55
+Alias n#52 = n#70 n#71 n#69 n#64 n#58 n#65 n#59 n#53
+Alias tu#20 = tu#33 tu#39 tu#28 tu#24
+Alias score#44 = score#70 score#78 score#62 score#53
+Alias rem8u#32 = rem8u#40 rem8u#44 rem8u#37 rem8u#34
+Alias y#36 = y#45 y#47 y#43 y#40
+Alias z#78 = z#94 z#99 z#89 z#84
+Alias peephole#40 = peephole#48 peephole#50 peephole#46 peephole#42
+Alias hiscore#33 = hiscore#38 hiscore#41 hiscore#36 hiscore#34
+Alias k#43 = k#48 k#51 k#46 k#44
+Alias n#41 = n#46 n#49 n#44 n#42
+Alias duck#0 = duck#6
+Alias duck#1 = main::$62 duck#37 duck#31
+Alias time#18 = time#2
+Alias rem8u#25 = rem8u#28 rem8u#86 rem8u#82 rem8u#78 rem8u#91 rem8u#89 rem8u#87 rem8u#83 rem8u#79 rem8u#76 rem8u#74 rem8u#72 rem8u#69 rem8u#61 rem8u#62
+Alias time#11 = time#19 time#60 time#59 time#58 time#57 time#56 time#55 time#54 time#53 time#52 time#51 time#50 time#49 time#47 time#48
+Alias y#18 = y#26 y#31 y#74 y#70 y#66 y#9 y#77 y#75 y#71 y#67 y#64 y#62 y#60 y#58 y#55 y#51 y#52
+Alias peephole#31 = peephole#35 peephole#37 peephole#32 peephole#74 peephole#71 peephole#68 peephole#66 peephole#64 peephole#62 peephole#60 peephole#57 peephole#54 peephole#51 peephole#49 peephole#47 peephole#44 peephole#45
+Alias duck#13 = duck#43 duck#25 duck#39 duck#18 duck#7 duck#38 duck#58 duck#57 duck#56 duck#55 duck#54 duck#53 duck#52 duck#51 duck#50 duck#48 duck#49
+Alias score#19 = score#87 score#33 score#80 score#79
+Alias z#100 = z#71 z#96 z#59 z#45 z#95
+Alias tu#14 = tu#73 tu#69 tu#8 tu#68
+Alias hiscore#10 = hiscore#66 hiscore#31 hiscore#64 hiscore#30 hiscore#29 hiscore#28 hiscore#63 hiscore#27 hiscore#26 hiscore#24 hiscore#22 hiscore#20 hiscore#18 hiscore#16 hiscore#13 hiscore#5
+Alias k#27 = k#76 k#41 k#74 k#40 k#39 k#38 k#73 k#37 k#36 k#35 k#34 k#33 k#32 k#31 k#30 k#29 k#28
+Alias rem8u#18 = rem8u#7 rem8u#71
+Alias time#12 = time#3 time#40
+Alias n#25 = n#38 n#39 n#37 n#36 n#35 n#34 n#33 n#32 n#31 n#30 n#29 n#28 n#27 n#26
+Alias score#4 = main::$147
+Alias tu#1 = tu#15 tu#9 tu#85 tu#84 tu#83 tu#82 tu#80 tu#78 tu#76 tu#74 tu#70 tu#64 tu#65
+Alias score#101 = score#5 score#20 score#99 score#95 score#90 score#82 score#75 score#66 score#57 score#46 score#35 score#24 score#25 hiscore#0
+Alias z#10 = z#30 z#49
+Alias n#14 = n#2
+Alias y#10 = y#19
+Alias peephole#26 = peephole#27
+Alias duck#32 = duck#33
+Alias score#71 = score#72
+Alias time#36 = time#37
+Alias z#90 = z#91
+Alias tu#60 = tu#61
+Alias rem8u#65 = rem8u#66
+Alias hiscore#58 = hiscore#59
+Alias k#68 = k#69
+Alias n#66 = n#9
+Alias y#11 = y#20
+Alias peephole#21 = peephole#22
+Alias duck#26 = duck#27
+Alias score#63 = score#64
+Alias time#31 = time#32
+Alias z#85 = z#86
+Alias tu#53 = tu#54
+Alias rem8u#57 = rem8u#58
+Alias hiscore#52 = hiscore#53
+Alias k#62 = k#63
+Alias n#60 = n#61
+Alias y#2 = main::$87
+Alias y#12 = y#21
+Alias peephole#16 = peephole#17
+Alias duck#19 = duck#20
+Alias score#54 = score#55
+Alias time#27 = time#28
+Alias z#79 = z#80
+Alias tu#46 = tu#47
+Alias rem8u#50 = rem8u#51
+Alias hiscore#46 = hiscore#47
+Alias k#56 = k#57
+Alias n#54 = n#55
+Alias y#3 = main::$91
+Alias peephole#12 = peephole#6 peephole#33 peephole#28 peephole#23 peephole#29 peephole#24
+Alias duck#14 = duck#8 duck#44 duck#40 duck#34 duck#41 duck#35
+Alias score#21 = score#34 score#45 score#23
+Alias time#13 = time#20 time#23 time#45 time#43 time#41
+Alias z#46 = z#61 z#72 z#60 z#47
+Alias y#22 = y#38 y#37 y#32 y#27 y#33 y#28
+Alias tu#40 = tu#63 tu#62 tu#55 tu#48 tu#56 tu#49
+Alias rem8u#45 = rem8u#68 rem8u#67 rem8u#59 rem8u#52 rem8u#60 rem8u#53
+Alias hiscore#42 = hiscore#61 hiscore#60 hiscore#54 hiscore#48 hiscore#55 hiscore#49
+Alias k#52 = k#71 k#70 k#64 k#58 k#65 k#59
+Alias n#50 = n#68 n#67 n#62 n#56 n#63 n#57
+Alias score#6 = main::$100
+Alias score#22 = score#7 score#88
+Alias z#11 = z#31
+Alias score#8 = main::$98 score#89
+Alias z#12 = z#32
+Alias y#35 = y#4 peephole#7 y#41 peephole#43 peephole#39
+Alias duck#15 = duck#9 duck#30
+Alias time#17 = time#24 time#29
+Alias tu#19 = tu#25 tu#29
+Alias score#43 = score#56 score#65
+Alias rem8u#31 = rem8u#35 rem8u#38
+Alias hiscore#32 = hiscore#35 hiscore#37
+Alias k#42 = k#45 k#47
+Alias n#40 = n#43 n#45
+Alias z#13 = z#33
+Alias z#14 = z#34
+Alias peephole#13 = peephole#8
+Alias y#13 = y#14 peephole#1
+Alias z#62 = z#63
+Alias duck#21 = duck#22
+Alias time#33 = time#34
+Alias tu#34 = tu#35
+Alias score#73 = score#74
+Alias rem8u#41 = rem8u#42
+Alias hiscore#39 = hiscore#40
+Alias k#49 = k#50
+Alias n#47 = n#48
+Alias z#104 = z#15 z#35 z#122 z#119 z#117 z#115 z#113 z#111 z#108 z#105
+Alias z#101 = z#97 z#92 z#87 z#81
+Alias k#22 = k#25 k#26 k#24 k#23
+Alias n#20 = n#23 n#24 n#22 n#21
+Alias peephole#30 = peephole#38 peephole#41 peephole#36 peephole#34
+Alias score#67 = score#91 score#96 score#83 score#76
+Alias tu#30 = tu#50 tu#57 tu#42 tu#36
+Alias duck#36 = duck#46 duck#47 duck#45 duck#42
+Alias time#35 = time#44 time#46 time#42 time#39
+Alias rem8u#36 = rem8u#47 rem8u#54 rem8u#43 rem8u#39
+Alias y#39 = y#46 y#48 y#44 y#42
+Alias hiscore#19 = hiscore#25 hiscore#6 hiscore#23 hiscore#21
+Alias j#19 = j#6 j#24 j#20 j#7
+Alias z#16 = z#56 z#74 z#50 z#36
+Alias k#12 = k#15 k#19 k#8 k#2
+Alias n#10 = n#17 n#19 n#15 n#3
+Alias peephole#14 = peephole#19 peephole#25 peephole#9 peephole#2
+Alias score#26 = score#47 score#58 score#36 score#9
+Alias tu#10 = tu#21 tu#26 tu#16 tu#2
+Alias duck#10 = duck#23 duck#29 duck#16 duck#2
+Alias time#14 = time#25 time#30 time#21 time#5
+Alias rem8u#19 = rem8u#29 rem8u#33 rem8u#26 rem8u#8
+Alias y#15 = y#29 y#34 y#24 y#5
+Alias hiscore#1 = hiscore#14 hiscore#17 hiscore#11 hiscore#7
+Alias z#17 = z#64 z#51
+Alias k#13 = k#16 k#3
+Alias n#16 = n#18 n#4
+Alias peephole#15 = peephole#20 peephole#3
+Alias score#10 = score#48 score#37
+Alias tu#17 = tu#22 tu#3
+Alias j#25 = j#26 j#8
+Alias duck#17 = duck#24 duck#3
+Alias time#22 = time#26 time#6
+Alias rem8u#27 = rem8u#30 rem8u#9
+Alias y#25 = y#30 y#6
+Alias hiscore#12 = hiscore#15 hiscore#2
+Alias z#18 = z#37 z#38 z#19
+Alias k#10 = k#4 k#9 k#5
+Alias n#11 = n#5 n#12 n#6
+Alias peephole#10 = peephole#4 peephole#11 peephole#5
+Alias score#11 = score#27 score#28 score#12
+Alias tu#11 = tu#4 tu#12 tu#5
+Alias j#10 = j#9 j#21 j#22
+Alias duck#11 = duck#4 duck#12 duck#5
+Alias time#15 = time#7 time#16 time#8
+Alias rem8u#10 = rem8u#20 rem8u#21 rem8u#11
+Alias y#16 = y#7 y#17 y#8
+Alias hiscore#3 = hiscore#8 hiscore#9 hiscore#4
+Successful SSA optimization Pass2AliasElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias utoa::value#10 = utoa::value#8
+Alias utoa::buffer#11 = utoa::buffer#16
+Alias utoa::digit#2 = utoa::digit#4
+Alias utoa::max_digits#10 = utoa::max_digits#6
+Alias utoa::digit_values#10 = utoa::digit_values#7
+Alias gotoxy::x#4 = gotoxy::x#6
+Alias gotoxy::y#5 = gotoxy::y#6
+Alias divr8u::dividend#3 = divr8u::dividend#4
+Alias divr8u::quotient#3 = divr8u::quotient#6
+Alias divr8u::divisor#2 = divr8u::divisor#4 divr8u::divisor#7
+Alias divr8u::i#2 = divr8u::i#3 divr8u::i#5
+Alias divr8u::dividend#0 = divr8u::dividend#6
+Alias score#14 = score#16 score#40
+Alias rem8u#16 = rem8u#17
+Alias time#0 = time#1
+Alias n#14 = n#66 n#60 n#54 n#50 n#51
+Alias peephole#12 = peephole#26 peephole#31 peephole#21 peephole#16 peephole#18 peephole#30
+Alias duck#13 = duck#32 duck#26 duck#19 duck#14 duck#28 duck#36
+Alias score#19 = score#71 score#63 score#54 score#21
+Alias time#12 = time#36 time#31 time#27 time#13
+Alias z#100 = z#90 z#85 z#79 z#46
+Alias tu#14 = tu#60 tu#53 tu#46 tu#40 tu#41
+Alias rem8u#18 = rem8u#65 rem8u#57 rem8u#50 rem8u#45 rem8u#46
+Alias hiscore#10 = hiscore#58 hiscore#52 hiscore#46 hiscore#42 hiscore#43
+Alias k#22 = k#68 k#27 k#62 k#56 k#52 k#53
+Alias y#22 = y#23
+Alias z#48 = z#62
+Alias duck#15 = duck#21
+Alias time#17 = time#33
+Alias tu#19 = tu#34
+Alias score#43 = score#73
+Alias rem8u#31 = rem8u#41
+Alias hiscore#32 = hiscore#39
+Alias k#42 = k#49
+Alias n#40 = n#47
+Alias z#101 = z#104
+Alias n#20 = n#25
+Alias score#101 = score#67
+Alias tu#1 = tu#30
+Alias time#11 = time#35
+Alias rem8u#25 = rem8u#36
+Alias y#18 = y#39
+Successful SSA optimization Pass2AliasElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias y#13 = y#22
+Alias peephole#12 = peephole#13
+Alias duck#13 = duck#15
+Alias tu#14 = tu#19
+Alias rem8u#18 = rem8u#31
+Alias hiscore#10 = hiscore#32
+Alias k#22 = k#42
+Alias n#14 = n#40
+Successful SSA optimization Pass2AliasElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Identical Phi Values memcpy::src_end#1 memcpy::src_end#0
+Identical Phi Values memcpy::destination#3 memcpy::destination#2
+Identical Phi Values memset::end#1 memset::end#0
+Identical Phi Values memset::str#5 memset::str#3
+Identical Phi Values memset::c#2 memset::c#4
+Identical Phi Values utoa::max_digits#10 utoa::max_digits#7
+Identical Phi Values utoa::digit_values#10 utoa::digit_values#8
+Identical Phi Values utoa_append::value#5 utoa_append::value#0
+Identical Phi Values utoa_append::sub#3 utoa_append::sub#0
+Identical Phi Values utoa_append::buffer#3 utoa_append::buffer#0
+Identical Phi Values utoa_append::sub#1 utoa_append::sub#3
+Identical Phi Values utoa_append::buffer#1 utoa_append::buffer#3
+Identical Phi Values cputc::c#1 cputc::c#0
+Identical Phi Values divr8u::divisor#2 divr8u::divisor#6
+Identical Phi Values div16u8u::dividend#1 div16u8u::dividend#0
+Identical Phi Values div16u8u::divisor#1 div16u8u::divisor#0
+Identical Phi Values rem8u#22 rem8u#23
+Identical Phi Values rem8u#13 rem8u#0
+Identical Phi Values rem8u#14 rem8u#0
+Identical Phi Values clear_screen::m#3 clear_screen::m#5
+Identical Phi Values clear_screen::n#3 clear_screen::n#5
+Identical Phi Values random::k#3 random::k#4
+Identical Phi Values random::n#3 random::n#4
+Identical Phi Values score#14 score#38
+Identical Phi Values score#1 score#14
+Identical Phi Values wait::n#10 wait::n#5
+Identical Phi Values rem8u#23 rem8u#25
+Identical Phi Values rem8u#16 rem8u#14
+Identical Phi Values z#67 z#17
+Identical Phi Values rem8u#137 rem8u#27
+Identical Phi Values y#124 y#25
+Identical Phi Values hiscore#120 hiscore#12
+Identical Phi Values n#119 n#16
+Identical Phi Values z#55 z#67
+Identical Phi Values rem8u#135 rem8u#137
+Identical Phi Values y#122 y#124
+Identical Phi Values hiscore#118 hiscore#120
+Identical Phi Values n#117 n#119
+Identical Phi Values z#26 z#2
+Identical Phi Values z#42 z#26
+Identical Phi Values rem8u#113 rem8u#127
+Identical Phi Values y#100 y#114
+Identical Phi Values hiscore#101 hiscore#110
+Identical Phi Values n#100 n#109
+Identical Phi Values z#27 z#2
+Identical Phi Values k#11 k#101
+Identical Phi Values rem8u#114 rem8u#102
+Identical Phi Values y#101 y#108
+Identical Phi Values hiscore#100 hiscore#104
+Identical Phi Values z#29 z#28
+Identical Phi Values rem8u#104 rem8u#103
+Identical Phi Values y#102 y#90
+Identical Phi Values hiscore#87 hiscore#86
+Identical Phi Values k#100 k#103
+Identical Phi Values n#102 n#90
+Identical Phi Values score#29 score#2
+Identical Phi Values tu#31 tu#0
+Identical Phi Values rem8u#80 rem8u#100
+Identical Phi Values y#68 y#80
+Identical Phi Values z#120 z#128
+Identical Phi Values peephole#69 peephole#0
+Identical Phi Values hiscore#69 hiscore#76
+Identical Phi Values k#79 k#86
+Identical Phi Values n#73 n#80
+Identical Phi Values score#105 score#1
+Identical Phi Values tu#27 tu#31
+Identical Phi Values score#104 score#105
+Identical Phi Values rem8u#77 rem8u#80
+Identical Phi Values y#65 y#68
+Identical Phi Values z#118 z#120
+Identical Phi Values peephole#67 peephole#69
+Identical Phi Values hiscore#68 hiscore#69
+Identical Phi Values k#78 k#79
+Identical Phi Values n#72 n#73
+Identical Phi Values tu#20 tu#13
+Identical Phi Values score#44 score#100
+Identical Phi Values rem8u#32 rem8u#48
+Identical Phi Values y#36 y#49
+Identical Phi Values z#78 z#102
+Identical Phi Values peephole#40 peephole#52
+Identical Phi Values hiscore#33 hiscore#44
+Identical Phi Values k#43 k#54
+Identical Phi Values n#41 n#52
+Identical Phi Values tu#14 tu#20
+Identical Phi Values duck#13 duck#1
+Identical Phi Values hiscore#10 hiscore#33
+Identical Phi Values k#22 k#43
+Identical Phi Values rem8u#18 rem8u#16
+Identical Phi Values time#12 time#0
+Identical Phi Values score#101 score#1
+Identical Phi Values z#10 z#25
+Identical Phi Values score#22 score#1
+Identical Phi Values z#11 z#25
+Identical Phi Values z#12 z#25
+Identical Phi Values z#13 z#25
+Identical Phi Values z#14 z#25
+Identical Phi Values z#101 z#2
+Identical Phi Values z#16 z#101
+Identical Phi Values k#12 k#22
+Identical Phi Values n#10 n#20
+Identical Phi Values peephole#14 peephole#12
+Identical Phi Values score#26 score#101
+Identical Phi Values tu#10 tu#1
+Identical Phi Values duck#10 duck#13
+Identical Phi Values time#14 time#11
+Identical Phi Values rem8u#19 rem8u#25
+Identical Phi Values y#15 y#18
+Identical Phi Values hiscore#1 hiscore#19
+Identical Phi Values z#18 z#16
+Identical Phi Values k#10 k#12
+Identical Phi Values n#11 n#10
+Identical Phi Values peephole#10 peephole#14
+Identical Phi Values score#11 score#26
+Identical Phi Values tu#11 tu#10
+Identical Phi Values j#10 j#19
+Identical Phi Values duck#11 duck#10
+Identical Phi Values time#15 time#14
+Identical Phi Values rem8u#10 rem8u#19
+Identical Phi Values y#16 y#15
+Identical Phi Values hiscore#3 hiscore#1
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identical Phi Values memset::return#0 memset::str#3
+Identical Phi Values wait::n#5 wait::n#6
+Identical Phi Values rem8u#102 rem8u#127
+Identical Phi Values y#108 y#114
+Identical Phi Values hiscore#104 hiscore#110
+Identical Phi Values rem8u#103 rem8u#102
+Identical Phi Values y#90 y#108
+Identical Phi Values hiscore#86 hiscore#104
+Identical Phi Values k#103 k#101
+Identical Phi Values n#90 n#89
+Identical Phi Values score#100 score#38
+Identical Phi Values hiscore#44 hiscore#76
+Identical Phi Values k#54 k#86
+Identical Phi Values z#73 z#25
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identical Phi Values rem8u#100 rem8u#127
+Identical Phi Values y#80 y#114
+Identical Phi Values hiscore#76 hiscore#110
+Identical Phi Values k#86 k#101
+Identical Phi Values n#80 n#89
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identified duplicate assignment right side [290] clear_screen::$5 = $1e00 + z#2
+Identified duplicate assignment right side [770] main::$127 = y#35 + 1
+Identified duplicate assignment right side [775] main::$130 = y#35 + $16
+Identified duplicate assignment right side [780] main::$133 = y#35 + $17
+Identified duplicate assignment right side [792] main::$138 = duck#1 + 1
+Identified duplicate assignment right side [797] main::$141 = duck#1 + $16
+Identified duplicate assignment right side [802] main::$144 = duck#1 + $17
+Identified duplicate assignment right side [812] main::$119 = peephole#12 + c
+Identified duplicate assignment right side [815] main::$121 = peephole#12 + c
+Identified duplicate assignment right side [818] main::$123 = peephole#12 + c
+Successful SSA optimization Pass2DuplicateRValueIdentification
+Simple Condition memcpy::$1 [7] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
+Simple Condition memset::$1 [14] if(memset::num#2<=0) goto memset::@1
+Simple Condition memset::$3 [21] if(memset::dst#2!=memset::end#0) goto memset::@4
+Simple Condition utoa::$0 [29] if(utoa::radix#2==DECIMAL) goto utoa::@1
+Simple Condition utoa::$1 [33] if(utoa::radix#2==HEXADECIMAL) goto utoa::@2
+Simple Condition utoa::$2 [37] if(utoa::radix#2==OCTAL) goto utoa::@3
+Simple Condition utoa::$3 [41] if(utoa::radix#2==BINARY) goto utoa::@4
+Simple Condition utoa::$5 [58] if(utoa::digit#2=utoa_append::sub#0) goto utoa_append::@2
+Simple Condition gotoxy::$1 [90] if(gotoxy::y#4<=$19) goto gotoxy::@1
+Simple Condition gotoxy::$3 [93] if(gotoxy::x#4<$28) goto gotoxy::@2
+Simple Condition cputc::$0 [108] if(cputc::c#0=='
+') goto cputc::@1
+Simple Condition cputc::$2 [114] if(conio_cursor_x!=$28) goto cputc::@return
+Simple Condition cputs::$2 [129] if(0!=cputs::c#1) goto cputs::@2
+Simple Condition cscroll::$1 [138] if(conio_cursor_y!=$19) goto cscroll::@return
+Simple Condition cscroll::$7 [140] if(0!=conio_scroll_enable) goto cscroll::@3
+Simple Condition conio_c64_init::$1 [170] if(conio_c64_init::line#0<$19) goto conio_c64_init::@1
+Simple Condition divr8u::$3 [184] if(divr8u::$1==0) goto divr8u::@2
+Simple Condition divr8u::$8 [189] if(divr8u::rem#6=$a) goto read_chrono::@return
+Simple Condition main::$2 [319] if(m<$28) goto main::@2
+Simple Condition main::$11 [347] if(l>5) goto main::@4
+Simple Condition main::$16 [362] if(k#101<$16) goto main::@7
+Simple Condition main::$24 [374] if(l<=1) goto main::@12
+Simple Condition main::$18 [377] if(n#101<$16) goto main::@10
+Simple Condition main::$31 [410] if(main::$29<=$1f9) goto main::@14
+Simple Condition main::$32 [414] if(j#11<=m) goto main::@16
+Simple Condition main::$37 [423] if(z#9<$1fa) goto main::@13
+Simple Condition main::$44 [426] if(j#13<4) goto main::@19
+Simple Condition main::$49 [440] if(j#16<5) goto main::@22
+Simple Condition main::$54 [453] if(tu#13<$a) goto main::@24
+Simple Condition main::$76 [488] if(time#11<$a) goto main::@28
+Simple Condition main::$80 [497] if(main::$78!=0) goto main::@30
+Simple Condition main::$157 [519] if(tu#1<$b) goto main::@23
+Simple Condition main::$83 [523] if(main::$81!=0) goto main::@31
+Simple Condition main::$86 [528] if(main::$84!=0) goto main::@32
+Simple Condition main::$90 [533] if(main::$88!=0) goto main::@33
+Simple Condition main::$94 [538] if(main::$92!=0) goto main::@34
+Simple Condition main::$95 [559] if(peephole#12!=duck#1) goto main::@35
+Simple Condition main::$168 [654] if(score#38<=hiscore#110) goto main::@48
+Simple Condition main::$176 [674] if(j#19==$b) goto main::@3
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Rewriting ! if()-condition to reversed if() [63] utoa::$8 = ! utoa::$7
+Rewriting || if()-condition to two if()s [62] utoa::$7 = utoa::started#2 || utoa::$6
+Rewriting || if()-condition to two if()s [238] random::$2 = random::$0 || random::$1
+Rewriting || if()-condition to two if()s [482] main::$74 = main::$71 || main::$73
+Rewriting || if()-condition to two if()s [479] main::$71 = main::$68 || main::$70
+Rewriting || if()-condition to two if()s [476] main::$68 = main::$65 || main::$67
+Rewriting || if()-condition to two if()s [473] main::$65 = main::$63 || main::$64
+Rewriting ! if()-condition to reversed if() [555] main::$117 = ! main::$116
+Rewriting && if()-condition to two if()s [554] main::$116 = main::$114 && main::$115
+Rewriting && if()-condition to two if()s [552] main::$114 = main::$112 && main::$113
+Rewriting && if()-condition to two if()s [550] main::$112 = main::$109 && main::$111
+Rewriting && if()-condition to two if()s [547] main::$109 = main::$106 && main::$108
+Rewriting && if()-condition to two if()s [544] main::$106 = main::$103 && main::$105
+Rewriting && if()-condition to two if()s [671] main::$175 = main::$173 && main::$174
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Warning! Adding boolean cast to non-boolean condition utoa::started#2
+Constant right-side identified [143] memcpy::num#0 = (unumber)$19*$28-$28
+Constant right-side identified [148] memcpy::num#1 = (unumber)$19*$28-$28
+Constant right-side identified [175] conio_c64_init::line#1 = (unumber)$19-1
+Successful SSA optimization Pass2ConstantRValueConsolidation
+Constant utoa::max_digits#0 = 0
+Constant utoa::digit_values#0 = (unsigned int *) 0
+Constant utoa::max_digits#1 = 5
+Constant utoa::digit_values#1 = RADIX_DECIMAL_VALUES
+Constant utoa::max_digits#2 = 4
+Constant utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
+Constant utoa::max_digits#3 = 6
+Constant utoa::digit_values#3 = RADIX_OCTAL_VALUES
+Constant utoa::max_digits#4 = $10
+Constant utoa::digit_values#4 = RADIX_BINARY_VALUES
+Constant utoa::started#0 = 0
+Constant utoa::digit#0 = 0
+Constant utoa::started#1 = 1
+Constant utoa_append::digit#0 = 0
+Constant gotoxy::y#0 = 0
+Constant gotoxy::x#0 = 0
+Constant cputs::c#0 = 0
+Constant memcpy::destination#0 = (void *)DEFAULT_SCREEN
+Constant memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
+Constant memcpy::num#0 = (unumber)$19*$28-$28
+Constant memcpy::destination#1 = (void *)COLORRAM
+Constant memcpy::source#1 = (void *)COLORRAM+$28
+Constant memcpy::num#1 = (unumber)$19*$28-$28
+Constant memset::str#0 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28
+Constant memset::c#0 = ' '
+Constant memset::num#0 = $28
+Constant memset::str#1 = (void *)COLORRAM+(unsigned int)$19*$28-$28
+Constant memset::num#1 = $28
+Constant gotoxy::x#1 = 0
+Constant gotoxy::y#1 = 0
+Constant gotoxy::x#2 = 0
+Constant conio_c64_init::line#1 = (unumber)$19-1
+Constant divr8u::quotient#0 = 0
+Constant divr8u::i#0 = 0
+Constant divr8u::rem#3 = 0
+Constant z#0 = 0
+Constant gotoxy::x#3 = 0
+Constant gotoxy::y#3 = 0
+Constant score#0 = 0
+Constant utoa::buffer#5 = buffer
+Constant utoa::radix#0 = $a
+Constant z#3 = 0
+Constant div16u8u::divisor#0 = $3c
+Constant clear_screen::n#0 = $20
+Constant clear_screen::m#0 = 0
+Constant textcolor::color#0 = 7
+Constant cputs::s#1 = intro
+Constant textcolor::color#1 = 1
+Constant cputs::s#2 = levels
+Constant textcolor::color#2 = 2
+Constant cputs::s#3 = foot
+Constant clear_screen::n#1 = 4
+Constant clear_screen::m#1 = 0
+Constant k#0 = 1
+Constant n#0 = 2
+Constant z#8 = 1
+Constant peephole#0 = $1f1f
+Constant score#2 = 0
+Constant tu#0 = 1
+Constant j#0 = 0
+Constant j#1 = 1
+Constant j#4 = 0
+Constant random::k#1 = 0
+Constant random::n#1 = $ff
+Constant random::k#2 = 0
+Constant random::n#2 = $ff
+Constant time#18 = 0
+Constant wait::n#0 = $14
+Constant wait::n#1 = $a
+Constant wait::n#2 = $a
+Constant time#4 = $a
+Constant wait::n#3 = 5
+Constant wait::n#4 = 5
+Constant clear_screen::n#2 = 4
+Constant clear_screen::m#2 = 0
+Constant textcolor::color#3 = 7
+Constant cputs::s#4 = game_over
+Constant textcolor::color#4 = 2
+Constant cputs::s#5 = your_score
+Constant cputs::s#6 = buffer
+Constant textcolor::color#5 = 3
+Constant cputs::s#7 = high_score
+Constant utoa::buffer#6 = buffer
+Constant utoa::radix#1 = $a
+Constant cputs::s#8 = buffer
+Constant textcolor::color#6 = 1
+Constant cputs::s#9 = play_again
+Constant rem8u#27 = 0
+Constant j#25 = 0
+Constant k#13 = 0
+Constant n#16 = 0
+Constant tu#17 = 0
+Constant duck#17 = 0
+Constant peephole#15 = 0
+Constant y#25 = 0
+Constant z#17 = 0
+Constant time#22 = 0
+Constant score#10 = 0
+Constant hiscore#12 = 0
+Constant conio_scroll_enable = 1
+Successful SSA optimization Pass2ConstantIdentification
+Constant divr8u::divisor#0 = div16u8u::divisor#0
+Constant divr8u::divisor#1 = div16u8u::divisor#0
+Successful SSA optimization Pass2ConstantIdentification
+if() condition always true - replacing block destination [140] if(0!=conio_scroll_enable) goto cscroll::@3
+Successful SSA optimization Pass2ConstantIfs
+Resolved ranged next value [192] divr8u::i#1 = ++ divr8u::i#2 to ++
+Resolved ranged comparison value [194] if(divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 to 8
+Rewriting conditional comparison [90] if(gotoxy::y#4<=$19) goto gotoxy::@1
+Rewriting conditional comparison [259] if(score#38<=9) goto write_score::@2
+Rewriting conditional comparison [261] if(score#38<=$63) goto write_score::@3
+Rewriting conditional comparison [347] if(l>5) goto main::@4
+Rewriting conditional comparison [374] if(l<=1) goto main::@12
+Simplifying expression containing zero buffer in [262] points[2] = buffer[0]
+Simplifying expression containing zero buffer in [270] points[1] = buffer[0]
+Successful SSA optimization PassNSimplifyExpressionWithZero
+Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
+Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
+Removing unused block cscroll::@2
+Removing unused block cscroll::@8
+Successful SSA optimization Pass2EliminateUnusedBlocks
+Eliminating unused variable memcpy::return#2 and assignment [104] memcpy::return#2 = memcpy::destination#2
+Eliminating unused variable memcpy::return#3 and assignment [106] memcpy::return#3 = memcpy::destination#2
+Eliminating unused variable memset::return#2 and assignment [108] memset::return#2 = memset::str#3
+Eliminating unused variable memset::return#3 and assignment [111] memset::return#3 = memset::str#3
+Eliminating unused variable - keeping the phi block z#41
+Eliminating unused variable textcolor::return#2 and assignment [234] textcolor::return#2 = textcolor::return#0
+Eliminating unused variable textcolor::return#3 and assignment [237] textcolor::return#3 = textcolor::return#0
+Eliminating unused variable textcolor::return#4 and assignment [240] textcolor::return#4 = textcolor::return#0
+Eliminating unused variable textcolor::return#5 and assignment [471] textcolor::return#5 = textcolor::return#0
+Eliminating unused variable textcolor::return#6 and assignment [474] textcolor::return#6 = textcolor::return#0
+Eliminating unused variable textcolor::return#7 and assignment [478] textcolor::return#7 = textcolor::return#0
+Eliminating unused variable textcolor::return#8 and assignment [486] textcolor::return#8 = textcolor::return#0
+Eliminating unused constant utoa::max_digits#0
+Eliminating unused constant utoa::digit_values#0
+Eliminating unused constant gotoxy::x#1
+Eliminating unused constant gotoxy::y#1
+Eliminating unused constant cputs::c#0
+Eliminating unused constant j#25
+Eliminating unused constant k#13
+Eliminating unused constant tu#17
+Eliminating unused constant duck#17
+Eliminating unused constant peephole#15
+Eliminating unused constant time#22
+Eliminating unused constant score#10
+Eliminating unused constant conio_scroll_enable
+Successful SSA optimization PassNEliminateUnusedVars
+Eliminating unused variable textcolor::return#0 and assignment [99] textcolor::return#0 = conio_textcolor
+Eliminating unused constant z#17
+Successful SSA optimization PassNEliminateUnusedVars
+Adding number conversion cast (unumber) 0 in utoa::$12 = 0 != utoa::started#2
+Adding number conversion cast (unumber) $19+1 in if(gotoxy::y#4<$19+1) goto gotoxy::@1
+Adding number conversion cast (unumber) 1 in if(gotoxy::y#4<(unumber)$19+1) goto gotoxy::@1
+Adding number conversion cast (unumber) 8 in if(divr8u::i#1!=8) goto divr8u::@1
+Adding number conversion cast (unumber) 9+1 in if(score#38<9+1) goto write_score::@2
+Adding number conversion cast (unumber) 1 in if(score#38<(unumber)9+1) goto write_score::@2
+Adding number conversion cast (unumber) $63+1 in if(score#38<$63+1) goto write_score::@3
+Adding number conversion cast (unumber) 1 in if(score#38<(unumber)$63+1) goto write_score::@3
+Adding number conversion cast (unumber) 5+1 in if(l>=5+1) goto main::@4
+Adding number conversion cast (unumber) 1 in if(l>=(unumber)5+1) goto main::@4
+Adding number conversion cast (unumber) 1+1 in if(l<1+1) goto main::@12
+Adding number conversion cast (unumber) 1 in if(l<(unumber)1+1) goto main::@12
+Successful SSA optimization PassNAddNumberTypeConversions
+Simplifying constant integer cast 0
+Simplifying constant integer cast $19+(unumber)1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 8
+Simplifying constant integer cast 9+(unumber)1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $63+(unumber)1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 5+(unumber)1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1+(unumber)1
+Simplifying constant integer cast 1
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 8
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Finalized unsigned number type (char) 1
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias clear_screen::$5 = clear_screen::$3
+Alias main::$127 = main::$126
+Alias main::$130 = main::$129
+Alias main::$133 = main::$132
+Alias main::$138 = main::$137
+Alias main::$141 = main::$140
+Alias main::$144 = main::$143
+Alias main::$119 = main::$118 main::$121 main::$123
+Successful SSA optimization Pass2AliasElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Simple Condition utoa::$12 [42] if(0!=utoa::started#2) goto utoa::@14
+Simple Condition random::$0 [161] if(m$1fe3) goto main::@25
+Simple Condition main::$103 [395] if(*((char *)y#13)!=brick) goto main::@122
+Simple Condition main::$173 [469] if(j#19!=$b) goto main::@123
+Simple Condition utoa::$6 [483] if(utoa::value#3>=utoa::digit_value#0) goto utoa::@14
+Condition not simple random::$1 [484] if(random::$1) goto random::@1
+Introduced intermediate condition variable random::$3 = m
+Simple Condition random::$1 [484] if(random::$3>random::n#4) goto random::@1
+Simple Condition main::$73 [485] if(*((char *)main::$72)==brick) goto main::@25
+Simple Condition main::$70 [486] if(*((char *)main::$69)==brick) goto main::@25
+Simple Condition main::$67 [487] if(*((char *)main::$66)==brick) goto main::@25
+Simple Condition main::$64 [488] if(*((char *)duck#1)==brick) goto main::@25
+Simple Condition main::$115 [489] if(y#13<$1fe3) goto main::@44
+Simple Condition main::$113 [490] if(y#13>$1e16) goto main::@118
+Simple Condition main::$111 [491] if(*((char *)main::$110)!=brick) goto main::@119
+Simple Condition main::$108 [492] if(*((char *)main::$107)!=brick) goto main::@120
+Simple Condition main::$105 [493] if(*((char *)main::$104)!=brick) goto main::@121
+Simple Condition main::$174 [494] if(j#19!=$1c) goto main::@49
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Negating conditional jump and destination [395] if(*((char *)y#13)==brick) goto main::@37
+Negating conditional jump and destination [469] if(j#19==$b) goto main::@50
+Negating conditional jump and destination [489] if(y#13>=$1fe3) goto main::@37
+Negating conditional jump and destination [491] if(*((char *)main::$110)==brick) goto main::@37
+Negating conditional jump and destination [493] if(*((char *)main::$104)==brick) goto main::@37
+Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Inlining Noop Cast [1] memcpy::src#0 = (char *)memcpy::source#2 keeping memcpy::source#2
+Inlining Noop Cast [2] memcpy::dst#0 = (char *)memcpy::destination#2 keeping memcpy::destination#2
+Inlining Noop Cast [3] memcpy::$2 = (char *)memcpy::source#2 keeping memcpy::source#2
+Inlining Noop Cast [13] memset::$4 = (char *)memset::str#3 keeping memset::str#3
+Inlining Noop Cast [15] memset::dst#0 = (char *)memset::str#3 keeping memset::str#3
+Successful SSA optimization Pass2NopCastInlining
+Rewriting multiplication to use shift [38] utoa::$10 = utoa::digit#2 * SIZEOF_UNSIGNED_INT
+Rewriting multiplication to use shift and addition[68] gotoxy::line_offset#0 = gotoxy::$7 * $28
+Rewriting multiplication to use shift [201] read_chrono::$0 = m * $100
+Rewriting multiplication to use shift and addition[277] main::$26 = 3 * l
+Rewriting multiplication to use shift and addition[388] main::$97 = main::$96 * $a
+Successful SSA optimization Pass2MultiplyToShiftRewriting
+Inlining constant with var siblings memcpy::destination#0
+Inlining constant with var siblings memcpy::source#0
+Inlining constant with var siblings memcpy::num#0
+Inlining constant with var siblings memcpy::destination#1
+Inlining constant with var siblings memcpy::source#1
+Inlining constant with var siblings memcpy::num#1
+Inlining constant with var siblings memset::str#0
+Inlining constant with var siblings memset::c#0
+Inlining constant with var siblings memset::num#0
+Inlining constant with var siblings memset::str#1
+Inlining constant with var siblings memset::num#1
+Inlining constant with var siblings utoa::max_digits#1
+Inlining constant with var siblings utoa::digit_values#1
+Inlining constant with var siblings utoa::max_digits#2
+Inlining constant with var siblings utoa::digit_values#2
+Inlining constant with var siblings utoa::max_digits#3
+Inlining constant with var siblings utoa::digit_values#3
+Inlining constant with var siblings utoa::max_digits#4
+Inlining constant with var siblings utoa::digit_values#4
+Inlining constant with var siblings utoa::started#0
+Inlining constant with var siblings utoa::digit#0
+Inlining constant with var siblings utoa::started#1
+Inlining constant with var siblings utoa::buffer#5
+Inlining constant with var siblings utoa::radix#0
+Inlining constant with var siblings utoa::buffer#6
+Inlining constant with var siblings utoa::radix#1
+Inlining constant with var siblings utoa_append::digit#0
+Inlining constant with var siblings gotoxy::y#0
+Inlining constant with var siblings gotoxy::x#0
+Inlining constant with var siblings gotoxy::x#2
+Inlining constant with var siblings gotoxy::x#3
+Inlining constant with var siblings gotoxy::y#3
+Inlining constant with var siblings cputs::s#1
+Inlining constant with var siblings cputs::s#2
+Inlining constant with var siblings cputs::s#3
+Inlining constant with var siblings cputs::s#4
+Inlining constant with var siblings cputs::s#5
+Inlining constant with var siblings cputs::s#6
+Inlining constant with var siblings cputs::s#7
+Inlining constant with var siblings cputs::s#8
+Inlining constant with var siblings cputs::s#9
+Inlining constant with var siblings textcolor::color#0
+Inlining constant with var siblings textcolor::color#1
+Inlining constant with var siblings textcolor::color#2
+Inlining constant with var siblings textcolor::color#3
+Inlining constant with var siblings textcolor::color#4
+Inlining constant with var siblings textcolor::color#5
+Inlining constant with var siblings textcolor::color#6
+Inlining constant with var siblings conio_c64_init::line#1
+Inlining constant with var siblings divr8u::quotient#0
+Inlining constant with var siblings divr8u::i#0
+Inlining constant with var siblings divr8u::rem#3
+Inlining constant with var siblings divr8u::divisor#0
+Inlining constant with var siblings divr8u::divisor#1
+Inlining constant with var siblings clear_screen::n#0
+Inlining constant with var siblings clear_screen::m#0
+Inlining constant with var siblings clear_screen::n#1
+Inlining constant with var siblings clear_screen::m#1
+Inlining constant with var siblings clear_screen::n#2
+Inlining constant with var siblings clear_screen::m#2
+Inlining constant with var siblings random::k#1
+Inlining constant with var siblings random::n#1
+Inlining constant with var siblings random::k#2
+Inlining constant with var siblings random::n#2
+Inlining constant with var siblings wait::n#0
+Inlining constant with var siblings wait::n#1
+Inlining constant with var siblings wait::n#2
+Inlining constant with var siblings wait::n#3
+Inlining constant with var siblings wait::n#4
+Inlining constant with var siblings z#0
+Inlining constant with var siblings score#0
+Inlining constant with var siblings z#3
+Inlining constant with var siblings k#0
+Inlining constant with var siblings n#0
+Inlining constant with var siblings z#8
+Inlining constant with var siblings peephole#0
+Inlining constant with var siblings score#2
+Inlining constant with var siblings tu#0
+Inlining constant with var siblings j#0
+Inlining constant with var siblings j#1
+Inlining constant with var siblings j#4
+Inlining constant with var siblings time#18
+Inlining constant with var siblings time#4
+Inlining constant with var siblings rem8u#27
+Inlining constant with var siblings n#16
+Inlining constant with var siblings y#25
+Inlining constant with var siblings hiscore#12
+Constant inlined cputs::s#5 = your_score
+Constant inlined utoa::digit_values#1 = RADIX_DECIMAL_VALUES
+Constant inlined cputs::s#6 = buffer
+Constant inlined cputs::s#3 = foot
+Constant inlined utoa::radix#0 = $a
+Constant inlined cputs::s#4 = game_over
+Constant inlined utoa::radix#1 = $a
+Constant inlined utoa::digit_values#4 = RADIX_BINARY_VALUES
+Constant inlined cputs::s#1 = intro
+Constant inlined cputs::s#2 = levels
+Constant inlined wait::n#4 = 5
+Constant inlined utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
+Constant inlined wait::n#3 = 5
+Constant inlined utoa::digit_values#3 = RADIX_OCTAL_VALUES
+Constant inlined wait::n#2 = $a
+Constant inlined wait::n#1 = $a
+Constant inlined wait::n#0 = $14
+Constant inlined memset::num#1 = $28
+Constant inlined memset::num#0 = $28
+Constant inlined divr8u::i#0 = 0
+Constant inlined random::n#1 = $ff
+Constant inlined time#4 = $a
+Constant inlined random::n#2 = $ff
+Constant inlined rem8u#27 = 0
+Constant inlined clear_screen::m#0 = 0
+Constant inlined tu#0 = 1
+Constant inlined clear_screen::m#1 = 0
+Constant inlined k#0 = 1
+Constant inlined clear_screen::m#2 = 0
+Constant inlined divr8u::rem#3 = 0
+Constant inlined memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
+Constant inlined score#2 = 0
+Constant inlined textcolor::color#6 = 1
+Constant inlined gotoxy::x#3 = 0
+Constant inlined utoa::buffer#6 = buffer
+Constant inlined time#18 = 0
+Constant inlined utoa::buffer#5 = buffer
+Constant inlined gotoxy::x#0 = 0
+Constant inlined gotoxy::x#2 = 0
+Constant inlined utoa::max_digits#1 = 5
+Constant inlined utoa::max_digits#2 = 4
+Constant inlined utoa::max_digits#3 = 6
+Constant inlined y#25 = 0
+Constant inlined memset::c#0 = ' '
+Constant inlined utoa::max_digits#4 = $10
+Constant inlined cputs::s#9 = play_again
+Constant inlined cputs::s#7 = high_score
+Constant inlined cputs::s#8 = buffer
+Constant inlined utoa_append::digit#0 = 0
+Constant inlined divr8u::divisor#1 = div16u8u::divisor#0
+Constant inlined divr8u::divisor#0 = div16u8u::divisor#0
+Constant inlined hiscore#12 = 0
+Constant inlined memcpy::destination#0 = (void *)DEFAULT_SCREEN
+Constant inlined memcpy::destination#1 = (void *)COLORRAM
+Constant inlined textcolor::color#3 = 7
+Constant inlined textcolor::color#2 = 2
+Constant inlined textcolor::color#5 = 3
+Constant inlined conio_c64_init::line#1 = (char)$19-1
+Constant inlined score#0 = 0
+Constant inlined memcpy::source#1 = (void *)COLORRAM+$28
+Constant inlined textcolor::color#4 = 2
+Constant inlined utoa::digit#0 = 0
+Constant inlined textcolor::color#1 = 1
+Constant inlined j#0 = 0
+Constant inlined textcolor::color#0 = 7
+Constant inlined clear_screen::n#0 = $20
+Constant inlined j#1 = 1
+Constant inlined clear_screen::n#1 = 4
+Constant inlined n#0 = 2
+Constant inlined j#4 = 0
+Constant inlined clear_screen::n#2 = 4
+Constant inlined random::k#2 = 0
+Constant inlined random::k#1 = 0
+Constant inlined memset::str#1 = (void *)COLORRAM+(unsigned int)$19*$28-$28
+Constant inlined memset::str#0 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28
+Constant inlined z#0 = 0
+Constant inlined n#16 = 0
+Constant inlined utoa::started#1 = 1
+Constant inlined utoa::started#0 = 0
+Constant inlined z#3 = 0
+Constant inlined z#8 = 1
+Constant inlined memcpy::num#1 = (unsigned int)$19*$28-$28
+Constant inlined divr8u::quotient#0 = 0
+Constant inlined memcpy::num#0 = (unsigned int)$19*$28-$28
+Constant inlined gotoxy::y#3 = 0
+Constant inlined peephole#0 = $1f1f
+Constant inlined gotoxy::y#0 = 0
+Successful SSA optimization Pass2ConstantInlining
+Consolidated array index constant in *(points+2)
+Consolidated array index constant in *(buffer+1)
+Consolidated array index constant in *(points+3)
+Consolidated array index constant in *(points+1)
+Consolidated array index constant in *(buffer+1)
+Consolidated array index constant in *(points+2)
+Consolidated array index constant in *(buffer+2)
+Consolidated array index constant in *(points+3)
+Consolidated constant in assignment main::$152
+Consolidated constant in assignment main::$154
+Consolidated constant in assignment main::$156
+Successful SSA optimization Pass2ConstantAdditionElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias gotoxy::line_offset#0 = gotoxy::$10
+Alias main::$26 = main::$178
+Alias main::$97 = main::$181
+Successful SSA optimization Pass2AliasElimination
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Identical Phi Values memcpy::num#2 (unsigned int)$19*$28-$28
+Identical Phi Values memset::num#2 $28
+Identical Phi Values utoa::radix#2 $a
+Identical Phi Values utoa::buffer#11 buffer
+Identical Phi Values gotoxy::x#4 0
+Identical Phi Values divr8u::divisor#6 div16u8u::divisor#0
+Identical Phi Values clear_screen::m#5 0
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identical Phi Values gotoxy::x#5 0
+Successful SSA optimization Pass2IdenticalPhiElimination
+Constant right-side identified [22] utoa::buffer#0 = ++ buffer
+Successful SSA optimization Pass2ConstantRValueConsolidation
+Constant utoa::buffer#0 = ++buffer
+Successful SSA optimization Pass2ConstantIdentification
+if() condition always false - eliminating [9] if($28<=0) goto memset::@1
+if() condition always true - replacing block destination [17] if($a==DECIMAL) goto utoa::@1
+if() condition always false - eliminating [18] if($a==HEXADECIMAL) goto utoa::@2
+if() condition always false - eliminating [19] if($a==OCTAL) goto utoa::@3
+if() condition always false - eliminating [20] if($a==BINARY) goto utoa::@4
+if() condition always true - replacing block destination [58] if(0<$28) goto gotoxy::@2
+Successful SSA optimization Pass2ConstantIfs
+Eliminating variable utoa::buffer#1 from unused block utoa::@9
+Eliminating variable utoa::buffer#2 from unused block utoa::@9
+Removing unused block utoa::@6
+Removing PHI-reference to removed block (utoa::@2) in block utoa::@5
+Removing PHI-reference to removed block (utoa::@2) in block utoa::@5
+Removing unused block utoa::@2
+Removing unused block utoa::@7
+Removing PHI-reference to removed block (utoa::@3) in block utoa::@5
+Removing PHI-reference to removed block (utoa::@3) in block utoa::@5
+Removing unused block utoa::@3
+Removing unused block utoa::@8
+Removing PHI-reference to removed block (utoa::@4) in block utoa::@5
+Removing PHI-reference to removed block (utoa::@4) in block utoa::@5
+Removing unused block utoa::@4
+Removing unused block utoa::@9
+Removing unused block gotoxy::@4
+Successful SSA optimization Pass2EliminateUnusedBlocks
+Eliminating unused constant BINARY
+Eliminating unused constant OCTAL
+Eliminating unused constant DECIMAL
+Eliminating unused constant HEXADECIMAL
+Eliminating unused constant utoa::buffer#0
+Eliminating unused constant RADIX_BINARY_VALUES
+Eliminating unused constant RADIX_OCTAL_VALUES
+Eliminating unused constant RADIX_HEXADECIMAL_VALUES
+Eliminating unused constant SIZEOF_UNSIGNED_INT
+Successful SSA optimization PassNEliminateUnusedVars
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Identical Phi Values utoa::max_digits#7 5
+Identical Phi Values utoa::digit_values#8 RADIX_DECIMAL_VALUES
+Successful SSA optimization Pass2IdenticalPhiElimination
+Constant right-side identified [19] utoa::$4 = 5 - 1
+Successful SSA optimization Pass2ConstantRValueConsolidation
+Constant utoa::$4 = 5-1
+Successful SSA optimization Pass2ConstantIdentification
+Constant inlined utoa::$4 = 5-1
+Successful SSA optimization Pass2ConstantInlining
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) 8
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $10
+Finalized unsigned number type (char) $b
+Finalized unsigned number type (char) $b
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) $28
+Finalized unsigned number type (char) $19
+Finalized unsigned number type (char) 1
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Simplifying constant integer cast $19-1
+Successful SSA optimization PassNCastSimplification
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Alias candidate removed (volatile)conio_line_text = gotoxy::$5
+Alias candidate removed (volatile)conio_line_color = gotoxy::$6
+Alias candidate removed (volatile)chrout::petscii = main::$57
+Added new block during phi lifting utoa::@17(between utoa::@16 and utoa::@13)
+Added new block during phi lifting gotoxy::@5(between gotoxy and gotoxy::@1)
+Added new block during phi lifting conio_c64_init::@4(between conio_c64_init and conio_c64_init::@1)
+Added new block during phi lifting divr8u::@7(between divr8u::@3 and divr8u::@1)
+Added new block during phi lifting divr8u::@8(between divr8u::@1 and divr8u::@2)
+Added new block during phi lifting divr8u::@9(between divr8u::@2 and divr8u::@3)
+Added new block during phi lifting write_score::@16(between write_score and write_score::@1)
+Added new block during phi lifting main::@124(between main::@50 and main::@3)
+Added new block during phi lifting main::@125(between main::@76 and main::@12)
+Added new block during phi lifting main::@126(between main::@78 and main::@12)
+Added new block during phi lifting main::@127(between main::@78 and main::@13)
+Added new block during phi lifting main::@128(between main::@95 and main::@23)
+Added new block during phi lifting main::@129(between main::@21 and main::@23)
+Fixing phi predecessor for tu#13 to new block ( main::@21 -> main::@129 ) during phi lifting.
+Fixing phi predecessor for peephole#52 to new block ( main::@21 -> main::@129 ) during phi lifting.
+Added new block during phi lifting main::@130(between main::@93 and main::@30)
+Added new block during phi lifting main::@131(between main::@30 and main::@31)
+Added new block during phi lifting main::@132(between main::@31 and main::@32)
+Added new block during phi lifting main::@133(between main::@32 and main::@33)
+Added new block during phi lifting main::@134(between main::@33 and main::@34)
+Added new block during phi lifting main::@135(between main::@34 and main::@37)
+Added new block during phi lifting main::@136(between main::@109 and main::@48)
+Adding NOP phi() at start of __start
+Adding NOP phi() at start of __start::@2
+Adding NOP phi() at start of __start::@1
+Adding NOP phi() at start of __start::@3
+Adding NOP phi() at start of conio_c64_init::@2
+Adding NOP phi() at start of conio_c64_init::@3
+Adding NOP phi() at start of main::@54
+Adding NOP phi() at start of main::@55
+Adding NOP phi() at start of main::@56
+Adding NOP phi() at start of main::@57
+Adding NOP phi() at start of main::@58
+Adding NOP phi() at start of main::@59
+Adding NOP phi() at start of main::@60
+Adding NOP phi() at start of main::@5
+Adding NOP phi() at start of main::@20
+Adding NOP phi() at start of main::@89
+Adding NOP phi() at start of main::@25
+Adding NOP phi() at start of main::@26
+Adding NOP phi() at start of main::@45
+Adding NOP phi() at start of main::@102
+Adding NOP phi() at start of main::@103
+Adding NOP phi() at start of main::@104
+Adding NOP phi() at start of main::@105
+Adding NOP phi() at start of main::@106
+Adding NOP phi() at start of main::@107
+Adding NOP phi() at start of main::@108
+Adding NOP phi() at start of main::@110
+Adding NOP phi() at start of main::@111
+Adding NOP phi() at start of main::@112
+Adding NOP phi() at start of main::@113
+Adding NOP phi() at start of main::@28
+Adding NOP phi() at start of main::@87
+Adding NOP phi() at start of main::@14
+Adding NOP phi() at start of main::@65
+Adding NOP phi() at start of gotoxy::@3
+Adding NOP phi() at start of clear_screen::@3
+Adding NOP phi() at start of clear_screen::@5
+Adding NOP phi() at start of write_score::@4
+Adding NOP phi() at start of wait::@2
+Adding NOP phi() at start of utoa::@1
+Adding NOP phi() at start of cputc::@3
+Adding NOP phi() at start of cputc::@5
+Adding NOP phi() at start of cputc::@1
+Adding NOP phi() at start of cputc::@4
+Adding NOP phi() at start of cputln::@1
+Adding NOP phi() at start of cscroll::@1
+Adding NOP phi() at start of cscroll::@3
+Adding NOP phi() at start of cscroll::@4
+Adding NOP phi() at start of cscroll::@5
+Adding NOP phi() at start of memcpy::@3
+Adding NOP phi() at start of memset::@1
+CALL GRAPH
+Calls in [__start] to conio_c64_init:8 main:11
+Calls in [conio_c64_init] to gotoxy:20
+Calls in [main] to chrout:26 chrout:28 clear_screen:32 textcolor:34 cputs:36 textcolor:38 cputs:40 textcolor:42 cputs:44 clear_screen:50 chrout:53 chrout:55 chrout:57 chrout:62 chrout:66 random:75 chrout:82 chrout:84 chrout:86 chrout:88 chrout:90 chrout:92 write_score:97 chrout:99 chrout:101 chrout:111 chrout:113 chrout:115 chrout:119 chrout:121 random:124 random:126 chrono_restart:138 write_score:150 wait:153 clear_screen:168 chrout:171 textcolor:173 cputs:175 textcolor:177 cputs:179 cputs:181 textcolor:183 cputs:185 utoa:191 cputs:193 textcolor:195 cputs:197 read_chrono:217 wait:252 wait:283 wait:300 write_score:323 wait:325 chrout:337 chrout:340 chrout:344 chrout:351 chrout:358 chrout:362 chrout:367 chrout:372
+Calls in [clear_screen] to gotoxy:400 chrout:402
+Calls in [cputs] to cputc:422
+Calls in [write_score] to utoa:438 chrout:447 chrout:449 chrout:455
+Calls in [utoa] to utoa_append:501
+Calls in [read_chrono] to div16u8u:510
+Calls in [cputc] to cputln:525 cputln:529
+Calls in [div16u8u] to divr8u:542 divr8u:549
+Calls in [cputln] to cscroll:558
+Calls in [cscroll] to memcpy:593 memcpy:595 memset:597 memset:600
+
+Created 78 initial phi equivalence classes
+Coalesced [19] gotoxy::y#8 = gotoxy::y#2
+Coalesced [23] conio_c64_init::line#3 = conio_c64_init::line#0
+Coalesced [58] n#123 = n#109
+Coalesced [73] random::k#5 = random::k#0
+Coalesced [74] random::n#5 = random::n#0
+Coalesced [78] z#146 = z#28
+Coalesced [105] rem8u#141 = rem8u#127
+Coalesced [106] y#128 = y#114
+Coalesced [107] z#149 = z#128
+Coalesced [108] n#126 = n#89
+Coalesced [139] score#113 = score#38
+Coalesced [140] rem8u#144 = rem8u#48
+Coalesced [141] y#131 = y#49
+Coalesced [142] z#152 = z#102
+Coalesced [143] peephole#88 = peephole#52
+Coalesced [144] n#129 = n#52
+Coalesced [149] score#109 = score#4
+Coalesced [152] z#140 = z#100
+Coalesced [187] hiscore#125 = score#38
+Coalesced [190] utoa::value#17 = utoa::value#2
+Coalesced (already) [205] rem8u#140 = rem8u#25
+Coalesced (already) [206] y#127 = y#18
+Not coalescing [207] hiscore#123 = hiscore#19
+Coalesced (already) [208] n#122 = n#20
+Not coalescing [209] hiscore#124 = hiscore#110
+Coalesced [210] tu#86 = tu#1
+Coalesced (already) [211] rem8u#142 = rem8u#25
+Coalesced (already) [212] y#129 = y#18
+Coalesced [213] z#150 = z#25
+Coalesced (already) [214] peephole#86 = peephole#12
+Coalesced (already) [215] n#127 = n#20
+Coalesced [225] y#132 = y#0
+Coalesced [230] y#135 = y#1
+Coalesced [235] y#137 = y#2
+Coalesced [240] y#139 = y#3
+Coalesced (already) [251] z#139 = z#100
+Coalesced [253] score#117 = score#8
+Coalesced [256] z#154 = z#25
+Coalesced [257] time#63 = time#38
+Coalesced [258] score#115 = score#81
+Coalesced (already) [282] z#138 = z#48
+Coalesced (already) [299] z#142 = z#25
+Coalesced [301] time#61 = time#17
+Coalesced [302] score#112 = score#43
+Coalesced [303] rem8u#143 = rem8u#0
+Not coalescing [304] y#130 = y#35
+Coalesced (already) [305] z#151 = z#25
+Coalesced [306] peephole#87 = y#35
+Coalesced [307] n#128 = n#14
+Not coalescing [319] y#141 = y#13
+Coalesced (already) [320] y#140 = peephole#12
+Coalesced [322] score#110 = score#6
+Coalesced (already) [324] z#141 = z#100
+Coalesced [326] time#64 = time#0
+Coalesced (already) [327] score#116 = score#38
+Coalesced (already) [328] z#153 = z#100
+Coalesced (already) [329] time#62 = time#0
+Coalesced (already) [330] score#114 = score#19
+Coalesced [331] y#138 = y#12
+Coalesced [332] y#136 = y#11
+Coalesced [333] y#134 = y#10
+Coalesced [334] y#133 = y#18
+Coalesced [342] j#29 = j#5
+Coalesced [346] j#28 = j#3
+Coalesced [355] z#147 = z#9
+Coalesced (already) [356] z#148 = z#9
+Coalesced [360] j#27 = j#2
+Coalesced [369] k#106 = k#1
+Coalesced [370] n#124 = n#101
+Coalesced [374] n#125 = n#1
+Coalesced [393] gotoxy::y#9 = gotoxy::y#4
+Coalesced [410] z#137 = z#1
+Coalesced [415] cputs::s#14 = cputs::s#11
+Coalesced [423] cputs::s#15 = cputs::s#0
+Coalesced [437] utoa::value#18 = utoa::value#1
+Coalesced [459] score#111 = score#13
+Coalesced (already) [464] z#143 = z#53
+Coalesced [472] z#144 = z#23
+Coalesced [474] z#145 = z#4
+Coalesced [477] utoa::value#20 = utoa::value#10
+Coalesced [489] utoa::value#21 = utoa::value#3
+Coalesced [490] utoa::started#6 = utoa::started#2
+Coalesced [491] utoa::buffer#24 = utoa::buffer#10
+Coalesced [494] utoa::digit#7 = utoa::digit#1
+Coalesced (already) [495] utoa::value#19 = utoa::value#7
+Coalesced (already) [496] utoa::started#5 = utoa::started#4
+Coalesced (already) [497] utoa::buffer#23 = utoa::buffer#15
+Coalesced [505] utoa::value#22 = utoa::value#0
+Coalesced [506] utoa::buffer#25 = utoa::buffer#4
+Coalesced [512] time#0 = div16u8u::return#2
+Coalesced [531] utoa_append::value#6 = utoa_append::value#0
+Coalesced [538] utoa_append::value#7 = utoa_append::value#1
+Coalesced [539] utoa_append::digit#5 = utoa_append::digit#1
+Coalesced [541] divr8u::dividend#9 = divr8u::dividend#1
+Coalesced [547] divr8u::rem#12 = divr8u::rem#4
+Coalesced [548] divr8u::dividend#10 = divr8u::dividend#2
+Coalesced [562] divr8u::rem#13 = divr8u::rem#10
+Coalesced [563] divr8u::dividend#11 = divr8u::dividend#5
+Coalesced [569] divr8u::rem#16 = divr8u::rem#1
+Coalesced [576] divr8u::rem#18 = divr8u::rem#2
+Coalesced [577] divr8u::return#8 = divr8u::quotient#2
+Coalesced [581] rem8u#0 = divr8u::rem#11
+Coalesced [583] divr8u::rem#14 = divr8u::rem#11
+Coalesced [584] divr8u::dividend#12 = divr8u::dividend#0
+Coalesced [585] divr8u::quotient#9 = divr8u::return#0
+Coalesced [586] divr8u::i#7 = divr8u::i#1
+Coalesced [587] divr8u::rem#17 = divr8u::rem#6
+Coalesced [588] divr8u::return#7 = divr8u::quotient#1
+Coalesced [589] divr8u::rem#15 = divr8u::rem#0
+Coalesced [599] memset::c#6 = memset::c#1
+Coalesced [616] memcpy::src#5 = memcpy::src#1
+Coalesced [617] memcpy::dst#5 = memcpy::dst#1
+Coalesced [627] memset::dst#5 = memset::dst#1
+Coalesced down to 38 phi equivalence classes
+Culled Empty Block label __start::@2
+Culled Empty Block label __start::@3
+Culled Empty Block label conio_c64_init::@2
+Culled Empty Block label conio_c64_init::@3
+Culled Empty Block label main::@60
+Culled Empty Block label main::@64
+Culled Empty Block label main::@125
+Culled Empty Block label main::@129
+Culled Empty Block label main::@89
+Culled Empty Block label main::@92
+Culled Empty Block label main::@46
+Culled Empty Block label main::@113
+Culled Empty Block label main::@128
+Culled Empty Block label main::@98
+Culled Empty Block label main::@135
+Culled Empty Block label main::@97
+Culled Empty Block label main::@134
+Culled Empty Block label main::@133
+Culled Empty Block label main::@132
+Culled Empty Block label main::@131
+Culled Empty Block label main::@130
+Culled Empty Block label main::@87
+Culled Empty Block label main::@14
+Culled Empty Block label main::@126
+Culled Empty Block label main::@127
+Culled Empty Block label main::@65
+Culled Empty Block label gotoxy::@3
+Culled Empty Block label clear_screen::@5
+Culled Empty Block label cputs::@3
+Culled Empty Block label write_score::@4
+Culled Empty Block label wait::@2
+Culled Empty Block label utoa::@1
+Culled Empty Block label utoa::@5
+Culled Empty Block label utoa::@17
+Culled Empty Block label cputc::@5
+Culled Empty Block label cputc::@4
+Culled Empty Block label cputln::@1
+Culled Empty Block label divr8u::@6
+Culled Empty Block label divr8u::@7
+Culled Empty Block label divr8u::@9
+Culled Empty Block label divr8u::@8
+Culled Empty Block label cscroll::@1
+Culled Empty Block label memcpy::@3
+Culled Empty Block label memset::@1
+Renumbering block memset::@2 to memset::@1
+Renumbering block memset::@3 to memset::@2
+Renumbering block memset::@4 to memset::@3
+Renumbering block utoa::@10 to utoa::@1
+Renumbering block utoa::@11 to utoa::@2
+Renumbering block utoa::@12 to utoa::@3
+Renumbering block utoa::@13 to utoa::@4
+Renumbering block utoa::@14 to utoa::@5
+Renumbering block utoa::@15 to utoa::@6
+Renumbering block utoa::@16 to utoa::@7
+Renumbering block gotoxy::@5 to gotoxy::@3
+Renumbering block cscroll::@3 to cscroll::@1
+Renumbering block cscroll::@4 to cscroll::@2
+Renumbering block cscroll::@5 to cscroll::@3
+Renumbering block cscroll::@6 to cscroll::@4
+Renumbering block cscroll::@7 to cscroll::@5
+Renumbering block conio_c64_init::@4 to conio_c64_init::@2
+Renumbering block write_score::@5 to write_score::@4
+Renumbering block write_score::@6 to write_score::@5
+Renumbering block write_score::@7 to write_score::@6
+Renumbering block write_score::@8 to write_score::@7
+Renumbering block write_score::@9 to write_score::@8
+Renumbering block write_score::@10 to write_score::@9
+Renumbering block write_score::@11 to write_score::@10
+Renumbering block write_score::@12 to write_score::@11
+Renumbering block write_score::@13 to write_score::@12
+Renumbering block write_score::@14 to write_score::@13
+Renumbering block write_score::@15 to write_score::@14
+Renumbering block write_score::@16 to write_score::@15
+Renumbering block wait::@3 to wait::@2
+Renumbering block wait::@4 to wait::@3
+Renumbering block wait::@5 to wait::@4
+Renumbering block main::@15 to main::@14
+Renumbering block main::@16 to main::@15
+Renumbering block main::@17 to main::@16
+Renumbering block main::@18 to main::@17
+Renumbering block main::@19 to main::@18
+Renumbering block main::@20 to main::@19
+Renumbering block main::@21 to main::@20
+Renumbering block main::@22 to main::@21
+Renumbering block main::@23 to main::@22
+Renumbering block main::@24 to main::@23
+Renumbering block main::@25 to main::@24
+Renumbering block main::@26 to main::@25
+Renumbering block main::@27 to main::@26
+Renumbering block main::@28 to main::@27
+Renumbering block main::@29 to main::@28
+Renumbering block main::@30 to main::@29
+Renumbering block main::@31 to main::@30
+Renumbering block main::@32 to main::@31
+Renumbering block main::@33 to main::@32
+Renumbering block main::@34 to main::@33
+Renumbering block main::@35 to main::@34
+Renumbering block main::@36 to main::@35
+Renumbering block main::@37 to main::@36
+Renumbering block main::@38 to main::@37
+Renumbering block main::@39 to main::@38
+Renumbering block main::@40 to main::@39
+Renumbering block main::@41 to main::@40
+Renumbering block main::@42 to main::@41
+Renumbering block main::@43 to main::@42
+Renumbering block main::@44 to main::@43
+Renumbering block main::@45 to main::@44
+Renumbering block main::@47 to main::@45
+Renumbering block main::@48 to main::@46
+Renumbering block main::@49 to main::@47
+Renumbering block main::@50 to main::@48
+Renumbering block main::@51 to main::@49
+Renumbering block main::@52 to main::@50
+Renumbering block main::@53 to main::@51
+Renumbering block main::@54 to main::@52
+Renumbering block main::@55 to main::@53
+Renumbering block main::@56 to main::@54
+Renumbering block main::@57 to main::@55
+Renumbering block main::@58 to main::@56
+Renumbering block main::@59 to main::@57
+Renumbering block main::@61 to main::@58
+Renumbering block main::@62 to main::@59
+Renumbering block main::@63 to main::@60
+Renumbering block main::@66 to main::@61
+Renumbering block main::@67 to main::@62
+Renumbering block main::@68 to main::@63
+Renumbering block main::@69 to main::@64
+Renumbering block main::@70 to main::@65
+Renumbering block main::@71 to main::@66
+Renumbering block main::@72 to main::@67
+Renumbering block main::@73 to main::@68
+Renumbering block main::@74 to main::@69
+Renumbering block main::@75 to main::@70
+Renumbering block main::@76 to main::@71
+Renumbering block main::@77 to main::@72
+Renumbering block main::@78 to main::@73
+Renumbering block main::@79 to main::@74
+Renumbering block main::@80 to main::@75
+Renumbering block main::@81 to main::@76
+Renumbering block main::@82 to main::@77
+Renumbering block main::@83 to main::@78
+Renumbering block main::@84 to main::@79
+Renumbering block main::@85 to main::@80
+Renumbering block main::@86 to main::@81
+Renumbering block main::@88 to main::@82
+Renumbering block main::@90 to main::@83
+Renumbering block main::@91 to main::@84
+Renumbering block main::@93 to main::@85
+Renumbering block main::@94 to main::@86
+Renumbering block main::@95 to main::@87
+Renumbering block main::@96 to main::@88
+Renumbering block main::@99 to main::@89
+Renumbering block main::@100 to main::@90
+Renumbering block main::@101 to main::@91
+Renumbering block main::@102 to main::@92
+Renumbering block main::@103 to main::@93
+Renumbering block main::@104 to main::@94
+Renumbering block main::@105 to main::@95
+Renumbering block main::@106 to main::@96
+Renumbering block main::@107 to main::@97
+Renumbering block main::@108 to main::@98
+Renumbering block main::@109 to main::@99
+Renumbering block main::@110 to main::@100
+Renumbering block main::@111 to main::@101
+Renumbering block main::@112 to main::@102
+Renumbering block main::@114 to main::@103
+Renumbering block main::@115 to main::@104
+Renumbering block main::@116 to main::@105
+Renumbering block main::@117 to main::@106
+Renumbering block main::@118 to main::@107
+Renumbering block main::@119 to main::@108
+Renumbering block main::@120 to main::@109
+Renumbering block main::@121 to main::@110
+Renumbering block main::@122 to main::@111
+Renumbering block main::@123 to main::@112
+Renumbering block main::@124 to main::@113
+Renumbering block main::@136 to main::@114
+Adding NOP phi() at start of __start
+Adding NOP phi() at start of __start::@1
+Adding NOP phi() at start of conio_c64_init::@2
+Adding NOP phi() at start of main::@52
+Adding NOP phi() at start of main::@53
+Adding NOP phi() at start of main::@54
+Adding NOP phi() at start of main::@55
+Adding NOP phi() at start of main::@56
+Adding NOP phi() at start of main::@57
+Adding NOP phi() at start of main::@5
+Adding NOP phi() at start of main::@19
+Adding NOP phi() at start of main::@24
+Adding NOP phi() at start of main::@25
+Adding NOP phi() at start of main::@44
+Adding NOP phi() at start of main::@92
+Adding NOP phi() at start of main::@93
+Adding NOP phi() at start of main::@94
+Adding NOP phi() at start of main::@95
+Adding NOP phi() at start of main::@96
+Adding NOP phi() at start of main::@97
+Adding NOP phi() at start of main::@98
+Adding NOP phi() at start of main::@100
+Adding NOP phi() at start of main::@101
+Adding NOP phi() at start of main::@102
+Adding NOP phi() at start of main::@27
+Adding NOP phi() at start of main::@88
+Adding NOP phi() at start of gotoxy::@3
+Adding NOP phi() at start of clear_screen::@3
+Adding NOP phi() at start of write_score::@15
+Adding NOP phi() at start of cputc::@3
+Adding NOP phi() at start of cputc::@1
+Adding NOP phi() at start of utoa_append
+Adding NOP phi() at start of cscroll::@1
+Adding NOP phi() at start of cscroll::@2
+Adding NOP phi() at start of cscroll::@3
+
+FINAL CONTROL FLOW GRAPH
+
+void __start()
+__start: scope:[__start] from
+ [0] phi()
+ to:__start::__init1
+__start::__init1: scope:[__start] from __start
+ [1] conio_cursor_x = 0
+ [2] conio_cursor_y = 0
+ [3] conio_line_text = DEFAULT_SCREEN
+ [4] conio_line_color = COLORRAM
+ [5] conio_textcolor = LIGHT_BLUE
+ [6] l = 0
+ [7] m = 0
+ [8] call conio_c64_init
+ to:__start::@1
+__start::@1: scope:[__start] from __start::__init1
+ [9] phi()
+ [10] call main
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@1
+ [11] return
+ to:@return
+
+void conio_c64_init()
+conio_c64_init: scope:[conio_c64_init] from __start::__init1
+ [12] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
+ [13] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2
+ to:conio_c64_init::@1
+conio_c64_init::@2: scope:[conio_c64_init] from conio_c64_init
+ [14] phi()
+ to:conio_c64_init::@1
+conio_c64_init::@1: scope:[conio_c64_init] from conio_c64_init conio_c64_init::@2
+ [15] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
+ [16] gotoxy::y#2 = conio_c64_init::line#2
+ [17] call gotoxy
+ to:conio_c64_init::@return
+conio_c64_init::@return: scope:[conio_c64_init] from conio_c64_init::@1
+ [18] return
+ to:@return
+
+void main()
+main: scope:[main] from __start::@1
+ [19] *((char *) 36879) = 8
+ [20] chrout::petscii = lock
+ [21] call chrout
+ to:main::@50
+main::@50: scope:[main] from main
+ [22] chrout::petscii = lower
+ [23] call chrout
+ to:main::@51
+main::@51: scope:[main] from main::@50
+ [24] m = 0
+ to:main::@1
+main::@1: scope:[main] from main::@2 main::@51
+ [25] if(m<$28) goto main::@2
+ to:main::@3
+main::@3: scope:[main] from main::@1 main::@113
+ [26] n#109 = phi( main::@1/0, main::@113/n#20 )
+ [26] hiscore#110 = phi( main::@1/0, main::@113/hiscore#123 )
+ [26] y#114 = phi( main::@1/0, main::@113/y#18 )
+ [26] rem8u#127 = phi( main::@1/0, main::@113/rem8u#25 )
+ [27] call clear_screen
+ to:main::@52
+main::@52: scope:[main] from main::@3
+ [28] phi()
+ [29] call textcolor
+ to:main::@53
+main::@53: scope:[main] from main::@52
+ [30] phi()
+ [31] call cputs
+ to:main::@54
+main::@54: scope:[main] from main::@53
+ [32] phi()
+ [33] call textcolor
+ to:main::@55
+main::@55: scope:[main] from main::@54
+ [34] phi()
+ [35] call cputs
+ to:main::@56
+main::@56: scope:[main] from main::@55
+ [36] phi()
+ [37] call textcolor
+ to:main::@57
+main::@57: scope:[main] from main::@56
+ [38] phi()
+ [39] call cputs
+ to:main::@4
+main::@4: scope:[main] from main::@4 main::@57
+ [40] l = *((char *) 197)
+ [41] l = ++ l
+ [42] if(l>=5+1) goto main::@4
+ to:main::@5
+main::@5: scope:[main] from main::@4
+ [43] phi()
+ [44] call clear_screen
+ to:main::@58
+main::@58: scope:[main] from main::@5
+ [45] *((char *) 36869) = $ff
+ [46] chrout::petscii = reverse_on
+ [47] call chrout
+ to:main::@59
+main::@59: scope:[main] from main::@58
+ [48] chrout::petscii = red
+ [49] call chrout
+ to:main::@60
+main::@60: scope:[main] from main::@59
+ [50] chrout::petscii = down
+ [51] call chrout
+ to:main::@6
+main::@6: scope:[main] from main::@60 main::@64
+ [52] n#89 = phi( main::@60/n#109, main::@64/n#101 )
+ [52] k#101 = phi( main::@60/1, main::@64/k#1 )
+ [53] if(k#101<$16) goto main::@7
+ to:main::@8
+main::@8: scope:[main] from main::@6
+ [54] chrout::petscii = brick
+ [55] call chrout
+ to:main::@61
+main::@61: scope:[main] from main::@8
+ [56] *((char *) 8185) = brick
+ [57] *((char *)$1ff9+c) = 2
+ [58] chrout::petscii = home
+ [59] call chrout
+ to:main::@62
+main::@62: scope:[main] from main::@61
+ [60] if(l<1+1) goto main::@12
+ to:main::@13
+main::@13: scope:[main] from main::@62 main::@73
+ [61] z#28 = phi( main::@62/1, main::@73/z#9 )
+ [62] random::k#0 = 7 - l
+ [63] main::$177 = l << 1
+ [64] main::$26 = main::$177 + l
+ [65] random::n#0 = $1a - main::$26
+ [66] call random
+ to:main::@71
+main::@71: scope:[main] from main::@13
+ [67] main::$29 = z#28 + m
+ [68] if(main::$29<=$1f9) goto main::@14
+ to:main::@12
+main::@12: scope:[main] from main::@62 main::@71 main::@73
+ [69] z#128 = phi( main::@62/1, main::@71/z#28, main::@73/z#9 )
+ [70] *((char *) 36878) = $f
+ [71] chrout::petscii = home
+ [72] call chrout
+ to:main::@65
+main::@65: scope:[main] from main::@12
+ [73] chrout::petscii = yellow
+ [74] call chrout
+ to:main::@66
+main::@66: scope:[main] from main::@65
+ [75] chrout::petscii = $50
+ [76] call chrout
+ to:main::@67
+main::@67: scope:[main] from main::@66
+ [77] chrout::petscii = $54
+ [78] call chrout
+ to:main::@68
+main::@68: scope:[main] from main::@67
+ [79] chrout::petscii = $53
+ [80] call chrout
+ to:main::@69
+main::@69: scope:[main] from main::@68
+ [81] chrout::petscii = $3a
+ [82] call chrout
+ to:main::@70
+main::@70: scope:[main] from main::@69
+ [83] *((char *) 211) = $12
+ to:main::@17
+main::@17: scope:[main] from main::@70 main::@74
+ [84] j#13 = phi( main::@70/0, main::@74/j#3 )
+ [85] if(j#13<4) goto main::@18
+ to:main::@19
+main::@19: scope:[main] from main::@17
+ [86] phi()
+ [87] call write_score
+ to:main::@75
+main::@75: scope:[main] from main::@19
+ [88] chrout::petscii = home
+ [89] call chrout
+ to:main::@76
+main::@76: scope:[main] from main::@75
+ [90] chrout::petscii = green
+ [91] call chrout
+ to:main::@77
+main::@77: scope:[main] from main::@76
+ [92] *((char *) 211) = $a
+ to:main::@20
+main::@20: scope:[main] from main::@77 main::@78
+ [93] j#16 = phi( main::@77/0, main::@78/j#5 )
+ [94] if(j#16<5) goto main::@21
+ to:main::@22
+main::@22: scope:[main] from main::@20 main::@87
+ [95] n#52 = phi( main::@20/n#89, main::@87/n#20 )
+ [95] peephole#52 = phi( main::@20/$1f1f, main::@87/peephole#12 )
+ [95] z#102 = phi( main::@20/z#128, main::@87/z#25 )
+ [95] y#49 = phi( main::@20/y#114, main::@87/y#18 )
+ [95] rem8u#48 = phi( main::@20/rem8u#127, main::@87/rem8u#25 )
+ [95] tu#13 = phi( main::@20/1, main::@87/tu#1 )
+ [96] chrout::petscii = home
+ [97] call chrout
+ to:main::@79
+main::@79: scope:[main] from main::@22
+ [98] chrout::petscii = green
+ [99] call chrout
+ to:main::@80
+main::@80: scope:[main] from main::@79
+ [100] chrout::petscii = reverse_on
+ [101] call chrout
+ to:main::@81
+main::@81: scope:[main] from main::@80
+ [102] *((char *) 211) = $f
+ [103] if(tu#13<$a) goto main::@23
+ to:main::@45
+main::@45: scope:[main] from main::@81
+ [104] chrout::petscii = $31
+ [105] call chrout
+ to:main::@82
+main::@82: scope:[main] from main::@45
+ [106] chrout::petscii = $30
+ [107] call chrout
+ to:main::@24
+main::@24: scope:[main] from main::@103 main::@104 main::@105 main::@106 main::@23 main::@82 main::@84
+ [108] phi()
+ [109] call random
+ to:main::@83
+main::@83: scope:[main] from main::@24
+ [110] duck#0 = m
+ [111] call random
+ to:main::@84
+main::@84: scope:[main] from main::@83
+ [112] main::$61 = m + $1e15
+ [113] duck#1 = main::$61 + duck#0
+ [114] main::$66 = duck#1 + 1
+ [115] main::$69 = duck#1 + $16
+ [116] main::$72 = duck#1 + $17
+ [117] if(duck#1>$1fe3) goto main::@24
+ to:main::@106
+main::@106: scope:[main] from main::@84
+ [118] if(*((char *)duck#1)==brick) goto main::@24
+ to:main::@105
+main::@105: scope:[main] from main::@106
+ [119] if(*((char *)main::$66)==brick) goto main::@24
+ to:main::@104
+main::@104: scope:[main] from main::@105
+ [120] if(*((char *)main::$69)==brick) goto main::@24
+ to:main::@103
+main::@103: scope:[main] from main::@104
+ [121] if(*((char *)main::$72)==brick) goto main::@24
+ to:main::@25
+main::@25: scope:[main] from main::@103
+ [122] phi()
+ [123] call chrono_restart
+ to:main::@26
+main::@26: scope:[main] from main::@25 main::@90
+ [124] n#20 = phi( main::@90/n#14, main::@25/n#52 )
+ [124] peephole#12 = phi( main::@90/y#35, main::@25/peephole#52 )
+ [124] z#100 = phi( main::@90/z#25, main::@25/z#102 )
+ [124] y#18 = phi( main::@90/y#130, main::@25/y#49 )
+ [124] rem8u#25 = phi( main::@90/divr8u::rem#11, main::@25/rem8u#48 )
+ [124] score#19 = phi( main::@90/score#43, main::@25/score#38 )
+ [124] time#11 = phi( main::@90/time#17, main::@25/0 )
+ [125] if(time#11<$a) goto main::@27
+ to:main::@28
+main::@28: scope:[main] from main::@26
+ [126] tu#1 = ++ tu#13
+ [127] score#4 = score#19 - $a
+ [128] call write_score
+ to:main::@86
+main::@86: scope:[main] from main::@28
+ [129] *((char *) 36877) = $82
+ [130] call wait
+ to:main::@87
+main::@87: scope:[main] from main::@86
+ [131] *((char *) 36877) = 0
+ [132] main::$150 = duck#1 + c
+ [133] *((char *)main::$150) = 0
+ [134] main::$151 = duck#1
+ [135] main::$152 = main::$151 + 1+c
+ [136] *((char *)main::$152) = 0
+ [137] main::$153 = duck#1
+ [138] main::$154 = main::$153 + $16+c
+ [139] *((char *)main::$154) = 0
+ [140] main::$155 = duck#1
+ [141] main::$156 = main::$155 + $17+c
+ [142] *((char *)main::$156) = 0
+ [143] if(tu#1<$b) goto main::@22
+ to:main::@44
+main::@44: scope:[main] from main::@87
+ [144] phi()
+ [145] call clear_screen
+ to:main::@91
+main::@91: scope:[main] from main::@44
+ [146] *((char *) 36869) = $f0
+ [147] chrout::petscii = lower
+ [148] call chrout
+ to:main::@92
+main::@92: scope:[main] from main::@91
+ [149] phi()
+ [150] call textcolor
+ to:main::@93
+main::@93: scope:[main] from main::@92
+ [151] phi()
+ [152] call cputs
+ to:main::@94
+main::@94: scope:[main] from main::@93
+ [153] phi()
+ [154] call textcolor
+ to:main::@95
+main::@95: scope:[main] from main::@94
+ [155] phi()
+ [156] call cputs
+ to:main::@96
+main::@96: scope:[main] from main::@95
+ [157] phi()
+ [158] call cputs
+ to:main::@97
+main::@97: scope:[main] from main::@96
+ [159] phi()
+ [160] call textcolor
+ to:main::@98
+main::@98: scope:[main] from main::@97
+ [161] phi()
+ [162] call cputs
+ to:main::@99
+main::@99: scope:[main] from main::@98
+ [163] if(score#38<=hiscore#110) goto main::@114
+ to:main::@46
+main::@114: scope:[main] from main::@99
+ [164] hiscore#124 = hiscore#110
+ to:main::@46
+main::@46: scope:[main] from main::@114 main::@99
+ [165] hiscore#19 = phi( main::@114/hiscore#124, main::@99/score#38 )
+ [166] utoa::value#2 = hiscore#19
+ [167] call utoa
+ to:main::@100
+main::@100: scope:[main] from main::@46
+ [168] phi()
+ [169] call cputs
+ to:main::@101
+main::@101: scope:[main] from main::@100
+ [170] phi()
+ [171] call textcolor
+ to:main::@102
+main::@102: scope:[main] from main::@101
+ [172] phi()
+ [173] call cputs
+ to:main::@47
+main::@47: scope:[main] from main::@102 main::@112
+ [174] j#19 = *((char *) 197)
+ [175] if(j#19==$b) goto main::@48
+ to:main::@112
+main::@112: scope:[main] from main::@47
+ [176] if(j#19!=$1c) goto main::@47
+ to:main::@48
+main::@48: scope:[main] from main::@112 main::@47
+ [177] if(j#19==$b) goto main::@113
+ to:main::@49
+main::@49: scope:[main] from main::@48
+ asm { jsr$FD22 }
+ to:main::@return
+main::@return: scope:[main] from main::@49
+ [179] return
+ to:@return
+main::@113: scope:[main] from main::@48
+ [180] hiscore#123 = hiscore#19
+ to:main::@3
+main::@27: scope:[main] from main::@26
+ [181] phi()
+ [182] call read_chrono
+ to:main::@85
+main::@85: scope:[main] from main::@27
+ [183] m = *((char *) 37151)
+ [184] *((char *) 37154) = $7f
+ [185] n#14 = *((char *) 37152)
+ [186] *((char *) 37154) = $ff
+ [187] main::$78 = $10 & m
+ [188] if(main::$78!=0) goto main::@29
+ to:main::@37
+main::@37: scope:[main] from main::@85
+ [189] y#0 = -- y#18
+ to:main::@29
+main::@29: scope:[main] from main::@37 main::@85
+ [190] y#10 = phi( main::@37/y#0, main::@85/y#18 )
+ [191] main::$81 = $80 & n#14
+ [192] if(main::$81!=0) goto main::@30
+ to:main::@38
+main::@38: scope:[main] from main::@29
+ [193] y#1 = ++ y#10
+ to:main::@30
+main::@30: scope:[main] from main::@29 main::@38
+ [194] y#11 = phi( main::@29/y#10, main::@38/y#1 )
+ [195] main::$84 = 4 & m
+ [196] if(main::$84!=0) goto main::@31
+ to:main::@39
+main::@39: scope:[main] from main::@30
+ [197] y#2 = y#11 - $16
+ to:main::@31
+main::@31: scope:[main] from main::@30 main::@39
+ [198] y#12 = phi( main::@30/y#11, main::@39/y#2 )
+ [199] main::$88 = 8 & m
+ [200] if(main::$88!=0) goto main::@32
+ to:main::@40
+main::@40: scope:[main] from main::@31
+ [201] y#3 = y#12 + $16
+ to:main::@32
+main::@32: scope:[main] from main::@31 main::@40
+ [202] y#13 = phi( main::@31/y#12, main::@40/y#3 )
+ [203] main::$92 = $20 & m
+ [204] if(main::$92!=0) goto main::@33
+ to:main::@41
+main::@41: scope:[main] from main::@32
+ [205] *((char *) 36877) = $82
+ [206] if(peephole#12!=duck#1) goto main::@34
+ to:main::@42
+main::@42: scope:[main] from main::@41
+ [207] main::$96 = $c - div16u8u::return#2
+ [208] main::$179 = main::$96 << 2
+ [209] main::$180 = main::$179 + main::$96
+ [210] main::$97 = main::$180 << 1
+ [211] score#8 = score#19 + main::$97
+ [212] call wait
+ to:main::@35
+main::@35: scope:[main] from main::@42 main::@88
+ [213] score#81 = phi( main::@88/score#38, main::@42/score#8 )
+ [213] time#38 = phi( main::@88/div16u8u::return#2, main::@42/$a )
+ [214] *((char *) 36877) = 0
+ to:main::@33
+main::@33: scope:[main] from main::@32 main::@35
+ [215] score#43 = phi( main::@32/score#19, main::@35/score#81 )
+ [215] time#17 = phi( main::@32/div16u8u::return#2, main::@35/time#38 )
+ [215] z#48 = phi( main::@32/z#100, main::@35/z#25 )
+ [216] main::$104 = y#13 + 1
+ [217] main::$107 = y#13 + $16
+ [218] main::$110 = y#13 + $17
+ [219] if(*((char *)y#13)==brick) goto main::@36
+ to:main::@111
+main::@111: scope:[main] from main::@33
+ [220] if(*((char *)main::$104)==brick) goto main::@36
+ to:main::@110
+main::@110: scope:[main] from main::@111
+ [221] if(*((char *)main::$107)!=brick) goto main::@109
+ to:main::@36
+main::@36: scope:[main] from main::@107 main::@108 main::@109 main::@110 main::@111 main::@33 main::@43
+ [222] y#35 = phi( main::@33/peephole#12, main::@43/y#141 )
+ [223] *((char *)y#35) = $fd
+ [224] main::$125 = y#35 + c
+ [225] *((char *)main::$125) = 1
+ [226] main::$127 = y#35 + 1
+ [227] *((char *)main::$127) = $ed
+ [228] main::$128 = main::$127 + c
+ [229] *((char *)main::$128) = 1
+ [230] main::$130 = y#35 + $16
+ [231] *((char *)main::$130) = $ee
+ [232] main::$131 = main::$130 + c
+ [233] *((char *)main::$131) = 1
+ [234] main::$133 = y#35 + $17
+ [235] *((char *)main::$133) = $f0
+ [236] main::$134 = main::$133 + c
+ [237] *((char *)main::$134) = 1
+ [238] call wait
+ to:main::@89
+main::@89: scope:[main] from main::@36
+ [239] *((char *)duck#1) = 0
+ [240] main::$136 = duck#1 + c
+ [241] *((char *)main::$136) = 7
+ [242] main::$138 = duck#1 + 1
+ [243] *((char *)main::$138) = 1
+ [244] main::$139 = main::$138 + c
+ [245] *((char *)main::$139) = 7
+ [246] main::$141 = duck#1 + $16
+ [247] *((char *)main::$141) = 2
+ [248] main::$142 = main::$141 + c
+ [249] *((char *)main::$142) = 7
+ [250] main::$144 = duck#1 + $17
+ [251] *((char *)main::$144) = 3
+ [252] main::$145 = main::$144 + c
+ [253] *((char *)main::$145) = 7
+ [254] call wait
+ to:main::@90
+main::@90: scope:[main] from main::@89
+ [255] y#130 = y#35
+ to:main::@26
+main::@109: scope:[main] from main::@110
+ [256] if(*((char *)main::$110)==brick) goto main::@36
+ to:main::@108
+main::@108: scope:[main] from main::@109
+ [257] if(y#13>$1e16) goto main::@107
+ to:main::@36
+main::@107: scope:[main] from main::@108
+ [258] if(y#13>=$1fe3) goto main::@36
+ to:main::@43
+main::@43: scope:[main] from main::@107
+ [259] main::$119 = peephole#12 + c
+ [260] *((char *)main::$119) = 0
+ [261] main::$120 = main::$119 + 1
+ [262] *((char *)main::$120) = 0
+ [263] main::$122 = main::$119 + $16
+ [264] *((char *)main::$122) = 0
+ [265] main::$124 = main::$119 + $17
+ [266] *((char *)main::$124) = 0
+ [267] y#141 = y#13
+ to:main::@36
+main::@34: scope:[main] from main::@41
+ [268] score#6 = score#19 - $a
+ [269] call write_score
+ to:main::@88
+main::@88: scope:[main] from main::@34
+ [270] phi()
+ [271] call wait
+ to:main::@35
+main::@23: scope:[main] from main::@81
+ [272] main::$57 = $30 + tu#13
+ [273] chrout::petscii = main::$57
+ [274] call chrout
+ to:main::@24
+main::@21: scope:[main] from main::@20
+ [275] chrout::petscii = ducknumber[j#16]
+ [276] call chrout
+ to:main::@78
+main::@78: scope:[main] from main::@21
+ [277] j#5 = ++ j#16
+ to:main::@20
+main::@18: scope:[main] from main::@17
+ [278] chrout::petscii = chrono[j#13]
+ [279] call chrout
+ to:main::@74
+main::@74: scope:[main] from main::@18
+ [280] j#3 = ++ j#13
+ to:main::@17
+main::@14: scope:[main] from main::@71 main::@72
+ [281] j#11 = phi( main::@71/1, main::@72/j#2 )
+ [282] if(j#11<=m) goto main::@15
+ to:main::@16
+main::@16: scope:[main] from main::@14
+ [283] chrout::petscii = brick
+ [284] call chrout
+ to:main::@73
+main::@73: scope:[main] from main::@16
+ [285] main::$35 = z#28 + m
+ [286] z#9 = main::$35 + 1
+ [287] if(z#9<$1fa) goto main::@13
+ to:main::@12
+main::@15: scope:[main] from main::@14
+ [288] chrout::petscii = right
+ [289] call chrout
+ to:main::@72
+main::@72: scope:[main] from main::@15
+ [290] j#2 = ++ j#11
+ to:main::@14
+main::@7: scope:[main] from main::@6
+ [291] chrout::petscii = brick
+ [292] call chrout
+ to:main::@9
+main::@9: scope:[main] from main::@63 main::@7
+ [293] n#101 = phi( main::@7/2, main::@63/n#1 )
+ [294] if(n#101<$16) goto main::@10
+ to:main::@11
+main::@11: scope:[main] from main::@9
+ [295] chrout::petscii = brick
+ [296] call chrout
+ to:main::@64
+main::@64: scope:[main] from main::@11
+ [297] k#1 = ++ k#101
+ to:main::@6
+main::@10: scope:[main] from main::@9
+ [298] chrout::petscii = right
+ [299] call chrout
+ to:main::@63
+main::@63: scope:[main] from main::@10
+ [300] n#1 = ++ n#101
+ to:main::@9
+main::@2: scope:[main] from main::@1
+ [301] main::$3 = $1c00 + m
+ [302] *((char *)main::$3) = duck_udg[m]
+ [303] m = ++ m
+ to:main::@1
+
+void gotoxy(char x , char y)
+gotoxy: scope:[gotoxy] from clear_screen::@3 conio_c64_init::@1
+ [304] gotoxy::y#4 = phi( clear_screen::@3/0, conio_c64_init::@1/gotoxy::y#2 )
+ [305] if(gotoxy::y#4<$19+1) goto gotoxy::@3
+ to:gotoxy::@1
+gotoxy::@3: scope:[gotoxy] from gotoxy
+ [306] phi()
+ to:gotoxy::@1
+gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
+ [307] gotoxy::y#5 = phi( gotoxy::@3/gotoxy::y#4, gotoxy/0 )
+ to:gotoxy::@2
+gotoxy::@2: scope:[gotoxy] from gotoxy::@1
+ [308] conio_cursor_x = 0
+ [309] conio_cursor_y = gotoxy::y#5
+ [310] gotoxy::$7 = (unsigned int)gotoxy::y#5
+ [311] gotoxy::$8 = gotoxy::$7 << 2
+ [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
+ [313] gotoxy::line_offset#0 = gotoxy::$9 << 3
+ [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
+ [315] conio_line_text = gotoxy::$5
+ [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
+ [317] conio_line_color = gotoxy::$6
+ to:gotoxy::@return
+gotoxy::@return: scope:[gotoxy] from gotoxy::@2
+ [318] return
+ to:@return
+
+void chrout(volatile char petscii)
+chrout: scope:[chrout] from clear_screen::@4 main main::@10 main::@11 main::@12 main::@15 main::@16 main::@18 main::@21 main::@22 main::@23 main::@45 main::@50 main::@58 main::@59 main::@60 main::@61 main::@65 main::@66 main::@67 main::@68 main::@69 main::@7 main::@75 main::@76 main::@79 main::@8 main::@80 main::@82 main::@91 write_score::@10 write_score::@12 write_score::@3
+ asm { ldapetscii jsr$ffd2 }
+ to:chrout::@return
+chrout::@return: scope:[chrout] from chrout
+ [320] return
+ to:@return
+
+void clear_screen(char n , char m)
+clear_screen: scope:[clear_screen] from main::@3 main::@44 main::@5
+ [321] clear_screen::n#5 = phi( main::@3/$20, main::@44/4, main::@5/4 )
+ to:clear_screen::@1
+clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@2
+ [322] z#2 = phi( clear_screen/0, clear_screen::@2/z#1 )
+ [323] if(z#2<$1fa) goto clear_screen::@2
+ to:clear_screen::@3
+clear_screen::@3: scope:[clear_screen] from clear_screen::@1
+ [324] phi()
+ [325] call gotoxy
+ to:clear_screen::@4
+clear_screen::@4: scope:[clear_screen] from clear_screen::@3
+ [326] chrout::petscii = home
+ [327] call chrout
+ to:clear_screen::@return
+clear_screen::@return: scope:[clear_screen] from clear_screen::@4
+ [328] return
+ to:@return
+clear_screen::@2: scope:[clear_screen] from clear_screen::@1
+ [329] clear_screen::$5 = $1e00 + z#2
+ [330] clear_screen::$4 = clear_screen::$5 + c
+ [331] *((char *)clear_screen::$4) = 0
+ [332] *((char *)clear_screen::$5) = clear_screen::n#5
+ [333] z#1 = ++ z#2
+ to:clear_screen::@1
+
+char textcolor(char color)
+textcolor: scope:[textcolor] from main::@101 main::@52 main::@54 main::@56 main::@92 main::@94 main::@97
+ [334] textcolor::color#7 = phi( main::@92/7, main::@94/2, main::@97/3, main::@101/1, main::@52/7, main::@54/1, main::@56/2 )
+ [335] conio_textcolor = textcolor::color#7
+ to:textcolor::@return
+textcolor::@return: scope:[textcolor] from textcolor
+ [336] return
+ to:@return
+
+void cputs(const char *s)
+cputs: scope:[cputs] from main::@100 main::@102 main::@53 main::@55 main::@57 main::@93 main::@95 main::@96 main::@98
+ [337] cputs::s#11 = phi( main::@93/game_over, main::@95/your_score, main::@96/buffer, main::@98/high_score, main::@100/buffer, main::@102/play_again, main::@53/intro, main::@55/levels, main::@57/foot )
+ to:cputs::@1
+cputs::@1: scope:[cputs] from cputs cputs::@2
+ [338] cputs::s#10 = phi( cputs/cputs::s#11, cputs::@2/cputs::s#0 )
+ [339] cputs::c#1 = *cputs::s#10
+ [340] cputs::s#0 = ++ cputs::s#10
+ [341] if(0!=cputs::c#1) goto cputs::@2
+ to:cputs::@return
+cputs::@return: scope:[cputs] from cputs::@1
+ [342] return
+ to:@return
+cputs::@2: scope:[cputs] from cputs::@1
+ [343] cputc::c#0 = cputs::c#1
+ [344] call cputc
+ to:cputs::@1
+
+void random(char k , char n)
+random: scope:[random] from main::@13 main::@24 main::@83
+ [345] random::n#4 = phi( main::@13/random::n#0, main::@24/$ff, main::@83/$ff )
+ [345] random::k#4 = phi( main::@13/random::k#0, main::@24/0, main::@83/0 )
+ to:random::@1
+random::@1: scope:[random] from random random::@1 random::@2
+ [346] m = *((char *) 37140)
+ [347] random::$3 = m
+ [348] if(mrandom::n#4) goto random::@1
+ to:random::@return
+random::@return: scope:[random] from random::@2
+ [350] return
+ to:@return
+
+void write_score()
+write_score: scope:[write_score] from main::@19 main::@28 main::@34
+ [351] score#13 = phi( main::@19/0, main::@28/score#4, main::@34/score#6 )
+ [352] if(score#13<=$fde8) goto write_score::@15
+ to:write_score::@1
+write_score::@15: scope:[write_score] from write_score
+ [353] phi()
+ to:write_score::@1
+write_score::@1: scope:[write_score] from write_score write_score::@15
+ [354] score#38 = phi( write_score::@15/score#13, write_score/0 )
+ [355] m = 0
+ to:write_score::@5
+write_score::@5: scope:[write_score] from write_score::@1 write_score::@6
+ [356] if(m<4) goto write_score::@6
+ to:write_score::@7
+write_score::@7: scope:[write_score] from write_score::@5
+ [357] utoa::value#1 = score#38
+ [358] call utoa
+ to:write_score::@11
+write_score::@11: scope:[write_score] from write_score::@7
+ [359] if(score#38<9+1) goto write_score::@2
+ to:write_score::@8
+write_score::@8: scope:[write_score] from write_score::@11
+ [360] *(points+2) = *buffer
+ [361] *(points+3) = *(buffer+1)
+ to:write_score::@2
+write_score::@2: scope:[write_score] from write_score::@11 write_score::@8
+ [362] if(score#38<$63+1) goto write_score::@3
+ to:write_score::@4
+write_score::@4: scope:[write_score] from write_score::@2
+ [363] *(points+1) = *buffer
+ [364] *(points+2) = *(buffer+1)
+ [365] *(points+3) = *(buffer+2)
+ to:write_score::@3
+write_score::@3: scope:[write_score] from write_score::@2 write_score::@4
+ [366] chrout::petscii = yellow
+ [367] call chrout
+ to:write_score::@12
+write_score::@12: scope:[write_score] from write_score::@3
+ [368] chrout::petscii = home
+ [369] call chrout
+ to:write_score::@13
+write_score::@13: scope:[write_score] from write_score::@12
+ [370] *((char *) 211) = 4
+ [371] m = 0
+ to:write_score::@9
+write_score::@9: scope:[write_score] from write_score::@13 write_score::@14
+ [372] if(m<4) goto write_score::@10
+ to:write_score::@return
+write_score::@return: scope:[write_score] from write_score::@9
+ [373] return
+ to:@return
+write_score::@10: scope:[write_score] from write_score::@9
+ [374] chrout::petscii = points[m]
+ [375] call chrout
+ to:write_score::@14
+write_score::@14: scope:[write_score] from write_score::@10
+ [376] m = ++ m
+ to:write_score::@9
+write_score::@6: scope:[write_score] from write_score::@5
+ [377] points[m] = '0'
+ [378] m = ++ m
+ to:write_score::@5
+
+void chrono_restart()
+chrono_restart: scope:[chrono_restart] from main::@25
+ asm { lda#0 ldy#0 ldx#0 jsr$ffdb }
+ to:chrono_restart::@return
+chrono_restart::@return: scope:[chrono_restart] from chrono_restart
+ [380] return
+ to:@return
+
+void wait(char n)
+wait: scope:[wait] from main::@36 main::@42 main::@86 main::@88 main::@89
+ [381] z#53 = phi( main::@36/z#48, main::@42/z#100, main::@86/z#100, main::@88/z#100, main::@89/z#25 )
+ [381] wait::n#6 = phi( main::@36/5, main::@42/$a, main::@86/$14, main::@88/$a, main::@89/5 )
+ [382] m = 0
+ to:wait::@1
+wait::@1: scope:[wait] from wait wait::@4
+ [383] z#25 = phi( wait/z#53, wait::@4/z#23 )
+ [384] if(m=utoa::digit_value#0) goto utoa::@5
+ to:utoa::@4
+utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
+ [402] utoa::buffer#15 = phi( utoa::@7/utoa::buffer#10, utoa::@6/utoa::buffer#4 )
+ [402] utoa::started#4 = phi( utoa::@7/utoa::started#2, utoa::@6/1 )
+ [402] utoa::value#7 = phi( utoa::@7/utoa::value#3, utoa::@6/utoa::value#0 )
+ [403] utoa::digit#1 = ++ utoa::digit#2
+ to:utoa::@1
+utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
+ [404] utoa_append::buffer#0 = utoa::buffer#10
+ [405] utoa_append::value#0 = utoa::value#3
+ [406] utoa_append::sub#0 = utoa::digit_value#0
+ [407] call utoa_append
+ [408] utoa_append::return#0 = utoa_append::value#2
+ to:utoa::@6
+utoa::@6: scope:[utoa] from utoa::@5
+ [409] utoa::value#0 = utoa_append::return#0
+ [410] utoa::buffer#4 = ++ utoa::buffer#10
+ to:utoa::@4
+
+void read_chrono()
+read_chrono: scope:[read_chrono] from main::@27
+ asm { jsr$ffde stal stxm }
+ [412] read_chrono::$0 = m << 8
+ [413] div16u8u::dividend#0 = read_chrono::$0 + l
+ [414] call div16u8u
+ [415] div16u8u::return#2 = div16u8u::return#0
+ to:read_chrono::@2
+read_chrono::@2: scope:[read_chrono] from read_chrono
+ [416] *((char *)$1e15+c) = 7
+ [417] *((char *) 7701) = $b9
+ [418] if(div16u8u::return#2>=$a) goto read_chrono::@return
+ to:read_chrono::@1
+read_chrono::@1: scope:[read_chrono] from read_chrono::@2
+ [419] read_chrono::$5 = $b9 - div16u8u::return#2
+ [420] *((char *) 7701) = read_chrono::$5
+ to:read_chrono::@return
+read_chrono::@return: scope:[read_chrono] from read_chrono::@1 read_chrono::@2
+ [421] return
+ to:@return
+
+void cputc(char c)
+cputc: scope:[cputc] from cputs::@2
+ [422] if(cputc::c#0=='
+') goto cputc::@1
+ to:cputc::@2
+cputc::@2: scope:[cputc] from cputc
+ [423] conio_line_text[conio_cursor_x] = cputc::c#0
+ [424] conio_line_color[conio_cursor_x] = conio_textcolor
+ [425] conio_cursor_x = ++ conio_cursor_x
+ [426] if(conio_cursor_x!=$28) goto cputc::@return
+ to:cputc::@3
+cputc::@3: scope:[cputc] from cputc::@2
+ [427] phi()
+ [428] call cputln
+ to:cputc::@return
+cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
+ [429] return
+ to:@return
+cputc::@1: scope:[cputc] from cputc
+ [430] phi()
+ [431] call cputln
+ to:cputc::@return
+
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+utoa_append: scope:[utoa_append] from utoa::@5
+ [432] phi()
+ to:utoa_append::@1
+utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
+ [433] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
+ [433] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
+ [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
+ to:utoa_append::@3
+utoa_append::@3: scope:[utoa_append] from utoa_append::@1
+ [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
+ to:utoa_append::@return
+utoa_append::@return: scope:[utoa_append] from utoa_append::@3
+ [436] return
+ to:@return
+utoa_append::@2: scope:[utoa_append] from utoa_append::@1
+ [437] utoa_append::digit#1 = ++ utoa_append::digit#2
+ [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
+ to:utoa_append::@1
+
+unsigned int div16u8u(unsigned int dividend , char divisor)
+div16u8u: scope:[div16u8u] from read_chrono
+ [439] divr8u::dividend#1 = byte1 div16u8u::dividend#0
+ [440] call divr8u
+ [441] divr8u::return#2 = divr8u::return#0
+ to:div16u8u::@1
+div16u8u::@1: scope:[div16u8u] from div16u8u
+ [442] div16u8u::quotient_hi#0 = divr8u::return#2
+ [443] divr8u::dividend#2 = byte0 div16u8u::dividend#0
+ [444] divr8u::rem#4 = divr8u::rem#11
+ [445] call divr8u
+ [446] divr8u::return#3 = divr8u::return#0
+ to:div16u8u::@2
+div16u8u::@2: scope:[div16u8u] from div16u8u::@1
+ [447] div16u8u::quotient_lo#0 = divr8u::return#3
+ [448] div16u8u::return#0 = div16u8u::quotient_hi#0 w= div16u8u::quotient_lo#0
+ to:div16u8u::@return
+div16u8u::@return: scope:[div16u8u] from div16u8u::@2
+ [449] return
+ to:@return
+
+void cputln()
+cputln: scope:[cputln] from cputc::@1 cputc::@3
+ [450] conio_line_text = conio_line_text + $28
+ [451] conio_line_color = conio_line_color + $28
+ [452] conio_cursor_x = 0
+ [453] conio_cursor_y = ++ conio_cursor_y
+ [454] call cscroll
+ to:cputln::@return
+cputln::@return: scope:[cputln] from cputln
+ [455] return
+ to:@return
+
+char divr8u(char dividend , char divisor , char rem)
+divr8u: scope:[divr8u] from div16u8u div16u8u::@1
+ [456] divr8u::dividend#5 = phi( div16u8u/divr8u::dividend#1, div16u8u::@1/divr8u::dividend#2 )
+ [456] divr8u::rem#10 = phi( div16u8u/0, div16u8u::@1/divr8u::rem#4 )
+ to:divr8u::@1
+divr8u::@1: scope:[divr8u] from divr8u divr8u::@3
+ [457] divr8u::i#2 = phi( divr8u/0, divr8u::@3/divr8u::i#1 )
+ [457] divr8u::quotient#3 = phi( divr8u/0, divr8u::@3/divr8u::return#0 )
+ [457] divr8u::dividend#3 = phi( divr8u/divr8u::dividend#5, divr8u::@3/divr8u::dividend#0 )
+ [457] divr8u::rem#5 = phi( divr8u/divr8u::rem#10, divr8u::@3/divr8u::rem#11 )
+ [458] divr8u::rem#0 = divr8u::rem#5 << 1
+ [459] divr8u::$1 = divr8u::dividend#3 & $80
+ [460] if(divr8u::$1==0) goto divr8u::@2
+ to:divr8u::@4
+divr8u::@4: scope:[divr8u] from divr8u::@1
+ [461] divr8u::rem#1 = divr8u::rem#0 | 1
+ to:divr8u::@2
+divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4
+ [462] divr8u::rem#6 = phi( divr8u::@1/divr8u::rem#0, divr8u::@4/divr8u::rem#1 )
+ [463] divr8u::dividend#0 = divr8u::dividend#3 << 1
+ [464] divr8u::quotient#1 = divr8u::quotient#3 << 1
+ [465] if(divr8u::rem#6=5+1) goto main::@4 [ l rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [45] *((char *) 36869) = $ff [ l rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [46] chrout::petscii = reverse_on [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [48] chrout::petscii = red [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [50] chrout::petscii = down [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [54] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [56] *((char *) 8185) = brick [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [57] *((char *)$1ff9+c) = 2 [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [58] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [60] if(l<1+1) goto main::@12 [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [62] random::k#0 = 7 - l [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [63] main::$177 = l << 1 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$177 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$177 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:3 [ random::k#4 random::k#0 ]
+Statement [64] main::$26 = main::$177 + l [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$26 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$26 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [65] random::n#0 = $1a - main::$26 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 random::n#0 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 random::n#0 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [67] main::$29 = z#28 + m [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 main::$29 ] ( main:10 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 main::$29 ] { } ) always clobbers reg byte a
+Statement [68] if(main::$29<=$1f9) goto main::@14 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 ] ( main:10 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 ] { } ) always clobbers reg byte a
+Statement [70] *((char *) 36878) = $f [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [71] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [73] chrout::petscii = yellow [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [75] chrout::petscii = $50 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [77] chrout::petscii = $54 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [79] chrout::petscii = $53 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [81] chrout::petscii = $3a [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [83] *((char *) 211) = $12 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [88] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [90] chrout::petscii = green [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [92] *((char *) 211) = $a [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [96] chrout::petscii = home [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [98] chrout::petscii = green [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [100] chrout::petscii = reverse_on [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [102] *((char *) 211) = $f [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [103] if(tu#13<$a) goto main::@23 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [104] chrout::petscii = $31 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [106] chrout::petscii = $30 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [110] duck#0 = m [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 ] { } ) always clobbers reg byte a
+Statement [112] main::$61 = m + $1e15 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 main::$61 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 main::$61 score#38 ] { } ) always clobbers reg byte a
+Statement [113] duck#1 = main::$61 + duck#0 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] { } ) always clobbers reg byte a
+Statement [114] main::$66 = duck#1 + 1 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 score#38 ] { } ) always clobbers reg byte a
+Statement [115] main::$69 = duck#1 + $16 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 score#38 ] { } ) always clobbers reg byte a
+Statement [116] main::$72 = duck#1 + $17 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a
+Statement [117] if(duck#1>$1fe3) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a
+Statement [118] if(*((char *)duck#1)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp[1]:17 [ divr8u::rem#5 divr8u::rem#10 divr8u::rem#4 rem8u#48 rem8u#127 rem8u#25 divr8u::rem#11 divr8u::rem#6 divr8u::rem#0 divr8u::rem#1 divr8u::rem#2 ]
+Removing always clobbered register reg byte y as potential for zp[1]:95 [ n#52 n#89 n#109 n#20 n#101 n#14 n#1 ]
+Statement [119] if(*((char *)main::$66)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [120] if(*((char *)main::$69)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [121] if(*((char *)main::$72)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [125] if(time#11<$a) goto main::@27 [ l m hiscore#110 rem8u#25 y#18 n#20 tu#13 peephole#12 duck#1 score#19 z#100 ] ( main:10 [ l m hiscore#110 rem8u#25 y#18 n#20 tu#13 peephole#12 duck#1 score#19 z#100 ] { } ) always clobbers reg byte a
+Statement [127] score#4 = score#19 - $a [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#4 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#4 ] { { score#13 = score#4 } } ) always clobbers reg byte a
+Statement [129] *((char *) 36877) = $82 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [131] *((char *) 36877) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a
+Statement [132] main::$150 = duck#1 + c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$150 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$150 ] { } ) always clobbers reg byte a
+Statement [133] *((char *)main::$150) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [134] main::$151 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$151 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$151 ] { } ) always clobbers reg byte a
+Statement [135] main::$152 = main::$151 + 1+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$152 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$152 ] { } ) always clobbers reg byte a
+Statement [136] *((char *)main::$152) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [137] main::$153 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$153 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$153 ] { } ) always clobbers reg byte a
+Statement [138] main::$154 = main::$153 + $16+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$154 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$154 ] { } ) always clobbers reg byte a
+Statement [139] *((char *)main::$154) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [140] main::$155 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$155 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$155 ] { } ) always clobbers reg byte a
+Statement [141] main::$156 = main::$155 + $17+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$156 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$156 ] { } ) always clobbers reg byte a
+Statement [142] *((char *)main::$156) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [143] if(tu#1<$b) goto main::@22 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] { } ) always clobbers reg byte a
+Statement [146] *((char *) 36869) = $f0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [147] chrout::petscii = lower [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [163] if(score#38<=hiscore#110) goto main::@114 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [164] hiscore#124 = hiscore#110 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#124 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#124 ] { } ) always clobbers reg byte a
+Statement [166] utoa::value#2 = hiscore#19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::value#2 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::value#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } ) always clobbers reg byte a
+Statement asm { jsr$FD22 } always clobbers reg byte a reg byte x reg byte y
+Statement [180] hiscore#123 = hiscore#19 [ rem8u#25 y#18 hiscore#123 n#20 ] ( main:10 [ rem8u#25 y#18 hiscore#123 n#20 ] { } ) always clobbers reg byte a
+Statement [183] m = *((char *) 37151) [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [184] *((char *) 37154) = $7f [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [186] *((char *) 37154) = $ff [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [187] main::$78 = $10 & m [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 main::$78 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 main::$78 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [189] y#0 = -- y#18 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#0 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#0 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [191] main::$81 = $80 & n#14 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#10 main::$81 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#10 main::$81 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [195] main::$84 = 4 & m [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#11 main::$84 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#11 main::$84 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [197] y#2 = y#11 - $16 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#2 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#2 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [199] main::$88 = 8 & m [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#12 main::$88 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#12 main::$88 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [201] y#3 = y#12 + $16 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#3 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#3 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [203] main::$92 = $20 & m [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$92 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$92 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [205] *((char *) 36877) = $82 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [206] if(peephole#12!=duck#1) goto main::@34 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [207] main::$96 = $c - div16u8u::return#2 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [208] main::$179 = main::$96 << 2 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 main::$179 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 main::$179 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [209] main::$180 = main::$179 + main::$96 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$180 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$180 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [210] main::$97 = main::$180 << 1 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$97 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$97 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [211] score#8 = score#19 + main::$97 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 score#8 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 score#8 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [214] *((char *) 36877) = 0 [ l hiscore#110 tu#13 z#25 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 time#38 score#81 ] ( main:10 [ l hiscore#110 tu#13 z#25 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 time#38 score#81 ] { } ) always clobbers reg byte a
+Statement [216] main::$104 = y#13 + 1 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 ] { } ) always clobbers reg byte a
+Statement [217] main::$107 = y#13 + $16 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 ] { } ) always clobbers reg byte a
+Statement [218] main::$110 = y#13 + $17 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] { } ) always clobbers reg byte a
+Statement [219] if(*((char *)y#13)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [220] if(*((char *)main::$104)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$107 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [221] if(*((char *)main::$107)!=brick) goto main::@109 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [223] *((char *)y#35) = $fd [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [224] main::$125 = y#35 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$125 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$125 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [225] *((char *)main::$125) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [226] main::$127 = y#35 + 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [227] *((char *)main::$127) = $ed [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [228] main::$128 = main::$127 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$128 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$128 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [229] *((char *)main::$128) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [230] main::$130 = y#35 + $16 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [231] *((char *)main::$130) = $ee [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [232] main::$131 = main::$130 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$131 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$131 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [233] *((char *)main::$131) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [234] main::$133 = y#35 + $17 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [235] *((char *)main::$133) = $f0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [236] main::$134 = main::$133 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$134 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$134 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [237] *((char *)main::$134) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [239] *((char *)duck#1) = 0 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [240] main::$136 = duck#1 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$136 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$136 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [241] *((char *)main::$136) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [242] main::$138 = duck#1 + 1 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [243] *((char *)main::$138) = 1 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [244] main::$139 = main::$138 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$139 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$139 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [245] *((char *)main::$139) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [246] main::$141 = duck#1 + $16 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [247] *((char *)main::$141) = 2 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [248] main::$142 = main::$141 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$142 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$142 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [249] *((char *)main::$142) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [250] main::$144 = duck#1 + $17 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [251] *((char *)main::$144) = 3 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [252] main::$145 = main::$144 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$145 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$145 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [253] *((char *)main::$145) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [255] y#130 = y#35 [ l m hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#130 y#35 n#14 ] ( main:10 [ l m hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#130 y#35 n#14 ] { } ) always clobbers reg byte a
+Statement [256] if(*((char *)main::$110)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a reg byte y
+Statement [257] if(y#13>$1e16) goto main::@107 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a
+Statement [258] if(y#13>=$1fe3) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a
+Statement [259] main::$119 = peephole#12 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a
+Statement [260] *((char *)main::$119) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [261] main::$120 = main::$119 + 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$120 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$120 ] { } ) always clobbers reg byte a
+Statement [262] *((char *)main::$120) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [263] main::$122 = main::$119 + $16 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$122 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$122 ] { } ) always clobbers reg byte a
+Statement [264] *((char *)main::$122) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [265] main::$124 = main::$119 + $17 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$124 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$124 ] { } ) always clobbers reg byte a
+Statement [266] *((char *)main::$124) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a reg byte y
+Statement [267] y#141 = y#13 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 z#48 y#141 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 z#48 y#141 ] { } ) always clobbers reg byte a
+Statement [268] score#6 = score#19 - $a [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#6 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#6 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [272] main::$57 = $30 + tu#13 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 main::$57 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 main::$57 ] { { chrout::petscii = main::$57 } } ) always clobbers reg byte a
+Statement [273] chrout::petscii = main::$57 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { { chrout::petscii = main::$57 } } ) always clobbers reg byte a
+Statement [275] chrout::petscii = ducknumber[j#16] [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:162 [ j#16 j#5 ]
+Statement [278] chrout::petscii = chrono[j#13] [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:161 [ j#13 j#3 ]
+Statement [283] chrout::petscii = brick [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 ] ( main:10 [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 ] { } ) always clobbers reg byte a
+Statement [285] main::$35 = z#28 + m [ l rem8u#127 y#114 hiscore#110 n#89 main::$35 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 main::$35 ] { } ) always clobbers reg byte a
+Statement [286] z#9 = main::$35 + 1 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] { } ) always clobbers reg byte a
+Statement [287] if(z#9<$1fa) goto main::@13 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] { } ) always clobbers reg byte a
+Statement [288] chrout::petscii = right [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] ( main:10 [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:94 [ j#11 j#2 ]
+Statement [291] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:169 [ k#101 k#1 ]
+Statement [295] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] { } ) always clobbers reg byte a
+Statement [298] chrout::petscii = right [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] { } ) always clobbers reg byte a
+Statement [301] main::$3 = $1c00 + m [ m main::$3 ] ( main:10 [ m main::$3 ] { } ) always clobbers reg byte a
+Statement [302] *((char *)main::$3) = duck_udg[m] [ m ] ( main:10 [ m ] { } ) always clobbers reg byte a reg byte y
+Statement [308] conio_cursor_x = 0 [ conio_cursor_x gotoxy::y#5 ] ( gotoxy:17 [ conio_cursor_x gotoxy::y#5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x gotoxy::y#5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x gotoxy::y#5 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x gotoxy::y#5 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x gotoxy::y#5 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:121 [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ]
+Statement [310] gotoxy::$7 = (unsigned int)gotoxy::y#5 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } ) always clobbers reg byte a
+Statement [311] gotoxy::$8 = gotoxy::$7 << 2 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } ) always clobbers reg byte a
+Statement [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } ) always clobbers reg byte a
+Statement [313] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } ) always clobbers reg byte a
+Statement [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } ) always clobbers reg byte a
+Statement [315] conio_line_text = gotoxy::$5 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } ) always clobbers reg byte a
+Statement [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } ) always clobbers reg byte a
+Statement [317] conio_line_color = gotoxy::$6 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } ) always clobbers reg byte a
+Statement asm { ldapetscii jsr$ffd2 } always clobbers reg byte a reg byte x reg byte y
+Removing always clobbered register reg byte x as potential for zp[1]:17 [ divr8u::rem#5 divr8u::rem#10 divr8u::rem#4 rem8u#48 rem8u#127 rem8u#25 divr8u::rem#11 divr8u::rem#6 divr8u::rem#0 divr8u::rem#1 divr8u::rem#2 ]
+Removing always clobbered register reg byte x as potential for zp[1]:95 [ n#52 n#89 n#109 n#20 n#101 n#14 n#1 ]
+Removing always clobbered register reg byte x as potential for zp[1]:162 [ j#16 j#5 ]
+Removing always clobbered register reg byte y as potential for zp[1]:162 [ j#16 j#5 ]
+Removing always clobbered register reg byte x as potential for zp[1]:161 [ j#13 j#3 ]
+Removing always clobbered register reg byte y as potential for zp[1]:161 [ j#13 j#3 ]
+Removing always clobbered register reg byte x as potential for zp[1]:94 [ j#11 j#2 ]
+Removing always clobbered register reg byte y as potential for zp[1]:94 [ j#11 j#2 ]
+Removing always clobbered register reg byte x as potential for zp[1]:169 [ k#101 k#1 ]
+Removing always clobbered register reg byte y as potential for zp[1]:169 [ k#101 k#1 ]
+Statement [323] if(z#2<$1fa) goto clear_screen::@2 [ clear_screen::n#5 z#2 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:122 [ clear_screen::n#5 ]
+Statement [326] chrout::petscii = home [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } ) always clobbers reg byte a
+Statement [329] clear_screen::$5 = $1e00 + z#2 [ clear_screen::n#5 z#2 clear_screen::$5 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 ] { } ) always clobbers reg byte a
+Statement [330] clear_screen::$4 = clear_screen::$5 + c [ clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } ) always clobbers reg byte a
+Statement [331] *((char *)clear_screen::$4) = 0 [ clear_screen::n#5 z#2 clear_screen::$5 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 ] { } ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp[1]:122 [ clear_screen::n#5 ]
+Statement [332] *((char *)clear_screen::$5) = clear_screen::n#5 [ clear_screen::n#5 z#2 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 ] { } ) always clobbers reg byte a reg byte y
+Statement [339] cputs::c#1 = *cputs::s#10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] ( main:10::cputs:31 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:35 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:39 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:152 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:156 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:158 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:162 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:169 [ rem8u#25 y#18 n#20 hiscore#19 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:173 [ rem8u#25 y#18 n#20 hiscore#19 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } ) always clobbers reg byte a reg byte y
+Statement [346] m = *((char *) 37140) [ m random::k#4 random::n#4 ] ( main:10::random:66 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 m random::k#4 random::n#4 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } main:10::random:109 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 m random::k#4 random::n#4 ] { } main:10::random:111 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 m random::k#4 random::n#4 ] { } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:8 [ random::n#4 random::n#0 ]
+Statement [352] if(score#13<=$fde8) goto write_score::@15 [ score#13 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#13 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#13 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#13 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [355] m = 0 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [356] if(m<4) goto write_score::@6 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [357] utoa::value#1 = score#38 [ score#38 utoa::value#1 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::value#1 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::value#1 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::value#1 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [359] if(score#38<9+1) goto write_score::@2 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [360] *(points+2) = *buffer [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [361] *(points+3) = *(buffer+1) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [362] if(score#38<$63+1) goto write_score::@3 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [363] *(points+1) = *buffer [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [364] *(points+2) = *(buffer+1) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [365] *(points+3) = *(buffer+2) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [366] chrout::petscii = yellow [ chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [368] chrout::petscii = home [ chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [370] *((char *) 211) = 4 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [371] m = 0 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [372] if(m<4) goto write_score::@10 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [374] chrout::petscii = points[m] [ m chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a reg byte y
+Statement [377] points[m] = '0' [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a reg byte y
+Statement asm { lda#0 ldy#0 ldx#0 jsr$ffdb } always clobbers reg byte a reg byte x reg byte y
+Statement [382] m = 0 [ m wait::n#6 z#53 ] ( main:10::wait:130 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 score#38 m wait::n#6 z#53 ] { { z#100 = z#53 } } main:10::wait:212 [ l hiscore#110 tu#13 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 score#8 m wait::n#6 z#53 ] { { z#100 = z#53 } } main:10::wait:238 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#53 ] { { z#48 = z#53 } } main:10::wait:254 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#53 ] { { z#25 = z#53 } } main:10::wait:271 [ l hiscore#110 tu#13 peephole#12 duck#1 score#38 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m wait::n#6 z#53 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:44 [ wait::n#6 ]
+Statement [387] if(z#23<$21c) goto wait::@3 [ m wait::n#6 z#23 ] ( main:10::wait:130 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 score#38 m wait::n#6 z#23 ] { { z#100 = z#53 } } main:10::wait:212 [ l hiscore#110 tu#13 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 score#8 m wait::n#6 z#23 ] { { z#100 = z#53 } } main:10::wait:238 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#23 ] { { z#48 = z#53 } } main:10::wait:254 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#23 ] { { z#25 = z#53 } } main:10::wait:271 [ l hiscore#110 tu#13 peephole#12 duck#1 score#38 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m wait::n#6 z#23 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [394] *utoa::buffer#10 = DIGITS[utoa::$11] [ utoa::buffer#10 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::buffer#10 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::buffer#10 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::buffer#10 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::buffer#10 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a reg byte y
+Statement [395] utoa::buffer#3 = ++ utoa::buffer#10 [ utoa::buffer#3 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::buffer#3 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::buffer#3 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::buffer#3 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::buffer#3 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [396] *utoa::buffer#3 = 0 [ ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a reg byte y
+Statement [398] utoa::$10 = utoa::digit#2 << 1 [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:33 [ utoa::digit#2 utoa::digit#1 ]
+Removing always clobbered register reg byte a as potential for zp[1]:37 [ utoa::started#2 utoa::started#4 ]
+Statement [399] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10] [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [401] if(utoa::value#3>=utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [404] utoa_append::buffer#0 = utoa::buffer#10 [ utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [405] utoa_append::value#0 = utoa::value#3 [ utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [406] utoa_append::sub#0 = utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [408] utoa_append::return#0 = utoa_append::value#2 [ utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [409] utoa::value#0 = utoa_append::return#0 [ utoa::digit#2 utoa::buffer#10 utoa::value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement asm { jsr$ffde stal stxm } always clobbers reg byte a reg byte x reg byte y
+Statement [412] read_chrono::$0 = m << 8 [ l read_chrono::$0 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l read_chrono::$0 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [413] div16u8u::dividend#0 = read_chrono::$0 + l [ l div16u8u::dividend#0 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::dividend#0 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [415] div16u8u::return#2 = div16u8u::return#0 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [416] *((char *)$1e15+c) = 7 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [417] *((char *) 7701) = $b9 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [418] if(div16u8u::return#2>=$a) goto read_chrono::@return [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [419] read_chrono::$5 = $b9 - div16u8u::return#2 [ l divr8u::rem#11 div16u8u::return#2 read_chrono::$5 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 read_chrono::$5 ] { } ) always clobbers reg byte a
+Statement [420] *((char *) 7701) = read_chrono::$5 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [423] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte y
+Statement [424] conio_line_color[conio_cursor_x] = conio_textcolor [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a reg byte y
+Statement [426] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:7 [ utoa_append::digit#2 utoa_append::digit#1 ]
+Statement [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp[1]:33 [ utoa::digit#2 utoa::digit#1 ]
+Statement [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [450] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [451] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [452] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [461] divr8u::rem#1 = divr8u::rem#0 | 1 [ divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] ( main:10::read_chrono:182::div16u8u:414::divr8u:440 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::dividend#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::dividend#1 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#2 } } main:10::read_chrono:182::div16u8u:414::divr8u:445 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::quotient_hi#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::rem#10 = divr8u::rem#4 divr8u::rem#11 } { divr8u::dividend#2 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#3 } } ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp[1]:26 [ divr8u::dividend#3 divr8u::dividend#5 divr8u::dividend#1 divr8u::dividend#2 divr8u::dividend#0 ]
+Removing always clobbered register reg byte a as potential for zp[1]:18 [ divr8u::quotient#3 divr8u::return#0 divr8u::quotient#1 divr8u::quotient#2 ]
+Removing always clobbered register reg byte a as potential for zp[1]:22 [ divr8u::i#2 divr8u::i#1 ]
+Removing always clobbered register reg byte a as potential for zp[1]:73 [ div16u8u::quotient_hi#0 ]
+Statement [465] if(divr8u::rem#6=5+1) goto main::@4 [ l rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [45] *((char *) 36869) = $ff [ l rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [46] chrout::petscii = reverse_on [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [48] chrout::petscii = red [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [50] chrout::petscii = down [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#109 ] { } ) always clobbers reg byte a
+Statement [53] if(k#101<$16) goto main::@7 [ l rem8u#127 y#114 hiscore#110 k#101 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 k#101 n#89 ] { } ) always clobbers reg byte a
+Statement [54] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [56] *((char *) 8185) = brick [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [57] *((char *)$1ff9+c) = 2 [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [58] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [60] if(l<1+1) goto main::@12 [ l rem8u#127 y#114 hiscore#110 n#89 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 ] { } ) always clobbers reg byte a
+Statement [62] random::k#0 = 7 - l [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [63] main::$177 = l << 1 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$177 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$177 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [64] main::$26 = main::$177 + l [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$26 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 main::$26 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [65] random::n#0 = $1a - main::$26 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 random::n#0 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 random::k#0 random::n#0 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } ) always clobbers reg byte a
+Statement [67] main::$29 = z#28 + m [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 main::$29 ] ( main:10 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 main::$29 ] { } ) always clobbers reg byte a
+Statement [68] if(main::$29<=$1f9) goto main::@14 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 ] ( main:10 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 ] { } ) always clobbers reg byte a
+Statement [70] *((char *) 36878) = $f [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [71] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [73] chrout::petscii = yellow [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [75] chrout::petscii = $50 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [77] chrout::petscii = $54 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [79] chrout::petscii = $53 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [81] chrout::petscii = $3a [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [83] *((char *) 211) = $12 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 ] { } ) always clobbers reg byte a
+Statement [85] if(j#13<4) goto main::@18 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] { } ) always clobbers reg byte a
+Statement [88] chrout::petscii = home [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [90] chrout::petscii = green [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [92] *((char *) 211) = $a [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } ) always clobbers reg byte a
+Statement [94] if(j#16<5) goto main::@21 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] { } ) always clobbers reg byte a
+Statement [96] chrout::petscii = home [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [98] chrout::petscii = green [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [100] chrout::petscii = reverse_on [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [102] *((char *) 211) = $f [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [103] if(tu#13<$a) goto main::@23 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [104] chrout::petscii = $31 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [106] chrout::petscii = $30 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { } ) always clobbers reg byte a
+Statement [110] duck#0 = m [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 ] { } ) always clobbers reg byte a
+Statement [112] main::$61 = m + $1e15 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 main::$61 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 main::$61 score#38 ] { } ) always clobbers reg byte a
+Statement [113] duck#1 = main::$61 + duck#0 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] { } ) always clobbers reg byte a
+Statement [114] main::$66 = duck#1 + 1 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 score#38 ] { } ) always clobbers reg byte a
+Statement [115] main::$69 = duck#1 + $16 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 score#38 ] { } ) always clobbers reg byte a
+Statement [116] main::$72 = duck#1 + $17 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a
+Statement [117] if(duck#1>$1fe3) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a
+Statement [118] if(*((char *)duck#1)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$66 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [119] if(*((char *)main::$66)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$69 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$69 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [120] if(*((char *)main::$69)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$72 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 main::$72 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [121] if(*((char *)main::$72)==brick) goto main::@24 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] ( main:10 [ l m hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [125] if(time#11<$a) goto main::@27 [ l m hiscore#110 rem8u#25 y#18 n#20 tu#13 peephole#12 duck#1 score#19 z#100 ] ( main:10 [ l m hiscore#110 rem8u#25 y#18 n#20 tu#13 peephole#12 duck#1 score#19 z#100 ] { } ) always clobbers reg byte a
+Statement [127] score#4 = score#19 - $a [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#4 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#4 ] { { score#13 = score#4 } } ) always clobbers reg byte a
+Statement [129] *((char *) 36877) = $82 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [131] *((char *) 36877) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a
+Statement [132] main::$150 = duck#1 + c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$150 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$150 ] { } ) always clobbers reg byte a
+Statement [133] *((char *)main::$150) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [134] main::$151 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$151 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$151 ] { } ) always clobbers reg byte a
+Statement [135] main::$152 = main::$151 + 1+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$152 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$152 ] { } ) always clobbers reg byte a
+Statement [136] *((char *)main::$152) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [137] main::$153 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$153 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$153 ] { } ) always clobbers reg byte a
+Statement [138] main::$154 = main::$153 + $16+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$154 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 main::$154 ] { } ) always clobbers reg byte a
+Statement [139] *((char *)main::$154) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 duck#1 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [140] main::$155 = duck#1 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$155 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$155 ] { } ) always clobbers reg byte a
+Statement [141] main::$156 = main::$155 + $17+c [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$156 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 main::$156 ] { } ) always clobbers reg byte a
+Statement [142] *((char *)main::$156) = 0 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [143] if(tu#1<$b) goto main::@22 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] ( main:10 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 z#25 peephole#12 score#38 ] { } ) always clobbers reg byte a
+Statement [146] *((char *) 36869) = $f0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [147] chrout::petscii = lower [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [163] if(score#38<=hiscore#110) goto main::@114 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor hiscore#110 rem8u#25 y#18 n#20 score#38 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor hiscore#110 rem8u#25 y#18 n#20 score#38 ] { } ) always clobbers reg byte a
+Statement [164] hiscore#124 = hiscore#110 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#124 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#124 ] { } ) always clobbers reg byte a
+Statement [166] utoa::value#2 = hiscore#19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::value#2 ] ( main:10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::value#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } ) always clobbers reg byte a
+Statement asm { jsr$FD22 } always clobbers reg byte a reg byte x reg byte y
+Statement [180] hiscore#123 = hiscore#19 [ rem8u#25 y#18 hiscore#123 n#20 ] ( main:10 [ rem8u#25 y#18 hiscore#123 n#20 ] { } ) always clobbers reg byte a
+Statement [183] m = *((char *) 37151) [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [184] *((char *) 37154) = $7f [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [185] n#14 = *((char *) 37152) [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [186] *((char *) 37154) = $ff [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [187] main::$78 = $10 & m [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 main::$78 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 main::$78 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [189] y#0 = -- y#18 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#0 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#0 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [191] main::$81 = $80 & n#14 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#10 main::$81 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#10 main::$81 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [195] main::$84 = 4 & m [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#11 main::$84 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#11 main::$84 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [197] y#2 = y#11 - $16 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#2 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#2 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [199] main::$88 = 8 & m [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#12 main::$88 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#12 main::$88 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [201] y#3 = y#12 + $16 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#3 div16u8u::return#2 ] ( main:10 [ l m hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#3 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [203] main::$92 = $20 & m [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$92 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$92 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [205] *((char *) 36877) = $82 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [206] if(peephole#12!=duck#1) goto main::@34 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [207] main::$96 = $c - div16u8u::return#2 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [208] main::$179 = main::$96 << 2 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 main::$179 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$96 main::$179 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [209] main::$180 = main::$179 + main::$96 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$180 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$180 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [210] main::$97 = main::$180 << 1 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$97 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 score#19 z#100 divr8u::rem#11 n#14 y#13 main::$97 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [211] score#8 = score#19 + main::$97 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 score#8 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 score#8 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [214] *((char *) 36877) = 0 [ l hiscore#110 tu#13 z#25 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 time#38 score#81 ] ( main:10 [ l hiscore#110 tu#13 z#25 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 time#38 score#81 ] { } ) always clobbers reg byte a
+Statement [216] main::$104 = y#13 + 1 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 ] { } ) always clobbers reg byte a
+Statement [217] main::$107 = y#13 + $16 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 ] { } ) always clobbers reg byte a
+Statement [218] main::$110 = y#13 + $17 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] { } ) always clobbers reg byte a
+Statement [219] if(*((char *)y#13)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$104 main::$107 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [220] if(*((char *)main::$104)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$107 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$107 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [221] if(*((char *)main::$107)!=brick) goto main::@109 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$110 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$110 ] { } ) always clobbers reg byte a reg byte y
+Statement [223] *((char *)y#35) = $fd [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [224] main::$125 = y#35 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$125 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$125 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [225] *((char *)main::$125) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [226] main::$127 = y#35 + 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [227] *((char *)main::$127) = $ed [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$127 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [228] main::$128 = main::$127 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$128 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$128 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [229] *((char *)main::$128) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [230] main::$130 = y#35 + $16 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [231] *((char *)main::$130) = $ee [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$130 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [232] main::$131 = main::$130 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$131 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$131 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [233] *((char *)main::$131) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [234] main::$133 = y#35 + $17 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [235] *((char *)main::$133) = $f0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$133 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [236] main::$134 = main::$133 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$134 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 main::$134 ] { { z#48 = z#53 } } ) always clobbers reg byte a
+Statement [237] *((char *)main::$134) = 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 z#48 ] { { z#48 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [239] *((char *)duck#1) = 0 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [240] main::$136 = duck#1 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$136 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$136 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [241] *((char *)main::$136) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [242] main::$138 = duck#1 + 1 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [243] *((char *)main::$138) = 1 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$138 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [244] main::$139 = main::$138 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$139 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$139 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [245] *((char *)main::$139) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [246] main::$141 = duck#1 + $16 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [247] *((char *)main::$141) = 2 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$141 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [248] main::$142 = main::$141 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$142 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$142 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [249] *((char *)main::$142) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [250] main::$144 = duck#1 + $17 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [251] *((char *)main::$144) = 3 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$144 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [252] main::$145 = main::$144 + c [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$145 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 main::$145 ] { { z#25 = z#53 } } ) always clobbers reg byte a
+Statement [253] *((char *)main::$145) = 7 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] ( main:10 [ l hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 ] { { z#25 = z#53 } } ) always clobbers reg byte a reg byte y
+Statement [255] y#130 = y#35 [ l m hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#130 y#35 n#14 ] ( main:10 [ l m hiscore#110 tu#13 z#25 duck#1 time#17 score#43 divr8u::rem#11 y#130 y#35 n#14 ] { } ) always clobbers reg byte a
+Statement [256] if(*((char *)main::$110)==brick) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a reg byte y
+Statement [257] if(y#13>$1e16) goto main::@107 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a
+Statement [258] if(y#13>=$1fe3) goto main::@36 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a
+Statement [259] main::$119 = peephole#12 + c [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a
+Statement [260] *((char *)main::$119) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [261] main::$120 = main::$119 + 1 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$120 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$120 ] { } ) always clobbers reg byte a
+Statement [262] *((char *)main::$120) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [263] main::$122 = main::$119 + $16 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$122 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 main::$122 ] { } ) always clobbers reg byte a
+Statement [264] *((char *)main::$122) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$119 ] { } ) always clobbers reg byte a reg byte y
+Statement [265] main::$124 = main::$119 + $17 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$124 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 main::$124 ] { } ) always clobbers reg byte a
+Statement [266] *((char *)main::$124) = 0 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 y#13 z#48 ] { } ) always clobbers reg byte a reg byte y
+Statement [267] y#141 = y#13 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 z#48 y#141 ] ( main:10 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 n#14 z#48 y#141 ] { } ) always clobbers reg byte a
+Statement [268] score#6 = score#19 - $a [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#6 ] ( main:10 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#6 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [272] main::$57 = $30 + tu#13 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 main::$57 ] ( main:10 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 main::$57 ] { { chrout::petscii = main::$57 } } ) always clobbers reg byte a
+Statement [273] chrout::petscii = main::$57 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] ( main:10 [ l chrout::petscii hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 ] { { chrout::petscii = main::$57 } } ) always clobbers reg byte a
+Statement [275] chrout::petscii = ducknumber[j#16] [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#16 score#38 ] { } ) always clobbers reg byte a reg byte y
+Statement [278] chrout::petscii = chrono[j#13] [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#128 j#13 ] { } ) always clobbers reg byte a reg byte y
+Statement [282] if(j#11<=m) goto main::@15 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] ( main:10 [ l m rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] { } ) always clobbers reg byte a
+Statement [283] chrout::petscii = brick [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 ] ( main:10 [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 ] { } ) always clobbers reg byte a
+Statement [285] main::$35 = z#28 + m [ l rem8u#127 y#114 hiscore#110 n#89 main::$35 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 main::$35 ] { } ) always clobbers reg byte a
+Statement [286] z#9 = main::$35 + 1 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] { } ) always clobbers reg byte a
+Statement [287] if(z#9<$1fa) goto main::@13 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 n#89 z#9 ] { } ) always clobbers reg byte a
+Statement [288] chrout::petscii = right [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] ( main:10 [ l m chrout::petscii rem8u#127 y#114 hiscore#110 n#89 z#28 j#11 ] { } ) always clobbers reg byte a
+Statement [291] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 ] { } ) always clobbers reg byte a
+Statement [294] if(n#101<$16) goto main::@10 [ l rem8u#127 y#114 hiscore#110 k#101 n#101 ] ( main:10 [ l rem8u#127 y#114 hiscore#110 k#101 n#101 ] { } ) always clobbers reg byte a
+Statement [295] chrout::petscii = brick [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] { } ) always clobbers reg byte a
+Statement [298] chrout::petscii = right [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] ( main:10 [ l chrout::petscii rem8u#127 y#114 hiscore#110 k#101 n#101 ] { } ) always clobbers reg byte a
+Statement [301] main::$3 = $1c00 + m [ m main::$3 ] ( main:10 [ m main::$3 ] { } ) always clobbers reg byte a
+Statement [302] *((char *)main::$3) = duck_udg[m] [ m ] ( main:10 [ m ] { } ) always clobbers reg byte a reg byte y
+Statement [308] conio_cursor_x = 0 [ conio_cursor_x gotoxy::y#5 ] ( gotoxy:17 [ conio_cursor_x gotoxy::y#5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x gotoxy::y#5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x gotoxy::y#5 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x gotoxy::y#5 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x gotoxy::y#5 ] { } ) always clobbers reg byte a
+Statement [310] gotoxy::$7 = (unsigned int)gotoxy::y#5 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$7 ] { } ) always clobbers reg byte a
+Statement [311] gotoxy::$8 = gotoxy::$7 << 2 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$7 gotoxy::$8 ] { } ) always clobbers reg byte a
+Statement [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::$9 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::$9 ] { } ) always clobbers reg byte a
+Statement [313] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { } ) always clobbers reg byte a
+Statement [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 gotoxy::$5 ] { } ) always clobbers reg byte a
+Statement [315] conio_line_text = gotoxy::$5 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text gotoxy::line_offset#0 ] { } ) always clobbers reg byte a
+Statement [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text gotoxy::$6 ] { } ) always clobbers reg byte a
+Statement [317] conio_line_color = gotoxy::$6 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } conio_c64_init:8::gotoxy:17 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { gotoxy::y#2 = gotoxy::y#4 conio_c64_init::line#2 } } main:10::clear_screen:27::gotoxy:325 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:10::clear_screen:44::gotoxy:325 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:10::clear_screen:145::gotoxy:325 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } ) always clobbers reg byte a
+Statement asm { ldapetscii jsr$ffd2 } always clobbers reg byte a reg byte x reg byte y
+Statement [323] if(z#2<$1fa) goto clear_screen::@2 [ clear_screen::n#5 z#2 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 ] { } ) always clobbers reg byte a
+Statement [326] chrout::petscii = home [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color chrout::petscii ] { } ) always clobbers reg byte a
+Statement [329] clear_screen::$5 = $1e00 + z#2 [ clear_screen::n#5 z#2 clear_screen::$5 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 ] { } ) always clobbers reg byte a
+Statement [330] clear_screen::$4 = clear_screen::$5 + c [ clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 clear_screen::$4 ] { } ) always clobbers reg byte a
+Statement [331] *((char *)clear_screen::$4) = 0 [ clear_screen::n#5 z#2 clear_screen::$5 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 clear_screen::$5 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 clear_screen::$5 ] { } ) always clobbers reg byte a reg byte y
+Statement [332] *((char *)clear_screen::$5) = clear_screen::n#5 [ clear_screen::n#5 z#2 ] ( main:10::clear_screen:27 [ rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:44 [ l rem8u#127 y#114 hiscore#110 n#109 clear_screen::n#5 z#2 ] { } main:10::clear_screen:145 [ hiscore#110 rem8u#25 y#18 n#20 score#38 clear_screen::n#5 z#2 ] { } ) always clobbers reg byte a reg byte y
+Statement [339] cputs::c#1 = *cputs::s#10 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] ( main:10::cputs:31 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:35 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:39 [ rem8u#127 y#114 hiscore#110 n#109 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:152 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:156 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:158 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:162 [ hiscore#110 rem8u#25 y#18 n#20 score#38 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:169 [ rem8u#25 y#18 n#20 hiscore#19 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } main:10::cputs:173 [ rem8u#25 y#18 n#20 hiscore#19 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputs::s#10 cputs::c#1 ] { } ) always clobbers reg byte a reg byte y
+Statement [346] m = *((char *) 37140) [ m random::k#4 random::n#4 ] ( main:10::random:66 [ l rem8u#127 y#114 hiscore#110 n#89 z#28 m random::k#4 random::n#4 ] { { random::k#0 = random::k#4 } { random::n#0 = random::n#4 } } main:10::random:109 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 score#38 m random::k#4 random::n#4 ] { } main:10::random:111 [ l hiscore#110 tu#13 rem8u#48 y#49 z#102 peephole#52 n#52 duck#0 score#38 m random::k#4 random::n#4 ] { } ) always clobbers reg byte a
+Statement [352] if(score#13<=$fde8) goto write_score::@15 [ score#13 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#13 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#13 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#13 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [355] m = 0 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [356] if(m<4) goto write_score::@6 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [357] utoa::value#1 = score#38 [ score#38 utoa::value#1 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::value#1 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::value#1 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::value#1 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [359] if(score#38<9+1) goto write_score::@2 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [360] *(points+2) = *buffer [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [361] *(points+3) = *(buffer+1) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [362] if(score#38<$63+1) goto write_score::@3 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [363] *(points+1) = *buffer [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [364] *(points+2) = *(buffer+1) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [365] *(points+3) = *(buffer+2) [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [366] chrout::petscii = yellow [ chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [368] chrout::petscii = home [ chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [370] *((char *) 211) = 4 [ score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [371] m = 0 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [372] if(m<4) goto write_score::@10 [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a
+Statement [374] chrout::petscii = points[m] [ m chrout::petscii score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m chrout::petscii score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m chrout::petscii score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m chrout::petscii score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a reg byte y
+Statement [377] points[m] = '0' [ m score#38 ] ( main:10::write_score:87 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 m score#38 ] { } main:10::write_score:128 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 m score#38 ] { { score#13 = score#4 } } main:10::write_score:269 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m score#38 ] { { score#13 = score#6 } } ) always clobbers reg byte a reg byte y
+Statement asm { lda#0 ldy#0 ldx#0 jsr$ffdb } always clobbers reg byte a reg byte x reg byte y
+Statement [382] m = 0 [ m wait::n#6 z#53 ] ( main:10::wait:130 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 score#38 m wait::n#6 z#53 ] { { z#100 = z#53 } } main:10::wait:212 [ l hiscore#110 tu#13 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 score#8 m wait::n#6 z#53 ] { { z#100 = z#53 } } main:10::wait:238 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#53 ] { { z#48 = z#53 } } main:10::wait:254 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#53 ] { { z#25 = z#53 } } main:10::wait:271 [ l hiscore#110 tu#13 peephole#12 duck#1 score#38 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m wait::n#6 z#53 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [387] if(z#23<$21c) goto wait::@3 [ m wait::n#6 z#23 ] ( main:10::wait:130 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 score#38 m wait::n#6 z#23 ] { { z#100 = z#53 } } main:10::wait:212 [ l hiscore#110 tu#13 peephole#12 duck#1 divr8u::rem#11 n#14 y#13 score#8 m wait::n#6 z#23 ] { { z#100 = z#53 } } main:10::wait:238 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#23 ] { { z#48 = z#53 } } main:10::wait:254 [ l hiscore#110 tu#13 duck#1 time#17 score#43 divr8u::rem#11 y#35 n#14 m wait::n#6 z#23 ] { { z#25 = z#53 } } main:10::wait:271 [ l hiscore#110 tu#13 peephole#12 duck#1 score#38 divr8u::rem#11 n#14 y#13 div16u8u::return#2 m wait::n#6 z#23 ] { { z#100 = z#53 } } ) always clobbers reg byte a
+Statement [394] *utoa::buffer#10 = DIGITS[utoa::$11] [ utoa::buffer#10 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::buffer#10 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::buffer#10 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::buffer#10 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::buffer#10 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a reg byte y
+Statement [395] utoa::buffer#3 = ++ utoa::buffer#10 [ utoa::buffer#3 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::buffer#3 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::buffer#3 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::buffer#3 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::buffer#3 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [396] *utoa::buffer#3 = 0 [ ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a reg byte y
+Statement [398] utoa::$10 = utoa::digit#2 << 1 [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::$10 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [399] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10] [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [401] if(utoa::value#3>=utoa::digit_value#0) goto utoa::@5 [ utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::started#2 utoa::buffer#10 utoa::digit_value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement [404] utoa_append::buffer#0 = utoa::buffer#10 [ utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::value#3 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [405] utoa_append::value#0 = utoa::value#3 [ utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [406] utoa_append::sub#0 = utoa::digit_value#0 [ utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [408] utoa_append::return#0 = utoa_append::value#2 [ utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::return#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [409] utoa::value#0 = utoa_append::return#0 [ utoa::digit#2 utoa::buffer#10 utoa::value#0 ] ( main:10::utoa:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } } main:10::write_score:87::utoa:358 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:128::utoa:358 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } } main:10::write_score:269::utoa:358 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } } ) always clobbers reg byte a
+Statement asm { jsr$ffde stal stxm } always clobbers reg byte a reg byte x reg byte y
+Statement [412] read_chrono::$0 = m << 8 [ l read_chrono::$0 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l read_chrono::$0 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [413] div16u8u::dividend#0 = read_chrono::$0 + l [ l div16u8u::dividend#0 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::dividend#0 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [415] div16u8u::return#2 = div16u8u::return#0 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { { div16u8u::return#0 = div16u8u::return#2 } } ) always clobbers reg byte a
+Statement [416] *((char *)$1e15+c) = 7 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [417] *((char *) 7701) = $b9 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [418] if(div16u8u::return#2>=$a) goto read_chrono::@return [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [419] read_chrono::$5 = $b9 - div16u8u::return#2 [ l divr8u::rem#11 div16u8u::return#2 read_chrono::$5 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 read_chrono::$5 ] { } ) always clobbers reg byte a
+Statement [420] *((char *) 7701) = read_chrono::$5 [ l divr8u::rem#11 div16u8u::return#2 ] ( main:10::read_chrono:182 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l divr8u::rem#11 div16u8u::return#2 ] { } ) always clobbers reg byte a
+Statement [423] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte y
+Statement [424] conio_line_color[conio_cursor_x] = conio_textcolor [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a reg byte y
+Statement [426] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::value#2 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y
+Statement [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:10::utoa:167::utoa_append:407 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor rem8u#25 y#18 n#20 hiscore#19 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#10 = utoa::value#2 hiscore#19 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:87::utoa:358::utoa_append:407 [ l rem8u#127 y#114 hiscore#110 n#89 z#128 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:128::utoa:358::utoa_append:407 [ l hiscore#110 rem8u#25 y#18 n#20 tu#1 peephole#12 duck#1 z#100 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { score#13 = score#4 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } main:10::write_score:269::utoa:358::utoa_append:407 [ l hiscore#110 tu#13 peephole#12 duck#1 z#100 divr8u::rem#11 n#14 y#13 div16u8u::return#2 score#38 utoa::digit#2 utoa::buffer#10 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { score#13 = score#6 } { utoa::value#1 = utoa::value#10 score#38 } { utoa_append::buffer#0 = utoa::buffer#10 } { utoa_append::value#0 = utoa::value#3 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
+Statement [450] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [451] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [452] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( main:10::cputs:31::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:428 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:428 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:428 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:31::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:35::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:39::cputc:344::cputln:431 [ rem8u#127 y#114 hiscore#110 n#109 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:152::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:156::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:158::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:162::cputc:344::cputln:431 [ hiscore#110 rem8u#25 y#18 n#20 score#38 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:169::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } main:10::cputs:173::cputc:344::cputln:431 [ rem8u#25 y#18 n#20 hiscore#19 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { cputc::c#0 = cputs::c#1 } } ) always clobbers reg byte a
+Statement [459] divr8u::$1 = divr8u::dividend#3 & $80 [ divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#0 divr8u::$1 ] ( main:10::read_chrono:182::div16u8u:414::divr8u:440 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::dividend#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#0 divr8u::$1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::dividend#1 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#2 } } main:10::read_chrono:182::div16u8u:414::divr8u:445 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::quotient_hi#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#0 divr8u::$1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::rem#10 = divr8u::rem#4 divr8u::rem#11 } { divr8u::dividend#2 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#3 } } ) always clobbers reg byte a
+Statement [461] divr8u::rem#1 = divr8u::rem#0 | 1 [ divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] ( main:10::read_chrono:182::div16u8u:414::divr8u:440 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::dividend#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::dividend#1 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#2 } } main:10::read_chrono:182::div16u8u:414::divr8u:445 [ hiscore#110 y#18 tu#13 peephole#12 duck#1 score#19 z#100 l div16u8u::quotient_hi#0 divr8u::dividend#3 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 ] { { div16u8u::return#0 = div16u8u::return#2 } { divr8u::rem#10 = divr8u::rem#4 divr8u::rem#11 } { divr8u::dividend#2 = divr8u::dividend#5 } { divr8u::return#0 = divr8u::return#3 } } ) always clobbers reg byte a
+Statement [465] if(divr8u::rem#6DEFAULT_SCREEN
+ sta.z conio_line_text+1
+ // [4] conio_line_color = COLORRAM -- pbuz1=pbuc1
+ lda #COLORRAM
+ sta.z conio_line_color+1
+ // [5] conio_textcolor = LIGHT_BLUE -- vbuz1=vbuc1
+ lda #LIGHT_BLUE
+ sta.z conio_textcolor
+ // [6] l = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z l
+ // [7] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ // [8] call conio_c64_init
+ jsr conio_c64_init
+ // [9] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
+ __b1_from___init1:
+ jmp __b1
+ // __start::@1
+ __b1:
+ // [10] call main
+ jsr main
+ jmp __breturn
+ // __start::@return
+ __breturn:
+ // [11] return
+ rts
+}
+ // conio_c64_init
+// Set initial cursor position
+conio_c64_init: {
+ // Position cursor at current line
+ .label BASIC_CURSOR_LINE = $d6
+ .label line = $4c
+ // [12] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuz1=_deref_pbuc1
+ lda.z BASIC_CURSOR_LINE
+ sta.z line
+ // [13] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuz1_lt_vbuc1_then_la1
+ lda.z line
+ cmp #$19
+ bcc __b2_from_conio_c64_init
+ // [15] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
+ __b1_from_conio_c64_init:
+ // [15] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuz1=vbuc1
+ lda #$19-1
+ sta.z line
+ jmp __b1
+ // [14] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
+ __b2_from_conio_c64_init:
+ jmp __b2
+ // conio_c64_init::@2
+ __b2:
+ // [15] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
+ __b1_from___b2:
+ // [15] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy
+ jmp __b1
+ // conio_c64_init::@1
+ __b1:
+ // [16] gotoxy::y#2 = conio_c64_init::line#2
+ // [17] call gotoxy
+ // [304] phi from conio_c64_init::@1 to gotoxy [phi:conio_c64_init::@1->gotoxy]
+ gotoxy_from___b1:
+ // [304] phi gotoxy::y#4 = gotoxy::y#2 [phi:conio_c64_init::@1->gotoxy#0] -- register_copy
+ jsr gotoxy
+ jmp __breturn
+ // conio_c64_init::@return
+ __breturn:
+ // [18] return
+ rts
+}
+ // main
+main: {
+ .label __3 = $70
+ .label __26 = 8
+ .label __29 = 5
+ .label __35 = $66
+ .label __57 = $64
+ .label __61 = $d
+ .label __66 = $b
+ .label __69 = $19
+ .label __72 = $1b
+ .label __78 = $10
+ .label __81 = 7
+ .label __84 = 3
+ .label __88 = $36
+ .label __92 = $37
+ .label __96 = $2e
+ .label __97 = $2e
+ .label __104 = $5d
+ .label __107 = $5f
+ .label __110 = $61
+ .label __119 = $4a
+ .label __120 = $51
+ .label __122 = $53
+ .label __124 = $4a
+ .label __125 = $4d
+ .label __127 = $3a
+ .label __128 = $3a
+ .label __130 = $3c
+ .label __131 = $3c
+ .label __133 = $3e
+ .label __134 = $3e
+ .label __136 = $4f
+ .label __138 = $40
+ .label __139 = $40
+ .label __141 = $42
+ .label __142 = $42
+ .label __144 = $44
+ .label __145 = $44
+ .label __150 = $69
+ .label __151 = $57
+ .label __152 = $57
+ .label __153 = $59
+ .label __154 = $59
+ .label __155 = $5b
+ .label __156 = $5b
+ .label __177 = 8
+ .label __179 = $38
+ .label __180 = $2e
+ // [19] *((char *) 36879) = 8 -- _deref_pbuc1=vbuc2
+ lda #8
+ sta $900f
+ // [20] chrout::petscii = lock -- vbuz1=vbuc1
+ lda #lock
+ sta.z chrout.petscii
+ // [21] call chrout
+ // border and black paper
+ jsr chrout
+ jmp __b50
+ // main::@50
+ __b50:
+ // [22] chrout::petscii = lower -- vbuz1=vbuc1
+ lda #lower
+ sta.z chrout.petscii
+ // [23] call chrout
+ //Lock UpperCase to Lowercase key
+ jsr chrout
+ jmp __b51
+ // main::@51
+ __b51:
+ // [24] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ jmp __b1
+ //Put text in Lowercase set
+ // main::@1
+ __b1:
+ // [25] if(m<$28) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #$28
+ bcc __b2
+ // [26] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
+ __b3_from___b1:
+ // [26] phi n#109 = 0 [phi:main::@1->main::@3#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z n
+ // [26] phi hiscore#110 = 0 [phi:main::@1->main::@3#1] -- vwuz1=vwuc1
+ lda #<0
+ sta.z hiscore_1
+ lda #>0
+ sta.z hiscore_1+1
+ // [26] phi y#114 = 0 [phi:main::@1->main::@3#2] -- vwuz1=vwuc1
+ lda #<0
+ sta.z y
+ lda #>0
+ sta.z y+1
+ // [26] phi rem8u#127 = 0 [phi:main::@1->main::@3#3] -- vbuz1=vbuc1
+ lda #0
+ sta.z rem8u
+ jmp __b3
+ // Load udgs. From 0-->39;
+ // main::@3
+ __b3:
+ // [27] call clear_screen
+ // [321] phi from main::@3 to clear_screen [phi:main::@3->clear_screen]
+ clear_screen_from___b3:
+ // [321] phi clear_screen::n#5 = $20 [phi:main::@3->clear_screen#0] -- vbuz1=vbuc1
+ lda #$20
+ sta.z clear_screen.n
+ jsr clear_screen
+ // [28] phi from main::@3 to main::@52 [phi:main::@3->main::@52]
+ __b52_from___b3:
+ jmp __b52
+ // main::@52
+ __b52:
+ // [29] call textcolor
+ // Clear Screen with spaces & black ink
+ // [334] phi from main::@52 to textcolor [phi:main::@52->textcolor]
+ textcolor_from___b52:
+ // [334] phi textcolor::color#7 = 7 [phi:main::@52->textcolor#0] -- vbuz1=vbuc1
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // [30] phi from main::@52 to main::@53 [phi:main::@52->main::@53]
+ __b53_from___b52:
+ jmp __b53
+ // main::@53
+ __b53:
+ // [31] call cputs
+ // [337] phi from main::@53 to cputs [phi:main::@53->cputs]
+ cputs_from___b53:
+ // [337] phi cputs::s#11 = intro [phi:main::@53->cputs#0] -- pbuz1=pbuc1
+ lda #intro
+ sta.z cputs.s+1
+ jsr cputs
+ // [32] phi from main::@53 to main::@54 [phi:main::@53->main::@54]
+ __b54_from___b53:
+ jmp __b54
+ // main::@54
+ __b54:
+ // [33] call textcolor
+ // Yellow ink
+ // [334] phi from main::@54 to textcolor [phi:main::@54->textcolor]
+ textcolor_from___b54:
+ // [334] phi textcolor::color#7 = 1 [phi:main::@54->textcolor#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // [34] phi from main::@54 to main::@55 [phi:main::@54->main::@55]
+ __b55_from___b54:
+ jmp __b55
+ // main::@55
+ __b55:
+ // [35] call cputs
+ // [337] phi from main::@55 to cputs [phi:main::@55->cputs]
+ cputs_from___b55:
+ // [337] phi cputs::s#11 = levels [phi:main::@55->cputs#0] -- pbuz1=pbuc1
+ lda #levels
+ sta.z cputs.s+1
+ jsr cputs
+ // [36] phi from main::@55 to main::@56 [phi:main::@55->main::@56]
+ __b56_from___b55:
+ jmp __b56
+ // main::@56
+ __b56:
+ // [37] call textcolor
+ // White
+ // [334] phi from main::@56 to textcolor [phi:main::@56->textcolor]
+ textcolor_from___b56:
+ // [334] phi textcolor::color#7 = 2 [phi:main::@56->textcolor#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // [38] phi from main::@56 to main::@57 [phi:main::@56->main::@57]
+ __b57_from___b56:
+ jmp __b57
+ // main::@57
+ __b57:
+ // [39] call cputs
+ // [337] phi from main::@57 to cputs [phi:main::@57->cputs]
+ cputs_from___b57:
+ // [337] phi cputs::s#11 = foot [phi:main::@57->cputs#0] -- pbuz1=pbuc1
+ lda #foot
+ sta.z cputs.s+1
+ jsr cputs
+ jmp __b4
+ // Red
+ // main::@4
+ __b4:
+ // [40] l = *((char *) 197) -- vbuz1=_deref_pbuc1
+ lda.z $c5
+ sta.z l
+ // [41] l = ++ l -- vbuz1=_inc_vbuz1
+ inc.z l
+ // [42] if(l>=5+1) goto main::@4 -- vbuz1_ge_vbuc1_then_la1
+ lda.z l
+ cmp #5+1
+ bcs __b4
+ // [43] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
+ __b5_from___b4:
+ jmp __b5
+ // main::@5
+ __b5:
+ // [44] call clear_screen
+ // wait for 1-3-5-7-9 keys only
+ // [321] phi from main::@5 to clear_screen [phi:main::@5->clear_screen]
+ clear_screen_from___b5:
+ // [321] phi clear_screen::n#5 = 4 [phi:main::@5->clear_screen#0] -- vbuz1=vbuc1
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ jmp __b58
+ // main::@58
+ __b58:
+ // [45] *((char *) 36869) = $ff -- _deref_pbuc1=vbuc2
+ lda #$ff
+ sta $9005
+ // [46] chrout::petscii = reverse_on -- vbuz1=vbuc1
+ lda #reverse_on
+ sta.z chrout.petscii
+ // [47] call chrout
+ // Graphic mode
+ jsr chrout
+ jmp __b59
+ // main::@59
+ __b59:
+ // [48] chrout::petscii = red -- vbuz1=vbuc1
+ lda #red
+ sta.z chrout.petscii
+ // [49] call chrout
+ jsr chrout
+ jmp __b60
+ // main::@60
+ __b60:
+ // [50] chrout::petscii = down -- vbuz1=vbuc1
+ lda #down
+ sta.z chrout.petscii
+ // [51] call chrout
+ jsr chrout
+ // [52] phi from main::@60 to main::@6 [phi:main::@60->main::@6]
+ __b6_from___b60:
+ // [52] phi n#89 = n#109 [phi:main::@60->main::@6#0] -- register_copy
+ // [52] phi k#101 = 1 [phi:main::@60->main::@6#1] -- vbuz1=vbuc1
+ lda #1
+ sta.z k
+ jmp __b6
+ //for (z=1;z<23;z++) { POKE(7680+z*22,230);POKE(c+7680+z*22,2); POKE(7679+z*22,230); POKE(c+7679+z*22,2); } // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ //k=1; do { chrout(brick); POKE(211,20); chrout(brick); ++k; } while (k<23);
+ //for (k=1;k<22;k++) { chrout(brick); POKE(211,22); chrout(brick); }; // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ // main::@6
+ __b6:
+ // [53] if(k#101<$16) goto main::@7 -- vbuz1_lt_vbuc1_then_la1
+ lda.z k
+ cmp #$16
+ bcc __b7
+ jmp __b8
+ // main::@8
+ __b8:
+ // [54] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [55] call chrout
+ // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ jsr chrout
+ jmp __b61
+ // main::@61
+ __b61:
+ // [56] *((char *) 8185) = brick -- _deref_pbuc1=vbuc2
+ lda #brick
+ sta $1ff9
+ // [57] *((char *)$1ff9+c) = 2 -- _deref_pbuc1=vbuc2
+ lda #2
+ sta $1ff9+c
+ // [58] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [59] call chrout
+ //last brick from last line (#23) to avoid scrolling
+ jsr chrout
+ jmp __b62
+ // main::@62
+ __b62:
+ // [60] if(l<1+1) goto main::@12 -- vbuz1_lt_vbuc1_then_la1
+ lda.z l
+ cmp #1+1
+ bcc __b12_from___b62
+ // [61] phi from main::@62 to main::@13 [phi:main::@62->main::@13]
+ __b13_from___b62:
+ // [61] phi z#28 = 1 [phi:main::@62->main::@13#0] -- vwuz1=vbuc1
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ jmp __b13
+ // [61] phi from main::@73 to main::@13 [phi:main::@73->main::@13]
+ __b13_from___b73:
+ // [61] phi z#28 = z#9 [phi:main::@73->main::@13#0] -- register_copy
+ jmp __b13
+ // main::@13
+ __b13:
+ // [62] random::k#0 = 7 - l -- vbuz1=vbuc1_minus_vbuz2
+ lda #7
+ sec
+ sbc.z l
+ sta.z random.k
+ // [63] main::$177 = l << 1 -- vbuz1=vbuz2_rol_1
+ lda.z l
+ asl
+ sta.z __177
+ // [64] main::$26 = main::$177 + l -- vbuz1=vbuz1_plus_vbuz2
+ lda.z __26
+ clc
+ adc.z l
+ sta.z __26
+ // [65] random::n#0 = $1a - main::$26 -- vbuz1=vbuc1_minus_vbuz1
+ lda #$1a
+ sec
+ sbc.z random.n
+ sta.z random.n
+ // [66] call random
+ // Write differential random bricks depending on 'l' level choosen
+ // [345] phi from main::@13 to random [phi:main::@13->random]
+ random_from___b13:
+ // [345] phi random::n#4 = random::n#0 [phi:main::@13->random#0] -- register_copy
+ // [345] phi random::k#4 = random::k#0 [phi:main::@13->random#1] -- register_copy
+ jsr random
+ jmp __b71
+ // main::@71
+ __b71:
+ // [67] main::$29 = z#28 + m -- vwuz1=vwuz2_plus_vbuz3
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __29
+ lda #0
+ adc.z z_1+1
+ sta.z __29+1
+ // [68] if(main::$29<=$1f9) goto main::@14 -- vwuz1_le_vwuc1_then_la1
+ lda.z __29+1
+ cmp #>$1f9
+ bne !+
+ lda.z __29
+ cmp #<$1f9
+ !:
+ bcc __b14_from___b71
+ beq __b14_from___b71
+ // [69] phi from main::@71 main::@73 to main::@12 [phi:main::@71/main::@73->main::@12]
+ __b12_from___b71:
+ __b12_from___b73:
+ // [69] phi z#128 = z#28 [phi:main::@71/main::@73->main::@12#0] -- register_copy
+ jmp __b12
+ // [69] phi from main::@62 to main::@12 [phi:main::@62->main::@12]
+ __b12_from___b62:
+ // [69] phi z#128 = 1 [phi:main::@62->main::@12#0] -- vwuz1=vbuc1
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ jmp __b12
+ // main::@12
+ __b12:
+ // [70] *((char *) 36878) = $f -- _deref_pbuc1=vbuc2
+ lda #$f
+ sta $900e
+ // [71] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [72] call chrout
+ // Duck #1
+ jsr chrout
+ jmp __b65
+ // main::@65
+ __b65:
+ // [73] chrout::petscii = yellow -- vbuz1=vbuc1
+ lda #yellow
+ sta.z chrout.petscii
+ // [74] call chrout
+ jsr chrout
+ jmp __b66
+ // main::@66
+ __b66:
+ // [75] chrout::petscii = $50 -- vbuz1=vbuc1
+ lda #$50
+ sta.z chrout.petscii
+ // [76] call chrout
+ jsr chrout
+ jmp __b67
+ // main::@67
+ __b67:
+ // [77] chrout::petscii = $54 -- vbuz1=vbuc1
+ lda #$54
+ sta.z chrout.petscii
+ // [78] call chrout
+ jsr chrout
+ jmp __b68
+ // main::@68
+ __b68:
+ // [79] chrout::petscii = $53 -- vbuz1=vbuc1
+ lda #$53
+ sta.z chrout.petscii
+ // [80] call chrout
+ jsr chrout
+ jmp __b69
+ // main::@69
+ __b69:
+ // [81] chrout::petscii = $3a -- vbuz1=vbuc1
+ lda #$3a
+ sta.z chrout.petscii
+ // [82] call chrout
+ jsr chrout
+ jmp __b70
+ // main::@70
+ __b70:
+ // [83] *((char *) 211) = $12 -- _deref_pbuc1=vbuc2
+ lda #$12
+ sta.z $d3
+ // [84] phi from main::@70 to main::@17 [phi:main::@70->main::@17]
+ __b17_from___b70:
+ // [84] phi j#13 = 0 [phi:main::@70->main::@17#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z j_1
+ jmp __b17
+ // jump to Column 18
+ // main::@17
+ __b17:
+ // [85] if(j#13<4) goto main::@18 -- vbuz1_lt_vbuc1_then_la1
+ lda.z j_1
+ cmp #4
+ bcc __b18
+ // [86] phi from main::@17 to main::@19 [phi:main::@17->main::@19]
+ __b19_from___b17:
+ jmp __b19
+ // main::@19
+ __b19:
+ // [87] call write_score
+ // Write 'TM:9', yellow
+ // [351] phi from main::@19 to write_score [phi:main::@19->write_score]
+ write_score_from___b19:
+ // [351] phi score#13 = 0 [phi:main::@19->write_score#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z score
+ lda #>0
+ sta.z score+1
+ jsr write_score
+ jmp __b75
+ // main::@75
+ __b75:
+ // [88] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [89] call chrout
+ // Write Score (yellow)
+ jsr chrout
+ jmp __b76
+ // main::@76
+ __b76:
+ // [90] chrout::petscii = green -- vbuz1=vbuc1
+ lda #green
+ sta.z chrout.petscii
+ // [91] call chrout
+ jsr chrout
+ jmp __b77
+ // main::@77
+ __b77:
+ // [92] *((char *) 211) = $a -- _deref_pbuc1=vbuc2
+ lda #$a
+ sta.z $d3
+ // [93] phi from main::@77 to main::@20 [phi:main::@77->main::@20]
+ __b20_from___b77:
+ // [93] phi j#16 = 0 [phi:main::@77->main::@20#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z j_2
+ jmp __b20
+ // Jump to column 10
+ // main::@20
+ __b20:
+ // [94] if(j#16<5) goto main::@21 -- vbuz1_lt_vbuc1_then_la1
+ lda.z j_2
+ cmp #5
+ bcc __b21
+ // [95] phi from main::@20 to main::@22 [phi:main::@20->main::@22]
+ __b22_from___b20:
+ // [95] phi n#52 = n#89 [phi:main::@20->main::@22#0] -- register_copy
+ // [95] phi peephole#52 = $1f1f [phi:main::@20->main::@22#1] -- vwuz1=vwuc1
+ lda #<$1f1f
+ sta.z peephole
+ lda #>$1f1f
+ sta.z peephole+1
+ // [95] phi z#102 = z#128 [phi:main::@20->main::@22#2] -- register_copy
+ // [95] phi y#49 = y#114 [phi:main::@20->main::@22#3] -- register_copy
+ // [95] phi rem8u#48 = rem8u#127 [phi:main::@20->main::@22#4] -- register_copy
+ // [95] phi tu#13 = 1 [phi:main::@20->main::@22#5] -- vwuz1=vbuc1
+ lda #<1
+ sta.z tu
+ lda #>1
+ sta.z tu+1
+ jmp __b22
+ // Write 'DUCK', green
+ // [95] phi from main::@87 to main::@22 [phi:main::@87->main::@22]
+ __b22_from___b87:
+ // [95] phi n#52 = n#20 [phi:main::@87->main::@22#0] -- register_copy
+ // [95] phi peephole#52 = peephole#12 [phi:main::@87->main::@22#1] -- register_copy
+ // [95] phi z#102 = z#25 [phi:main::@87->main::@22#2] -- register_copy
+ // [95] phi y#49 = y#18 [phi:main::@87->main::@22#3] -- register_copy
+ // [95] phi rem8u#48 = rem8u#25 [phi:main::@87->main::@22#4] -- register_copy
+ // [95] phi tu#13 = tu#1 [phi:main::@87->main::@22#5] -- register_copy
+ jmp __b22
+ // main::@22
+ __b22:
+ // [96] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [97] call chrout
+ jsr chrout
+ jmp __b79
+ // main::@79
+ __b79:
+ // [98] chrout::petscii = green -- vbuz1=vbuc1
+ lda #green
+ sta.z chrout.petscii
+ // [99] call chrout
+ jsr chrout
+ jmp __b80
+ // main::@80
+ __b80:
+ // [100] chrout::petscii = reverse_on -- vbuz1=vbuc1
+ lda #reverse_on
+ sta.z chrout.petscii
+ // [101] call chrout
+ jsr chrout
+ jmp __b81
+ // main::@81
+ __b81:
+ // [102] *((char *) 211) = $f -- _deref_pbuc1=vbuc2
+ lda #$f
+ sta.z $d3
+ // [103] if(tu#13<$a) goto main::@23 -- vwuz1_lt_vbuc1_then_la1
+ // Jump to column 15
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$a
+ bcc __b23
+ !:
+ jmp __b45
+ // main::@45
+ __b45:
+ // [104] chrout::petscii = $31 -- vbuz1=vbuc1
+ lda #$31
+ sta.z chrout.petscii
+ // [105] call chrout
+ jsr chrout
+ jmp __b82
+ // main::@82
+ __b82:
+ // [106] chrout::petscii = $30 -- vbuz1=vbuc1
+ lda #$30
+ sta.z chrout.petscii
+ // [107] call chrout
+ jsr chrout
+ // [108] phi from main::@103 main::@104 main::@105 main::@106 main::@23 main::@82 main::@84 to main::@24 [phi:main::@103/main::@104/main::@105/main::@106/main::@23/main::@82/main::@84->main::@24]
+ __b24_from___b103:
+ __b24_from___b104:
+ __b24_from___b105:
+ __b24_from___b106:
+ __b24_from___b23:
+ __b24_from___b82:
+ __b24_from___b84:
+ jmp __b24
+ // Write duck number
+ // main::@24
+ __b24:
+ // [109] call random
+ // [345] phi from main::@24 to random [phi:main::@24->random]
+ random_from___b24:
+ // [345] phi random::n#4 = $ff [phi:main::@24->random#0] -- vbuz1=vbuc1
+ lda #$ff
+ sta.z random.n
+ // [345] phi random::k#4 = 0 [phi:main::@24->random#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z random.k
+ jsr random
+ jmp __b83
+ // main::@83
+ __b83:
+ // [110] duck#0 = m -- vwuz1=vbuz2
+ lda.z m
+ sta.z duck
+ lda #0
+ sta.z duck+1
+ // [111] call random
+ // [345] phi from main::@83 to random [phi:main::@83->random]
+ random_from___b83:
+ // [345] phi random::n#4 = $ff [phi:main::@83->random#0] -- vbuz1=vbuc1
+ lda #$ff
+ sta.z random.n
+ // [345] phi random::k#4 = 0 [phi:main::@83->random#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z random.k
+ jsr random
+ jmp __b84
+ // main::@84
+ __b84:
+ // [112] main::$61 = m + $1e15 -- vwuz1=vbuz2_plus_vwuc1
+ lda.z m
+ clc
+ adc #<$1e15
+ sta.z __61
+ lda #>$1e15
+ adc #0
+ sta.z __61+1
+ // [113] duck#1 = main::$61 + duck#0 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z duck
+ adc.z __61
+ sta.z duck
+ lda.z duck+1
+ adc.z __61+1
+ sta.z duck+1
+ // [114] main::$66 = duck#1 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z duck
+ adc #1
+ sta.z __66
+ lda.z duck+1
+ adc #0
+ sta.z __66+1
+ // [115] main::$69 = duck#1 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __69
+ lda #0
+ adc.z duck+1
+ sta.z __69+1
+ // [116] main::$72 = duck#1 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __72
+ lda #0
+ adc.z duck+1
+ sta.z __72+1
+ // [117] if(duck#1>$1fe3) goto main::@24 -- vwuz1_gt_vwuc1_then_la1
+ lda #>$1fe3
+ cmp.z duck+1
+ bcc __b24_from___b84
+ bne !+
+ lda #<$1fe3
+ cmp.z duck
+ bcc __b24_from___b84
+ !:
+ jmp __b106
+ // main::@106
+ __b106:
+ // [118] if(*((char *)duck#1)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (duck),y
+ beq __b24_from___b106
+ jmp __b105
+ // main::@105
+ __b105:
+ // [119] if(*((char *)main::$66)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__66),y
+ beq __b24_from___b105
+ jmp __b104
+ // main::@104
+ __b104:
+ // [120] if(*((char *)main::$69)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__69),y
+ beq __b24_from___b104
+ jmp __b103
+ // main::@103
+ __b103:
+ // [121] if(*((char *)main::$72)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__72),y
+ beq __b24_from___b103
+ // [122] phi from main::@103 to main::@25 [phi:main::@103->main::@25]
+ __b25_from___b103:
+ jmp __b25
+ // main::@25
+ __b25:
+ // [123] call chrono_restart
+ jsr chrono_restart
+ // [124] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
+ __b26_from___b25:
+ // [124] phi n#20 = n#52 [phi:main::@25->main::@26#0] -- register_copy
+ // [124] phi peephole#12 = peephole#52 [phi:main::@25->main::@26#1] -- register_copy
+ // [124] phi z#100 = z#102 [phi:main::@25->main::@26#2] -- register_copy
+ // [124] phi y#18 = y#49 [phi:main::@25->main::@26#3] -- register_copy
+ // [124] phi rem8u#25 = rem8u#48 [phi:main::@25->main::@26#4] -- register_copy
+ // [124] phi score#19 = score#38 [phi:main::@25->main::@26#5] -- register_copy
+ // [124] phi time#11 = 0 [phi:main::@25->main::@26#6] -- vwuz1=vbuc1
+ lda #<0
+ sta.z time
+ lda #>0
+ sta.z time+1
+ jmp __b26
+ // main::@26
+ __b26:
+ // [125] if(time#11<$a) goto main::@27 -- vwuz1_lt_vbuc1_then_la1
+ lda.z time+1
+ bne !+
+ lda.z time
+ cmp #$a
+ bcc __b27_from___b26
+ !:
+ jmp __b28
+ // main::@28
+ __b28:
+ // [126] tu#1 = ++ tu#13 -- vwuz1=_inc_vwuz1
+ inc.z tu
+ bne !+
+ inc.z tu+1
+ !:
+ // [127] score#4 = score#19 - $a -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // [128] call write_score
+ // [351] phi from main::@28 to write_score [phi:main::@28->write_score]
+ write_score_from___b28:
+ // [351] phi score#13 = score#4 [phi:main::@28->write_score#0] -- register_copy
+ jsr write_score
+ jmp __b86
+ // main::@86
+ __b86:
+ // [129] *((char *) 36877) = $82 -- _deref_pbuc1=vbuc2
+ lda #$82
+ sta $900d
+ // [130] call wait
+ // [381] phi from main::@86 to wait [phi:main::@86->wait]
+ wait_from___b86:
+ // [381] phi z#53 = z#100 [phi:main::@86->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $14 [phi:main::@86->wait#1] -- vbuz1=vbuc1
+ lda #$14
+ sta.z wait.n
+ jsr wait
+ jmp __b87
+ // main::@87
+ __b87:
+ // [131] *((char *) 36877) = 0 -- _deref_pbuc1=vbuc2
+ lda #0
+ sta $900d
+ // [132] main::$150 = duck#1 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z duck
+ clc
+ adc #c
+ sta.z __150+1
+ // [133] *((char *)main::$150) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__150),y
+ // [134] main::$151 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __151
+ lda.z duck+1
+ sta.z __151+1
+ // [135] main::$152 = main::$151 + 1+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __152
+ clc
+ adc #<1+c
+ sta.z __152
+ lda.z __152+1
+ adc #>1+c
+ sta.z __152+1
+ // [136] *((char *)main::$152) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__152),y
+ // [137] main::$153 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __153
+ lda.z duck+1
+ sta.z __153+1
+ // [138] main::$154 = main::$153 + $16+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __154
+ clc
+ adc #<$16+c
+ sta.z __154
+ lda.z __154+1
+ adc #>$16+c
+ sta.z __154+1
+ // [139] *((char *)main::$154) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__154),y
+ // [140] main::$155 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __155
+ lda.z duck+1
+ sta.z __155+1
+ // [141] main::$156 = main::$155 + $17+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __156
+ clc
+ adc #<$17+c
+ sta.z __156
+ lda.z __156+1
+ adc #>$17+c
+ sta.z __156+1
+ // [142] *((char *)main::$156) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__156),y
+ // [143] if(tu#1<$b) goto main::@22 -- vwuz1_lt_vbuc1_then_la1
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$b
+ bcc __b22_from___b87
+ !:
+ // [144] phi from main::@87 to main::@44 [phi:main::@87->main::@44]
+ __b44_from___b87:
+ jmp __b44
+ // main::@44
+ __b44:
+ // [145] call clear_screen
+ // 10 ducks
+ // [321] phi from main::@44 to clear_screen [phi:main::@44->clear_screen]
+ clear_screen_from___b44:
+ // [321] phi clear_screen::n#5 = 4 [phi:main::@44->clear_screen#0] -- vbuz1=vbuc1
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ jmp __b91
+ // main::@91
+ __b91:
+ // [146] *((char *) 36869) = $f0 -- _deref_pbuc1=vbuc2
+ lda #$f0
+ sta $9005
+ // [147] chrout::petscii = lower -- vbuz1=vbuc1
+ lda #lower
+ sta.z chrout.petscii
+ // [148] call chrout
+ jsr chrout
+ // [149] phi from main::@91 to main::@92 [phi:main::@91->main::@92]
+ __b92_from___b91:
+ jmp __b92
+ // main::@92
+ __b92:
+ // [150] call textcolor
+ // Return to text mode, lowcase
+ // [334] phi from main::@92 to textcolor [phi:main::@92->textcolor]
+ textcolor_from___b92:
+ // [334] phi textcolor::color#7 = 7 [phi:main::@92->textcolor#0] -- vbuz1=vbuc1
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // [151] phi from main::@92 to main::@93 [phi:main::@92->main::@93]
+ __b93_from___b92:
+ jmp __b93
+ // main::@93
+ __b93:
+ // [152] call cputs
+ // [337] phi from main::@93 to cputs [phi:main::@93->cputs]
+ cputs_from___b93:
+ // [337] phi cputs::s#11 = game_over [phi:main::@93->cputs#0] -- pbuz1=pbuc1
+ lda #game_over
+ sta.z cputs.s+1
+ jsr cputs
+ // [153] phi from main::@93 to main::@94 [phi:main::@93->main::@94]
+ __b94_from___b93:
+ jmp __b94
+ // main::@94
+ __b94:
+ // [154] call textcolor
+ // Yellow
+ // [334] phi from main::@94 to textcolor [phi:main::@94->textcolor]
+ textcolor_from___b94:
+ // [334] phi textcolor::color#7 = 2 [phi:main::@94->textcolor#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // [155] phi from main::@94 to main::@95 [phi:main::@94->main::@95]
+ __b95_from___b94:
+ jmp __b95
+ // main::@95
+ __b95:
+ // [156] call cputs
+ // [337] phi from main::@95 to cputs [phi:main::@95->cputs]
+ cputs_from___b95:
+ // [337] phi cputs::s#11 = your_score [phi:main::@95->cputs#0] -- pbuz1=pbuc1
+ lda #your_score
+ sta.z cputs.s+1
+ jsr cputs
+ // [157] phi from main::@95 to main::@96 [phi:main::@95->main::@96]
+ __b96_from___b95:
+ jmp __b96
+ // main::@96
+ __b96:
+ // [158] call cputs
+ // [337] phi from main::@96 to cputs [phi:main::@96->cputs]
+ cputs_from___b96:
+ // [337] phi cputs::s#11 = buffer [phi:main::@96->cputs#0] -- pbuz1=pbuc1
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // [159] phi from main::@96 to main::@97 [phi:main::@96->main::@97]
+ __b97_from___b96:
+ jmp __b97
+ // main::@97
+ __b97:
+ // [160] call textcolor
+ // Red
+ // [334] phi from main::@97 to textcolor [phi:main::@97->textcolor]
+ textcolor_from___b97:
+ // [334] phi textcolor::color#7 = 3 [phi:main::@97->textcolor#0] -- vbuz1=vbuc1
+ lda #3
+ sta.z textcolor.color
+ jsr textcolor
+ // [161] phi from main::@97 to main::@98 [phi:main::@97->main::@98]
+ __b98_from___b97:
+ jmp __b98
+ // main::@98
+ __b98:
+ // [162] call cputs
+ // [337] phi from main::@98 to cputs [phi:main::@98->cputs]
+ cputs_from___b98:
+ // [337] phi cputs::s#11 = high_score [phi:main::@98->cputs#0] -- pbuz1=pbuc1
+ lda #high_score
+ sta.z cputs.s+1
+ jsr cputs
+ jmp __b99
+ // main::@99
+ __b99:
+ // [163] if(score#38<=hiscore#110) goto main::@114 -- vwuz1_le_vwuz2_then_la1
+ lda.z score+1
+ cmp.z hiscore_1+1
+ bne !+
+ lda.z score
+ cmp.z hiscore_1
+ beq __b114
+ !:
+ bcc __b114
+ // [165] phi from main::@114 main::@99 to main::@46 [phi:main::@114/main::@99->main::@46]
+ __b46_from___b114:
+ __b46_from___b99:
+ // [165] phi hiscore#19 = hiscore#124 [phi:main::@114/main::@99->main::@46#0] -- register_copy
+ jmp __b46
+ // main::@114
+ __b114:
+ // [164] hiscore#124 = hiscore#110 -- vwuz1=vwuz2
+ lda.z hiscore_1
+ sta.z hiscore
+ lda.z hiscore_1+1
+ sta.z hiscore+1
+ jmp __b46_from___b114
+ // main::@46
+ __b46:
+ // [166] utoa::value#2 = hiscore#19 -- vwuz1=vwuz2
+ lda.z hiscore
+ sta.z utoa.value
+ lda.z hiscore+1
+ sta.z utoa.value+1
+ // [167] call utoa
+ // [390] phi from main::@46 to utoa [phi:main::@46->utoa]
+ utoa_from___b46:
+ // [390] phi utoa::value#10 = utoa::value#2 [phi:main::@46->utoa#0] -- register_copy
+ jsr utoa
+ // [168] phi from main::@46 to main::@100 [phi:main::@46->main::@100]
+ __b100_from___b46:
+ jmp __b100
+ // main::@100
+ __b100:
+ // [169] call cputs
+ // [337] phi from main::@100 to cputs [phi:main::@100->cputs]
+ cputs_from___b100:
+ // [337] phi cputs::s#11 = buffer [phi:main::@100->cputs#0] -- pbuz1=pbuc1
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // [170] phi from main::@100 to main::@101 [phi:main::@100->main::@101]
+ __b101_from___b100:
+ jmp __b101
+ // main::@101
+ __b101:
+ // [171] call textcolor
+ // Cyan
+ // [334] phi from main::@101 to textcolor [phi:main::@101->textcolor]
+ textcolor_from___b101:
+ // [334] phi textcolor::color#7 = 1 [phi:main::@101->textcolor#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // [172] phi from main::@101 to main::@102 [phi:main::@101->main::@102]
+ __b102_from___b101:
+ jmp __b102
+ // main::@102
+ __b102:
+ // [173] call cputs
+ // [337] phi from main::@102 to cputs [phi:main::@102->cputs]
+ cputs_from___b102:
+ // [337] phi cputs::s#11 = play_again [phi:main::@102->cputs#0] -- pbuz1=pbuc1
+ lda #play_again
+ sta.z cputs.s+1
+ jsr cputs
+ jmp __b47
+ // white
+ // main::@47
+ __b47:
+ // [174] j#19 = *((char *) 197) -- vbuz1=_deref_pbuc1
+ lda.z $c5
+ sta.z j_3
+ // [175] if(j#19==$b) goto main::@48 -- vbuz1_eq_vbuc1_then_la1
+ lda #$b
+ cmp.z j_3
+ beq __b48
+ jmp __b112
+ // main::@112
+ __b112:
+ // [176] if(j#19!=$1c) goto main::@47 -- vbuz1_neq_vbuc1_then_la1
+ lda #$1c
+ cmp.z j_3
+ bne __b47
+ jmp __b48
+ // main::@48
+ __b48:
+ // [177] if(j#19==$b) goto main::@113 -- vbuz1_eq_vbuc1_then_la1
+ lda #$b
+ cmp.z j_3
+ beq __b113
+ jmp __b49
+ // main::@49
+ __b49:
+ // asm { jsr$FD22 }
+ // N pressed. Exit game
+ jsr $fd22
+ jmp __breturn
+ // main::@return
+ __breturn:
+ // [179] return
+ rts
+ // main::@113
+ __b113:
+ // [180] hiscore#123 = hiscore#19 -- vwuz1=vwuz2
+ lda.z hiscore
+ sta.z hiscore_1
+ lda.z hiscore+1
+ sta.z hiscore_1+1
+ // [26] phi from main::@113 to main::@3 [phi:main::@113->main::@3]
+ __b3_from___b113:
+ // [26] phi n#109 = n#20 [phi:main::@113->main::@3#0] -- register_copy
+ // [26] phi hiscore#110 = hiscore#123 [phi:main::@113->main::@3#1] -- register_copy
+ // [26] phi y#114 = y#18 [phi:main::@113->main::@3#2] -- register_copy
+ // [26] phi rem8u#127 = rem8u#25 [phi:main::@113->main::@3#3] -- register_copy
+ jmp __b3
+ // [181] phi from main::@26 to main::@27 [phi:main::@26->main::@27]
+ __b27_from___b26:
+ jmp __b27
+ // main::@27
+ __b27:
+ // [182] call read_chrono
+ jsr read_chrono
+ jmp __b85
+ // main::@85
+ __b85:
+ // [183] m = *((char *) 37151) -- vbuz1=_deref_pbuc1
+ // Joystick routine
+ lda $911f
+ sta.z m
+ // [184] *((char *) 37154) = $7f -- _deref_pbuc1=vbuc2
+ lda #$7f
+ sta $9122
+ // [185] n#14 = *((char *) 37152) -- vbuz1=_deref_pbuc1
+ lda $9120
+ sta.z n
+ // [186] *((char *) 37154) = $ff -- _deref_pbuc1=vbuc2
+ lda #$ff
+ sta $9122
+ // [187] main::$78 = $10 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #$10
+ and.z m
+ sta.z __78
+ // [188] if(main::$78!=0) goto main::@29 -- vbuz1_neq_0_then_la1
+ lda.z __78
+ bne __b29_from___b85
+ jmp __b37
+ // main::@37
+ __b37:
+ // [189] y#0 = -- y#18 -- vwuz1=_dec_vwuz1
+ lda.z y
+ bne !+
+ dec.z y+1
+ !:
+ dec.z y
+ // [190] phi from main::@37 main::@85 to main::@29 [phi:main::@37/main::@85->main::@29]
+ __b29_from___b37:
+ __b29_from___b85:
+ // [190] phi y#10 = y#0 [phi:main::@37/main::@85->main::@29#0] -- register_copy
+ jmp __b29
+ // main::@29
+ __b29:
+ // [191] main::$81 = $80 & n#14 -- vbuz1=vbuc1_band_vbuz2
+ lda #$80
+ and.z n
+ sta.z __81
+ // [192] if(main::$81!=0) goto main::@30 -- vbuz1_neq_0_then_la1
+ lda.z __81
+ bne __b30_from___b29
+ jmp __b38
+ // main::@38
+ __b38:
+ // [193] y#1 = ++ y#10 -- vwuz1=_inc_vwuz1
+ inc.z y
+ bne !+
+ inc.z y+1
+ !:
+ // [194] phi from main::@29 main::@38 to main::@30 [phi:main::@29/main::@38->main::@30]
+ __b30_from___b29:
+ __b30_from___b38:
+ // [194] phi y#11 = y#10 [phi:main::@29/main::@38->main::@30#0] -- register_copy
+ jmp __b30
+ // main::@30
+ __b30:
+ // [195] main::$84 = 4 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #4
+ and.z m
+ sta.z __84
+ // [196] if(main::$84!=0) goto main::@31 -- vbuz1_neq_0_then_la1
+ lda.z __84
+ bne __b31_from___b30
+ jmp __b39
+ // main::@39
+ __b39:
+ // [197] y#2 = y#11 - $16 -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z y
+ sbc #$16
+ sta.z y
+ lda.z y+1
+ sbc #0
+ sta.z y+1
+ // [198] phi from main::@30 main::@39 to main::@31 [phi:main::@30/main::@39->main::@31]
+ __b31_from___b30:
+ __b31_from___b39:
+ // [198] phi y#12 = y#11 [phi:main::@30/main::@39->main::@31#0] -- register_copy
+ jmp __b31
+ // main::@31
+ __b31:
+ // [199] main::$88 = 8 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #8
+ and.z m
+ sta.z __88
+ // [200] if(main::$88!=0) goto main::@32 -- vbuz1_neq_0_then_la1
+ lda.z __88
+ bne __b32_from___b31
+ jmp __b40
+ // main::@40
+ __b40:
+ // [201] y#3 = y#12 + $16 -- vwuz1=vwuz1_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y
+ sta.z y
+ bcc !+
+ inc.z y+1
+ !:
+ // [202] phi from main::@31 main::@40 to main::@32 [phi:main::@31/main::@40->main::@32]
+ __b32_from___b31:
+ __b32_from___b40:
+ // [202] phi y#13 = y#12 [phi:main::@31/main::@40->main::@32#0] -- register_copy
+ jmp __b32
+ // main::@32
+ __b32:
+ // [203] main::$92 = $20 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #$20
+ and.z m
+ sta.z __92
+ // [204] if(main::$92!=0) goto main::@33 -- vbuz1_neq_0_then_la1
+ lda.z __92
+ bne __b33_from___b32
+ jmp __b41
+ // main::@41
+ __b41:
+ // [205] *((char *) 36877) = $82 -- _deref_pbuc1=vbuc2
+ lda #$82
+ sta $900d
+ // [206] if(peephole#12!=duck#1) goto main::@34 -- vwuz1_neq_vwuz2_then_la1
+ lda.z peephole+1
+ cmp.z duck+1
+ bne __b34
+ lda.z peephole
+ cmp.z duck
+ bne __b34
+ jmp __b42
+ // main::@42
+ __b42:
+ // [207] main::$96 = $c - div16u8u::return#2 -- vwuz1=vwuc1_minus_vwuz2
+ sec
+ lda #<$c
+ sbc.z div16u8u.return_1
+ sta.z __96
+ lda #>$c
+ sbc.z div16u8u.return_1+1
+ sta.z __96+1
+ // [208] main::$179 = main::$96 << 2 -- vwuz1=vwuz2_rol_2
+ lda.z __96
+ asl
+ sta.z __179
+ lda.z __96+1
+ rol
+ sta.z __179+1
+ asl.z __179
+ rol.z __179+1
+ // [209] main::$180 = main::$179 + main::$96 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z __180
+ adc.z __179
+ sta.z __180
+ lda.z __180+1
+ adc.z __179+1
+ sta.z __180+1
+ // [210] main::$97 = main::$180 << 1 -- vwuz1=vwuz1_rol_1
+ asl.z __97
+ rol.z __97+1
+ // [211] score#8 = score#19 + main::$97 -- vwuz1=vwuz1_plus_vwuz2
+ clc
+ lda.z score
+ adc.z __97
+ sta.z score
+ lda.z score+1
+ adc.z __97+1
+ sta.z score+1
+ // [212] call wait
+ // [381] phi from main::@42 to wait [phi:main::@42->wait]
+ wait_from___b42:
+ // [381] phi z#53 = z#100 [phi:main::@42->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $a [phi:main::@42->wait#1] -- vbuz1=vbuc1
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ // [213] phi from main::@42 to main::@35 [phi:main::@42->main::@35]
+ __b35_from___b42:
+ // [213] phi score#81 = score#8 [phi:main::@42->main::@35#0] -- register_copy
+ // [213] phi time#38 = $a [phi:main::@42->main::@35#1] -- vwuz1=vbuc1
+ lda #<$a
+ sta.z time
+ lda #>$a
+ sta.z time+1
+ jmp __b35
+ // main::@35
+ __b35:
+ // [214] *((char *) 36877) = 0 -- _deref_pbuc1=vbuc2
+ lda #0
+ sta $900d
+ // [215] phi from main::@32 main::@35 to main::@33 [phi:main::@32/main::@35->main::@33]
+ __b33_from___b32:
+ __b33_from___b35:
+ // [215] phi score#43 = score#19 [phi:main::@32/main::@35->main::@33#0] -- register_copy
+ // [215] phi time#17 = div16u8u::return#2 [phi:main::@32/main::@35->main::@33#1] -- register_copy
+ // [215] phi z#48 = z#100 [phi:main::@32/main::@35->main::@33#2] -- register_copy
+ jmp __b33
+ // main::@33
+ __b33:
+ // [216] main::$104 = y#13 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z y
+ adc #1
+ sta.z __104
+ lda.z y+1
+ adc #0
+ sta.z __104+1
+ // [217] main::$107 = y#13 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y
+ sta.z __107
+ lda #0
+ adc.z y+1
+ sta.z __107+1
+ // [218] main::$110 = y#13 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z y
+ sta.z __110
+ lda #0
+ adc.z y+1
+ sta.z __110+1
+ // [219] if(*((char *)y#13)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (y),y
+ beq __b36_from___b33
+ jmp __b111
+ // main::@111
+ __b111:
+ // [220] if(*((char *)main::$104)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__104),y
+ beq __b36_from___b111
+ jmp __b110
+ // main::@110
+ __b110:
+ // [221] if(*((char *)main::$107)!=brick) goto main::@109 -- _deref_pbuz1_neq_vbuc1_then_la1
+ ldy #0
+ lda (__107),y
+ cmp #brick
+ bne __b109
+ // [222] phi from main::@107 main::@108 main::@109 main::@110 main::@111 to main::@36 [phi:main::@107/main::@108/main::@109/main::@110/main::@111->main::@36]
+ __b36_from___b107:
+ __b36_from___b108:
+ __b36_from___b109:
+ __b36_from___b110:
+ __b36_from___b111:
+ jmp __b36
+ // [222] phi from main::@33 main::@43 to main::@36 [phi:main::@33/main::@43->main::@36]
+ __b36_from___b33:
+ __b36_from___b43:
+ // [222] phi y#35 = peephole#12 [phi:main::@33/main::@43->main::@36#0] -- register_copy
+ jmp __b36
+ // main::@36
+ __b36:
+ // [223] *((char *)y#35) = $fd -- _deref_pbuz1=vbuc1
+ lda #$fd
+ ldy #0
+ sta (y_1),y
+ // [224] main::$125 = y#35 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z y_1
+ clc
+ adc #c
+ sta.z __125+1
+ // [225] *((char *)main::$125) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ ldy #0
+ sta (__125),y
+ // [226] main::$127 = y#35 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z y_1
+ adc #1
+ sta.z __127
+ lda.z y_1+1
+ adc #0
+ sta.z __127+1
+ // [227] *((char *)main::$127) = $ed -- _deref_pbuz1=vbuc1
+ lda #$ed
+ ldy #0
+ sta (__127),y
+ // [228] main::$128 = main::$127 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __128
+ clc
+ adc #c
+ sta.z __128+1
+ // [229] *((char *)main::$128) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ ldy #0
+ sta (__128),y
+ // [230] main::$130 = y#35 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y_1
+ sta.z __130
+ lda #0
+ adc.z y_1+1
+ sta.z __130+1
+ // [231] *((char *)main::$130) = $ee -- _deref_pbuz1=vbuc1
+ lda #$ee
+ ldy #0
+ sta (__130),y
+ // [232] main::$131 = main::$130 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __131
+ clc
+ adc #c
+ sta.z __131+1
+ // [233] *((char *)main::$131) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ ldy #0
+ sta (__131),y
+ // [234] main::$133 = y#35 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z y_1
+ sta.z __133
+ lda #0
+ adc.z y_1+1
+ sta.z __133+1
+ // [235] *((char *)main::$133) = $f0 -- _deref_pbuz1=vbuc1
+ lda #$f0
+ ldy #0
+ sta (__133),y
+ // [236] main::$134 = main::$133 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __134
+ clc
+ adc #c
+ sta.z __134+1
+ // [237] *((char *)main::$134) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ ldy #0
+ sta (__134),y
+ // [238] call wait
+ // Clear peephole if there is not bricks contact
+ // [381] phi from main::@36 to wait [phi:main::@36->wait]
+ wait_from___b36:
+ // [381] phi z#53 = z#48 [phi:main::@36->wait#0] -- register_copy
+ // [381] phi wait::n#6 = 5 [phi:main::@36->wait#1] -- vbuz1=vbuc1
+ lda #5
+ sta.z wait.n
+ jsr wait
+ jmp __b89
+ // main::@89
+ __b89:
+ // [239] *((char *)duck#1) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (duck),y
+ // [240] main::$136 = duck#1 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z duck
+ clc
+ adc #c
+ sta.z __136+1
+ // [241] *((char *)main::$136) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ ldy #0
+ sta (__136),y
+ // [242] main::$138 = duck#1 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z duck
+ adc #1
+ sta.z __138
+ lda.z duck+1
+ adc #0
+ sta.z __138+1
+ // [243] *((char *)main::$138) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ ldy #0
+ sta (__138),y
+ // [244] main::$139 = main::$138 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __139
+ clc
+ adc #c
+ sta.z __139+1
+ // [245] *((char *)main::$139) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ ldy #0
+ sta (__139),y
+ // [246] main::$141 = duck#1 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __141
+ lda #0
+ adc.z duck+1
+ sta.z __141+1
+ // [247] *((char *)main::$141) = 2 -- _deref_pbuz1=vbuc1
+ lda #2
+ ldy #0
+ sta (__141),y
+ // [248] main::$142 = main::$141 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __142
+ clc
+ adc #c
+ sta.z __142+1
+ // [249] *((char *)main::$142) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ ldy #0
+ sta (__142),y
+ // [250] main::$144 = duck#1 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __144
+ lda #0
+ adc.z duck+1
+ sta.z __144+1
+ // [251] *((char *)main::$144) = 3 -- _deref_pbuz1=vbuc1
+ lda #3
+ ldy #0
+ sta (__144),y
+ // [252] main::$145 = main::$144 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __145
+ clc
+ adc #c
+ sta.z __145+1
+ // [253] *((char *)main::$145) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ ldy #0
+ sta (__145),y
+ // [254] call wait
+ // [381] phi from main::@89 to wait [phi:main::@89->wait]
+ wait_from___b89:
+ // [381] phi z#53 = z#25 [phi:main::@89->wait#0] -- register_copy
+ // [381] phi wait::n#6 = 5 [phi:main::@89->wait#1] -- vbuz1=vbuc1
+ lda #5
+ sta.z wait.n
+ jsr wait
+ jmp __b90
+ // main::@90
+ __b90:
+ // [255] y#130 = y#35 -- vwuz1=vwuz2
+ lda.z y_1
+ sta.z y
+ lda.z y_1+1
+ sta.z y+1
+ // [124] phi from main::@90 to main::@26 [phi:main::@90->main::@26]
+ __b26_from___b90:
+ // [124] phi n#20 = n#14 [phi:main::@90->main::@26#0] -- register_copy
+ // [124] phi peephole#12 = y#35 [phi:main::@90->main::@26#1] -- register_copy
+ // [124] phi z#100 = z#25 [phi:main::@90->main::@26#2] -- register_copy
+ // [124] phi y#18 = y#130 [phi:main::@90->main::@26#3] -- register_copy
+ // [124] phi rem8u#25 = divr8u::rem#11 [phi:main::@90->main::@26#4] -- register_copy
+ // [124] phi score#19 = score#43 [phi:main::@90->main::@26#5] -- register_copy
+ // [124] phi time#11 = time#17 [phi:main::@90->main::@26#6] -- register_copy
+ jmp __b26
+ // main::@109
+ __b109:
+ // [256] if(*((char *)main::$110)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__110),y
+ beq __b36_from___b109
+ jmp __b108
+ // main::@108
+ __b108:
+ // [257] if(y#13>$1e16) goto main::@107 -- vwuz1_gt_vwuc1_then_la1
+ lda #>$1e16
+ cmp.z y+1
+ bcc __b107
+ bne !+
+ lda #<$1e16
+ cmp.z y
+ bcc __b107
+ !:
+ jmp __b36_from___b108
+ // main::@107
+ __b107:
+ // [258] if(y#13>=$1fe3) goto main::@36 -- vwuz1_ge_vwuc1_then_la1
+ lda.z y+1
+ cmp #>$1fe3
+ bcc !+
+ bne __b36_from___b107
+ lda.z y
+ cmp #<$1fe3
+ bcs __b36_from___b107
+ !:
+ jmp __b43
+ // main::@43
+ __b43:
+ // [259] main::$119 = peephole#12 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z peephole
+ clc
+ adc #c
+ sta.z __119+1
+ // [260] *((char *)main::$119) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__119),y
+ // [261] main::$120 = main::$119 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z __119
+ adc #1
+ sta.z __120
+ lda.z __119+1
+ adc #0
+ sta.z __120+1
+ // [262] *((char *)main::$120) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__120),y
+ // [263] main::$122 = main::$119 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z __119
+ sta.z __122
+ lda #0
+ adc.z __119+1
+ sta.z __122+1
+ // [264] *((char *)main::$122) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__122),y
+ // [265] main::$124 = main::$119 + $17 -- vwuz1=vwuz1_plus_vbuc1
+ lda #$17
+ clc
+ adc.z __124
+ sta.z __124
+ bcc !+
+ inc.z __124+1
+ !:
+ // [266] *((char *)main::$124) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__124),y
+ // [267] y#141 = y#13 -- vwuz1=vwuz2
+ lda.z y
+ sta.z y_1
+ lda.z y+1
+ sta.z y_1+1
+ jmp __b36_from___b43
+ // main::@34
+ __b34:
+ // [268] score#6 = score#19 - $a -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // [269] call write_score
+ // [351] phi from main::@34 to write_score [phi:main::@34->write_score]
+ write_score_from___b34:
+ // [351] phi score#13 = score#6 [phi:main::@34->write_score#0] -- register_copy
+ jsr write_score
+ // [270] phi from main::@34 to main::@88 [phi:main::@34->main::@88]
+ __b88_from___b34:
+ jmp __b88
+ // main::@88
+ __b88:
+ // [271] call wait
+ // [381] phi from main::@88 to wait [phi:main::@88->wait]
+ wait_from___b88:
+ // [381] phi z#53 = z#100 [phi:main::@88->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $a [phi:main::@88->wait#1] -- vbuz1=vbuc1
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ // [213] phi from main::@88 to main::@35 [phi:main::@88->main::@35]
+ __b35_from___b88:
+ // [213] phi score#81 = score#38 [phi:main::@88->main::@35#0] -- register_copy
+ // [213] phi time#38 = div16u8u::return#2 [phi:main::@88->main::@35#1] -- register_copy
+ jmp __b35
+ // main::@23
+ __b23:
+ // [272] main::$57 = $30 + tu#13 -- vwuz1=vbuc1_plus_vwuz2
+ lda #$30
+ clc
+ adc.z tu
+ sta.z __57
+ lda #0
+ adc.z tu+1
+ sta.z __57+1
+ // [273] chrout::petscii = main::$57 -- vbuz1=vwuz2
+ lda.z __57
+ sta.z chrout.petscii
+ // [274] call chrout
+ jsr chrout
+ jmp __b24_from___b23
+ // main::@21
+ __b21:
+ // [275] chrout::petscii = ducknumber[j#16] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z j_2
+ lda ducknumber,y
+ sta.z chrout.petscii
+ // [276] call chrout
+ jsr chrout
+ jmp __b78
+ // main::@78
+ __b78:
+ // [277] j#5 = ++ j#16 -- vbuz1=_inc_vbuz1
+ inc.z j_2
+ // [93] phi from main::@78 to main::@20 [phi:main::@78->main::@20]
+ __b20_from___b78:
+ // [93] phi j#16 = j#5 [phi:main::@78->main::@20#0] -- register_copy
+ jmp __b20
+ // main::@18
+ __b18:
+ // [278] chrout::petscii = chrono[j#13] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z j_1
+ lda chrono,y
+ sta.z chrout.petscii
+ // [279] call chrout
+ jsr chrout
+ jmp __b74
+ // main::@74
+ __b74:
+ // [280] j#3 = ++ j#13 -- vbuz1=_inc_vbuz1
+ inc.z j_1
+ // [84] phi from main::@74 to main::@17 [phi:main::@74->main::@17]
+ __b17_from___b74:
+ // [84] phi j#13 = j#3 [phi:main::@74->main::@17#0] -- register_copy
+ jmp __b17
+ // [281] phi from main::@71 to main::@14 [phi:main::@71->main::@14]
+ __b14_from___b71:
+ // [281] phi j#11 = 1 [phi:main::@71->main::@14#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z j
+ jmp __b14
+ // main::@14
+ __b14:
+ // [282] if(j#11<=m) goto main::@15 -- vbuz1_le_vbuz2_then_la1
+ lda.z m
+ cmp.z j
+ bcs __b15
+ jmp __b16
+ // main::@16
+ __b16:
+ // [283] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [284] call chrout
+ jsr chrout
+ jmp __b73
+ // main::@73
+ __b73:
+ // [285] main::$35 = z#28 + m -- vwuz1=vwuz2_plus_vbuz3
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __35
+ lda #0
+ adc.z z_1+1
+ sta.z __35+1
+ // [286] z#9 = main::$35 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z __35
+ adc #1
+ sta.z z_1
+ lda.z __35+1
+ adc #0
+ sta.z z_1+1
+ // [287] if(z#9<$1fa) goto main::@13 -- vwuz1_lt_vwuc1_then_la1
+ lda.z z_1+1
+ cmp #>$1fa
+ bcc __b13_from___b73
+ bne !+
+ lda.z z_1
+ cmp #<$1fa
+ bcc __b13_from___b73
+ !:
+ jmp __b12_from___b73
+ // main::@15
+ __b15:
+ // [288] chrout::petscii = right -- vbuz1=vbuc1
+ lda #right
+ sta.z chrout.petscii
+ // [289] call chrout
+ jsr chrout
+ jmp __b72
+ // main::@72
+ __b72:
+ // [290] j#2 = ++ j#11 -- vbuz1=_inc_vbuz1
+ inc.z j
+ // [281] phi from main::@72 to main::@14 [phi:main::@72->main::@14]
+ __b14_from___b72:
+ // [281] phi j#11 = j#2 [phi:main::@72->main::@14#0] -- register_copy
+ jmp __b14
+ // main::@7
+ __b7:
+ // [291] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [292] call chrout
+ jsr chrout
+ // [293] phi from main::@7 to main::@9 [phi:main::@7->main::@9]
+ __b9_from___b7:
+ // [293] phi n#101 = 2 [phi:main::@7->main::@9#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z n
+ jmp __b9
+ // main::@9
+ __b9:
+ // [294] if(n#101<$16) goto main::@10 -- vbuz1_lt_vbuc1_then_la1
+ lda.z n
+ cmp #$16
+ bcc __b10
+ jmp __b11
+ // main::@11
+ __b11:
+ // [295] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [296] call chrout
+ jsr chrout
+ jmp __b64
+ // main::@64
+ __b64:
+ // [297] k#1 = ++ k#101 -- vbuz1=_inc_vbuz1
+ inc.z k
+ // [52] phi from main::@64 to main::@6 [phi:main::@64->main::@6]
+ __b6_from___b64:
+ // [52] phi n#89 = n#101 [phi:main::@64->main::@6#0] -- register_copy
+ // [52] phi k#101 = k#1 [phi:main::@64->main::@6#1] -- register_copy
+ jmp __b6
+ // main::@10
+ __b10:
+ // [298] chrout::petscii = right -- vbuz1=vbuc1
+ lda #right
+ sta.z chrout.petscii
+ // [299] call chrout
+ jsr chrout
+ jmp __b63
+ // main::@63
+ __b63:
+ // [300] n#1 = ++ n#101 -- vbuz1=_inc_vbuz1
+ inc.z n
+ // [293] phi from main::@63 to main::@9 [phi:main::@63->main::@9]
+ __b9_from___b63:
+ // [293] phi n#101 = n#1 [phi:main::@63->main::@9#0] -- register_copy
+ jmp __b9
+ // main::@2
+ __b2:
+ // [301] main::$3 = $1c00 + m -- vwuz1=vwuc1_plus_vbuz2
+ lda.z m
+ clc
+ adc #<$1c00
+ sta.z __3
+ lda #>$1c00
+ adc #0
+ sta.z __3+1
+ // [302] *((char *)main::$3) = duck_udg[m] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
+ ldy.z m
+ lda duck_udg,y
+ ldy #0
+ sta (__3),y
+ // [303] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b1
+}
+ // gotoxy
+// Set the cursor to the specified position
+// void gotoxy(char x, __zp($4c) char y)
+gotoxy: {
+ .label __5 = $48
+ .label __6 = $2c
+ .label __7 = $2c
+ .label line_offset = $2c
+ .label y = $4c
+ .label __8 = $46
+ .label __9 = $2c
+ // [305] if(gotoxy::y#4<$19+1) goto gotoxy::@3 -- vbuz1_lt_vbuc1_then_la1
+ lda.z y
+ cmp #$19+1
+ bcc __b3_from_gotoxy
+ // [307] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
+ __b1_from_gotoxy:
+ // [307] phi gotoxy::y#5 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z y
+ jmp __b1
+ // [306] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
+ __b3_from_gotoxy:
+ jmp __b3
+ // gotoxy::@3
+ __b3:
+ // [307] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
+ __b1_from___b3:
+ // [307] phi gotoxy::y#5 = gotoxy::y#4 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy
+ jmp __b1
+ // gotoxy::@1
+ __b1:
+ jmp __b2
+ // gotoxy::@2
+ __b2:
+ // [308] conio_cursor_x = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z conio_cursor_x
+ // [309] conio_cursor_y = gotoxy::y#5 -- vbuz1=vbuz2
+ lda.z y
+ sta.z conio_cursor_y
+ // [310] gotoxy::$7 = (unsigned int)gotoxy::y#5 -- vwuz1=_word_vbuz2
+ lda.z y
+ sta.z __7
+ lda #0
+ sta.z __7+1
+ // [311] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2
+ lda.z __7
+ asl
+ sta.z __8
+ lda.z __7+1
+ rol
+ sta.z __8+1
+ asl.z __8
+ rol.z __8+1
+ // [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z __9
+ adc.z __8
+ sta.z __9
+ lda.z __9+1
+ adc.z __8+1
+ sta.z __9+1
+ // [313] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ // [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2
+ lda.z line_offset
+ clc
+ adc #DEFAULT_SCREEN
+ sta.z __5+1
+ // [315] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2
+ lda.z __5
+ sta.z conio_line_text
+ lda.z __5+1
+ sta.z conio_line_text+1
+ // [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1
+ lda.z __6
+ clc
+ adc #COLORRAM
+ sta.z __6+1
+ // [317] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2
+ lda.z __6
+ sta.z conio_line_color
+ lda.z __6+1
+ sta.z conio_line_color+1
+ jmp __breturn
+ // gotoxy::@return
+ __breturn:
+ // [318] return
+ rts
+}
+ // chrout
+// void chrout(__zp($18) volatile char petscii)
+chrout: {
+ .label petscii = $18
+ // asm { ldapetscii jsr$ffd2 }
+ lda petscii
+ jsr $ffd2
+ jmp __breturn
+ // chrout::@return
+ __breturn:
+ // [320] return
+ rts
+}
+ // clear_screen
+// void clear_screen(__zp(8) char n, char m)
+clear_screen: {
+ .label __4 = $23
+ .label __5 = 9
+ .label n = 8
+ // [322] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
+ __b1_from_clear_screen:
+ // [322] phi z#2 = 0 [phi:clear_screen->clear_screen::@1#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z z
+ lda #>0
+ sta.z z+1
+ jmp __b1
+ // clear_screen::@1
+ __b1:
+ // [323] if(z#2<$1fa) goto clear_screen::@2 -- vwuz1_lt_vwuc1_then_la1
+ lda.z z+1
+ cmp #>$1fa
+ bcc __b2
+ bne !+
+ lda.z z
+ cmp #<$1fa
+ bcc __b2
+ !:
+ // [324] phi from clear_screen::@1 to clear_screen::@3 [phi:clear_screen::@1->clear_screen::@3]
+ __b3_from___b1:
+ jmp __b3
+ // clear_screen::@3
+ __b3:
+ // [325] call gotoxy
+ // From 0-->505 (506 bytes). ClearScreen with byte 'n' with color 'm'
+ // [304] phi from clear_screen::@3 to gotoxy [phi:clear_screen::@3->gotoxy]
+ gotoxy_from___b3:
+ // [304] phi gotoxy::y#4 = 0 [phi:clear_screen::@3->gotoxy#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z gotoxy.y
+ jsr gotoxy
+ jmp __b4
+ // clear_screen::@4
+ __b4:
+ // [326] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [327] call chrout
+ jsr chrout
+ jmp __breturn
+ // clear_screen::@return
+ __breturn:
+ // [328] return
+ rts
+ // clear_screen::@2
+ __b2:
+ // [329] clear_screen::$5 = $1e00 + z#2 -- vwuz1=vwuc1_plus_vwuz2
+ lda.z z
+ clc
+ adc #<$1e00
+ sta.z __5
+ lda.z z+1
+ adc #>$1e00
+ sta.z __5+1
+ // [330] clear_screen::$4 = clear_screen::$5 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z __5
+ clc
+ adc #c
+ sta.z __4+1
+ // [331] *((char *)clear_screen::$4) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (__4),y
+ // [332] *((char *)clear_screen::$5) = clear_screen::n#5 -- _deref_pbuz1=vbuz2
+ lda.z n
+ ldy #0
+ sta (__5),y
+ // [333] z#1 = ++ z#2 -- vwuz1=_inc_vwuz1
+ inc.z z
+ bne !+
+ inc.z z+1
+ !:
+ // [322] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
+ __b1_from___b2:
+ // [322] phi z#2 = z#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy
+ jmp __b1
+}
+ // textcolor
+// Set the color for text output. The old color setting is returned.
+// char textcolor(__zp(8) char color)
+textcolor: {
+ .label color = 8
+ // [335] conio_textcolor = textcolor::color#7 -- vbuz1=vbuz2
+ lda.z color
+ sta.z conio_textcolor
+ jmp __breturn
+ // textcolor::@return
+ __breturn:
+ // [336] return
+ rts
+}
+ // cputs
+// Output a NUL-terminated string at the current cursor position
+// void cputs(__zp(5) const char *s)
+cputs: {
+ .label c = 2
+ .label s = 5
+ // [338] phi from cputs cputs::@2 to cputs::@1 [phi:cputs/cputs::@2->cputs::@1]
+ __b1_from_cputs:
+ __b1_from___b2:
+ // [338] phi cputs::s#10 = cputs::s#11 [phi:cputs/cputs::@2->cputs::@1#0] -- register_copy
+ jmp __b1
+ // cputs::@1
+ __b1:
+ // [339] cputs::c#1 = *cputs::s#10 -- vbuz1=_deref_pbuz2
+ ldy #0
+ lda (s),y
+ sta.z c
+ // [340] cputs::s#0 = ++ cputs::s#10 -- pbuz1=_inc_pbuz1
+ inc.z s
+ bne !+
+ inc.z s+1
+ !:
+ // [341] if(0!=cputs::c#1) goto cputs::@2 -- 0_neq_vbuz1_then_la1
+ lda.z c
+ bne __b2
+ jmp __breturn
+ // cputs::@return
+ __breturn:
+ // [342] return
+ rts
+ // cputs::@2
+ __b2:
+ // [343] cputc::c#0 = cputs::c#1
+ // [344] call cputc
+ jsr cputc
+ jmp __b1_from___b2
+}
+ // random
+// Return to home position
+// void random(__zp(3) char k, __zp(8) char n)
+random: {
+ .label k = 3
+ .label n = 8
+ .label __3 = 2
+ jmp __b1
+ // random::@1
+ __b1:
+ // [346] m = *((char *) 37140) -- vbuz1=_deref_pbuc1
+ lda $9114
+ sta.z m
+ // [347] random::$3 = m -- vbuz1=vbuz2
+ lda.z m
+ sta.z __3
+ // [348] if(mrandom::n#4) goto random::@1 -- vbuz1_gt_vbuz2_then_la1
+ lda.z n
+ cmp.z __3
+ bcc __b1
+ jmp __breturn
+ // random::@return
+ __breturn:
+ // [350] return
+ rts
+}
+ // write_score
+write_score: {
+ // [352] if(score#13<=$fde8) goto write_score::@15 -- vwuz1_le_vwuc1_then_la1
+ lda.z score+1
+ cmp #>$fde8
+ bne !+
+ lda.z score
+ cmp #<$fde8
+ !:
+ bcc __b15_from_write_score
+ beq __b15_from_write_score
+ // [354] phi from write_score to write_score::@1 [phi:write_score->write_score::@1]
+ __b1_from_write_score:
+ // [354] phi score#38 = 0 [phi:write_score->write_score::@1#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z score
+ lda #>0
+ sta.z score+1
+ jmp __b1
+ // [353] phi from write_score to write_score::@15 [phi:write_score->write_score::@15]
+ __b15_from_write_score:
+ jmp __b15
+ // write_score::@15
+ __b15:
+ // [354] phi from write_score::@15 to write_score::@1 [phi:write_score::@15->write_score::@1]
+ __b1_from___b15:
+ // [354] phi score#38 = score#13 [phi:write_score::@15->write_score::@1#0] -- register_copy
+ jmp __b1
+ // write_score::@1
+ __b1:
+ // [355] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ jmp __b5
+ // write_score::@5
+ __b5:
+ // [356] if(m<4) goto write_score::@6 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #4
+ bcc __b6
+ jmp __b7
+ // write_score::@7
+ __b7:
+ // [357] utoa::value#1 = score#38 -- vwuz1=vwuz2
+ lda.z score
+ sta.z utoa.value
+ lda.z score+1
+ sta.z utoa.value+1
+ // [358] call utoa
+ // (!!) Needed. Possibly a bug
+ // [390] phi from write_score::@7 to utoa [phi:write_score::@7->utoa]
+ utoa_from___b7:
+ // [390] phi utoa::value#10 = utoa::value#1 [phi:write_score::@7->utoa#0] -- register_copy
+ jsr utoa
+ jmp __b11
+ // write_score::@11
+ __b11:
+ // [359] if(score#38<9+1) goto write_score::@2 -- vwuz1_lt_vbuc1_then_la1
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #9+1
+ bcc __b2
+ !:
+ jmp __b8
+ // write_score::@8
+ __b8:
+ // [360] *(points+2) = *buffer -- _deref_pbuc1=_deref_pbuc2
+ lda buffer
+ sta points+2
+ // [361] *(points+3) = *(buffer+1) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+1
+ sta points+3
+ jmp __b2
+ // write_score::@2
+ __b2:
+ // [362] if(score#38<$63+1) goto write_score::@3 -- vwuz1_lt_vbuc1_then_la1
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #$63+1
+ bcc __b3
+ !:
+ jmp __b4
+ // write_score::@4
+ __b4:
+ // [363] *(points+1) = *buffer -- _deref_pbuc1=_deref_pbuc2
+ lda buffer
+ sta points+1
+ // [364] *(points+2) = *(buffer+1) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+1
+ sta points+2
+ // [365] *(points+3) = *(buffer+2) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+2
+ sta points+3
+ jmp __b3
+ // write_score::@3
+ __b3:
+ // [366] chrout::petscii = yellow -- vbuz1=vbuc1
+ lda #yellow
+ sta.z chrout.petscii
+ // [367] call chrout
+ jsr chrout
+ jmp __b12
+ // write_score::@12
+ __b12:
+ // [368] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [369] call chrout
+ jsr chrout
+ jmp __b13
+ // write_score::@13
+ __b13:
+ // [370] *((char *) 211) = 4 -- _deref_pbuc1=vbuc2
+ lda #4
+ sta.z $d3
+ // [371] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ jmp __b9
+ // write_score::@9
+ __b9:
+ // [372] if(m<4) goto write_score::@10 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #4
+ bcc __b10
+ jmp __breturn
+ // write_score::@return
+ __breturn:
+ // [373] return
+ rts
+ // write_score::@10
+ __b10:
+ // [374] chrout::petscii = points[m] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z m
+ lda points,y
+ sta.z chrout.petscii
+ // [375] call chrout
+ jsr chrout
+ jmp __b14
+ // write_score::@14
+ __b14:
+ // [376] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b9
+ // write_score::@6
+ __b6:
+ // [377] points[m] = '0' -- pbuc1_derefidx_vbuz1=vbuc2
+ lda #'0'
+ ldy.z m
+ sta points,y
+ // [378] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b5
+}
+ // chrono_restart
+chrono_restart: {
+ // asm { lda#0 ldy#0 ldx#0 jsr$ffdb }
+ lda #0
+ ldy #0
+ ldx #0
+ jsr $ffdb
+ jmp __breturn
+ // chrono_restart::@return
+ __breturn:
+ // [380] return
+ rts
+}
+ // wait
+// void wait(__zp(3) char n)
+wait: {
+ .label n = 3
+ // [382] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ // [383] phi from wait wait::@4 to wait::@1 [phi:wait/wait::@4->wait::@1]
+ __b1_from_wait:
+ __b1_from___b4:
+ // [383] phi z#25 = z#53 [phi:wait/wait::@4->wait::@1#0] -- register_copy
+ jmp __b1
+ // wait::@1
+ __b1:
+ // [384] if(mwait::@2]
+ __b2_from___b1:
+ // [386] phi z#23 = 0 [phi:wait::@1->wait::@2#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z z_1
+ lda #>0
+ sta.z z_1+1
+ jmp __b2
+ // wait::@2
+ __b2:
+ // [387] if(z#23<$21c) goto wait::@3 -- vwuz1_lt_vwuc1_then_la1
+ lda.z z_1+1
+ cmp #>$21c
+ bcc __b3
+ bne !+
+ lda.z z_1
+ cmp #<$21c
+ bcc __b3
+ !:
+ jmp __b4
+ // wait::@4
+ __b4:
+ // [388] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b1_from___b4
+ // wait::@3
+ __b3:
+ // [389] z#4 = ++ z#23 -- vwuz1=_inc_vwuz1
+ inc.z z_1
+ bne !+
+ inc.z z_1+1
+ !:
+ // [386] phi from wait::@3 to wait::@2 [phi:wait::@3->wait::@2]
+ __b2_from___b3:
+ // [386] phi z#23 = z#4 [phi:wait::@3->wait::@2#0] -- register_copy
+ jmp __b2
+}
+ // utoa
+// Converts unsigned number value to a string representing it in RADIX format.
+// If the leading digits are zero they are not included in the string.
+// - value : The number to be converted to RADIX
+// - buffer : receives the string representing the number and zero-termination.
+// - radix : The radix to convert the number to (from the enum RADIX)
+// void utoa(__zp(5) unsigned int value, __zp($d) char *buffer, char radix)
+utoa: {
+ .label __10 = $11
+ .label __11 = 2
+ .label digit_value = 9
+ .label buffer = $d
+ .label digit = 3
+ .label value = 5
+ .label started = $10
+ // [391] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
+ __b1_from_utoa:
+ // [391] phi utoa::buffer#10 = buffer [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1
+ lda #<@buffer
+ sta.z buffer
+ lda #>@buffer
+ sta.z buffer+1
+ // [391] phi utoa::started#2 = 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z started
+ // [391] phi utoa::value#3 = utoa::value#10 [phi:utoa->utoa::@1#2] -- register_copy
+ // [391] phi utoa::digit#2 = 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1
+ lda #0
+ sta.z digit
+ jmp __b1
+ // utoa::@1
+ __b1:
+ // [392] if(utoa::digit#2<5-1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1
+ lda.z digit
+ cmp #5-1
+ bcc __b2
+ jmp __b3
+ // utoa::@3
+ __b3:
+ // [393] utoa::$11 = (char)utoa::value#3 -- vbuz1=_byte_vwuz2
+ lda.z value
+ sta.z __11
+ // [394] *utoa::buffer#10 = DIGITS[utoa::$11] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
+ ldy.z __11
+ lda DIGITS,y
+ ldy #0
+ sta (buffer),y
+ // [395] utoa::buffer#3 = ++ utoa::buffer#10 -- pbuz1=_inc_pbuz1
+ inc.z buffer
+ bne !+
+ inc.z buffer+1
+ !:
+ // [396] *utoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ ldy #0
+ sta (buffer),y
+ jmp __breturn
+ // utoa::@return
+ __breturn:
+ // [397] return
+ rts
+ // utoa::@2
+ __b2:
+ // [398] utoa::$10 = utoa::digit#2 << 1 -- vbuz1=vbuz2_rol_1
+ lda.z digit
+ asl
+ sta.z __10
+ // [399] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10] -- vwuz1=pwuc1_derefidx_vbuz2
+ ldy.z __10
+ lda RADIX_DECIMAL_VALUES,y
+ sta.z digit_value
+ lda RADIX_DECIMAL_VALUES+1,y
+ sta.z digit_value+1
+ // [400] if(0!=utoa::started#2) goto utoa::@5 -- 0_neq_vbuz1_then_la1
+ lda.z started
+ bne __b5
+ jmp __b7
+ // utoa::@7
+ __b7:
+ // [401] if(utoa::value#3>=utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1
+ lda.z digit_value+1
+ cmp.z value+1
+ bne !+
+ lda.z digit_value
+ cmp.z value
+ beq __b5
+ !:
+ bcc __b5
+ // [402] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4]
+ __b4_from___b7:
+ // [402] phi utoa::buffer#15 = utoa::buffer#10 [phi:utoa::@7->utoa::@4#0] -- register_copy
+ // [402] phi utoa::started#4 = utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy
+ // [402] phi utoa::value#7 = utoa::value#3 [phi:utoa::@7->utoa::@4#2] -- register_copy
+ jmp __b4
+ // utoa::@4
+ __b4:
+ // [403] utoa::digit#1 = ++ utoa::digit#2 -- vbuz1=_inc_vbuz1
+ inc.z digit
+ // [391] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1]
+ __b1_from___b4:
+ // [391] phi utoa::buffer#10 = utoa::buffer#15 [phi:utoa::@4->utoa::@1#0] -- register_copy
+ // [391] phi utoa::started#2 = utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy
+ // [391] phi utoa::value#3 = utoa::value#7 [phi:utoa::@4->utoa::@1#2] -- register_copy
+ // [391] phi utoa::digit#2 = utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy
+ jmp __b1
+ // utoa::@5
+ __b5:
+ // [404] utoa_append::buffer#0 = utoa::buffer#10
+ // [405] utoa_append::value#0 = utoa::value#3
+ // [406] utoa_append::sub#0 = utoa::digit_value#0
+ // [407] call utoa_append
+ // [432] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append]
+ utoa_append_from___b5:
+ jsr utoa_append
+ // [408] utoa_append::return#0 = utoa_append::value#2
+ jmp __b6
+ // utoa::@6
+ __b6:
+ // [409] utoa::value#0 = utoa_append::return#0
+ // [410] utoa::buffer#4 = ++ utoa::buffer#10 -- pbuz1=_inc_pbuz1
+ inc.z buffer
+ bne !+
+ inc.z buffer+1
+ !:
+ // [402] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4]
+ __b4_from___b6:
+ // [402] phi utoa::buffer#15 = utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy
+ // [402] phi utoa::started#4 = 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1
+ lda #1
+ sta.z started
+ // [402] phi utoa::value#7 = utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy
+ jmp __b4
+}
+ // read_chrono
+read_chrono: {
+ .label __0 = $23
+ .label __5 = 9
+ // asm { jsr$ffde stal stxm }
+ jsr $ffde
+ sta l
+ stx m
+ // [412] read_chrono::$0 = m << 8 -- vwuz1=vbuz2_rol_8
+ lda.z m
+ sta.z __0+1
+ lda #0
+ sta.z __0
+ // [413] div16u8u::dividend#0 = read_chrono::$0 + l -- vwuz1=vwuz1_plus_vbuz2
+ lda.z l
+ clc
+ adc.z div16u8u.dividend
+ sta.z div16u8u.dividend
+ bcc !+
+ inc.z div16u8u.dividend+1
+ !:
+ // [414] call div16u8u
+ jsr div16u8u
+ // [415] div16u8u::return#2 = div16u8u::return#0 -- vwuz1=vwuz2
+ lda.z div16u8u.return
+ sta.z div16u8u.return_1
+ lda.z div16u8u.return+1
+ sta.z div16u8u.return_1+1
+ jmp __b2
+ // read_chrono::@2
+ __b2:
+ // [416] *((char *)$1e15+c) = 7 -- _deref_pbuc1=vbuc2
+ lda #7
+ sta $1e15+c
+ // [417] *((char *) 7701) = $b9 -- _deref_pbuc1=vbuc2
+ lda #$b9
+ sta $1e15
+ // [418] if(div16u8u::return#2>=$a) goto read_chrono::@return -- vwuz1_ge_vbuc1_then_la1
+ lda.z div16u8u.return_1+1
+ bne __breturn
+ lda.z div16u8u.return_1
+ cmp #$a
+ bcs __breturn
+ !:
+ jmp __b1
+ // read_chrono::@1
+ __b1:
+ // [419] read_chrono::$5 = $b9 - div16u8u::return#2 -- vwuz1=vwuc1_minus_vwuz2
+ sec
+ lda #<$b9
+ sbc.z div16u8u.return_1
+ sta.z __5
+ lda #>$b9
+ sbc.z div16u8u.return_1+1
+ sta.z __5+1
+ // [420] *((char *) 7701) = read_chrono::$5 -- _deref_pbuc1=vwuz1
+ lda.z __5
+ sta $1e15
+ jmp __breturn
+ // read_chrono::@return
+ __breturn:
+ // [421] return
+ rts
+}
+ // cputc
+// Output one character at the current cursor position
+// Moves the cursor forward. Scrolls the entire screen if needed
+// void cputc(__zp(2) char c)
+cputc: {
+ .label c = 2
+ // [422] if(cputc::c#0==' ') goto cputc::@1 -- vbuz1_eq_vbuc1_then_la1
+ lda #'\n'
+ cmp.z c
+ beq __b1_from_cputc
+ jmp __b2
+ // cputc::@2
+ __b2:
+ // [423] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuz3
+ lda.z c
+ ldy.z conio_cursor_x
+ sta (conio_line_text),y
+ // [424] conio_line_color[conio_cursor_x] = conio_textcolor -- pbuz1_derefidx_vbuz2=vbuz3
+ lda.z conio_textcolor
+ ldy.z conio_cursor_x
+ sta (conio_line_color),y
+ // [425] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1
+ inc.z conio_cursor_x
+ // [426] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1
+ lda #$28
+ cmp.z conio_cursor_x
+ bne __breturn
+ // [427] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
+ __b3_from___b2:
+ jmp __b3
+ // cputc::@3
+ __b3:
+ // [428] call cputln
+ jsr cputln
+ jmp __breturn
+ // cputc::@return
+ __breturn:
+ // [429] return
+ rts
+ // [430] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
+ __b1_from_cputc:
+ jmp __b1
+ // cputc::@1
+ __b1:
+ // [431] call cputln
+ jsr cputln
+ jmp __breturn
+}
+ // utoa_append
+// Used to convert a single digit of an unsigned number value to a string representation
+// Counts a single digit up from '0' as long as the value is larger than sub.
+// Each time the digit is increased sub is subtracted from value.
+// - buffer : pointer to the char that receives the digit
+// - value : The value where the digit will be derived from
+// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
+// (For decimal the subs used are 10000, 1000, 100, 10, 1)
+// returns : the value reduced by sub * digit so that it is less than sub.
+// __zp(5) unsigned int utoa_append(__zp($d) char *buffer, __zp(5) unsigned int value, __zp(9) unsigned int sub)
+utoa_append: {
+ .label buffer = $d
+ .label value = 5
+ .label sub = 9
+ .label return = 5
+ .label digit = 7
+ // [433] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
+ __b1_from_utoa_append:
+ // [433] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z digit
+ // [433] phi utoa_append::value#2 = utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy
+ jmp __b1
+ // utoa_append::@1
+ __b1:
+ // [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1
+ lda.z sub+1
+ cmp.z value+1
+ bne !+
+ lda.z sub
+ cmp.z value
+ beq __b2
+ !:
+ bcc __b2
+ jmp __b3
+ // utoa_append::@3
+ __b3:
+ // [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
+ ldy.z digit
+ lda DIGITS,y
+ ldy #0
+ sta (buffer),y
+ jmp __breturn
+ // utoa_append::@return
+ __breturn:
+ // [436] return
+ rts
+ // utoa_append::@2
+ __b2:
+ // [437] utoa_append::digit#1 = ++ utoa_append::digit#2 -- vbuz1=_inc_vbuz1
+ inc.z digit
+ // [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2
+ lda.z value
+ sec
+ sbc.z sub
+ sta.z value
+ lda.z value+1
+ sbc.z sub+1
+ sta.z value+1
+ // [433] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1]
+ __b1_from___b2:
+ // [433] phi utoa_append::digit#2 = utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy
+ // [433] phi utoa_append::value#2 = utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy
+ jmp __b1
+}
+ // div16u8u
+// Divide unsigned 16-bit unsigned long dividend with a 8-bit unsigned char divisor
+// The 8-bit unsigned char remainder can be found in rem8u after the division
+// __zp($30) unsigned int div16u8u(__zp($23) unsigned int dividend, char divisor)
+div16u8u: {
+ .label divisor = $3c
+ .label quotient_hi = 2
+ .label quotient_lo = $10
+ .label return = $12
+ .label dividend = $23
+ .label return_1 = $30
+ // [439] divr8u::dividend#1 = byte1 div16u8u::dividend#0 -- vbuz1=_byte1_vwuz2
+ lda.z dividend+1
+ sta.z divr8u.dividend
+ // [440] call divr8u
+ // [456] phi from div16u8u to divr8u [phi:div16u8u->divr8u]
+ divr8u_from_div16u8u:
+ // [456] phi divr8u::dividend#5 = divr8u::dividend#1 [phi:div16u8u->divr8u#0] -- register_copy
+ // [456] phi divr8u::rem#10 = 0 [phi:div16u8u->divr8u#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z divr8u.rem
+ jsr divr8u
+ // [441] divr8u::return#2 = divr8u::return#0
+ jmp __b1
+ // div16u8u::@1
+ __b1:
+ // [442] div16u8u::quotient_hi#0 = divr8u::return#2 -- vbuz1=vbuz2
+ lda.z divr8u.return
+ sta.z quotient_hi
+ // [443] divr8u::dividend#2 = byte0 div16u8u::dividend#0 -- vbuz1=_byte0_vwuz2
+ lda.z dividend
+ sta.z divr8u.dividend
+ // [444] divr8u::rem#4 = divr8u::rem#11
+ // [445] call divr8u
+ // [456] phi from div16u8u::@1 to divr8u [phi:div16u8u::@1->divr8u]
+ divr8u_from___b1:
+ // [456] phi divr8u::dividend#5 = divr8u::dividend#2 [phi:div16u8u::@1->divr8u#0] -- register_copy
+ // [456] phi divr8u::rem#10 = divr8u::rem#4 [phi:div16u8u::@1->divr8u#1] -- register_copy
+ jsr divr8u
+ // [446] divr8u::return#3 = divr8u::return#0
+ jmp __b2
+ // div16u8u::@2
+ __b2:
+ // [447] div16u8u::quotient_lo#0 = divr8u::return#3
+ // [448] div16u8u::return#0 = div16u8u::quotient_hi#0 w= div16u8u::quotient_lo#0 -- vwuz1=vbuz2_word_vbuz3
+ lda.z quotient_hi
+ sta.z return+1
+ lda.z quotient_lo
+ sta.z return
+ jmp __breturn
+ // div16u8u::@return
+ __breturn:
+ // [449] return
+ rts
+}
+ // cputln
+// Print a newline
+cputln: {
+ // [450] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z conio_line_text
+ sta.z conio_line_text
+ bcc !+
+ inc.z conio_line_text+1
+ !:
+ // [451] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z conio_line_color
+ sta.z conio_line_color
+ bcc !+
+ inc.z conio_line_color+1
+ !:
+ // [452] conio_cursor_x = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z conio_cursor_x
+ // [453] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1
+ inc.z conio_cursor_y
+ // [454] call cscroll
+ jsr cscroll
+ jmp __breturn
+ // cputln::@return
+ __breturn:
+ // [455] return
+ rts
+}
+ // divr8u
+// Performs division on two 8 bit unsigned chars and an initial remainder
+// Returns dividend/divisor.
+// The final remainder will be set into the global variable rem8u
+// Implemented using simple binary division
+// __zp($10) char divr8u(__zp(3) char dividend, char divisor, __zp($f) char rem)
+divr8u: {
+ .label __1 = $11
+ .label rem = $f
+ .label dividend = 3
+ .label quotient = $10
+ .label i = 7
+ .label return = $10
+ // [457] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1]
+ __b1_from_divr8u:
+ // [457] phi divr8u::i#2 = 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z i
+ // [457] phi divr8u::quotient#3 = 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z quotient
+ // [457] phi divr8u::dividend#3 = divr8u::dividend#5 [phi:divr8u->divr8u::@1#2] -- register_copy
+ // [457] phi divr8u::rem#5 = divr8u::rem#10 [phi:divr8u->divr8u::@1#3] -- register_copy
+ jmp __b1
+ // [457] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1]
+ __b1_from___b3:
+ // [457] phi divr8u::i#2 = divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy
+ // [457] phi divr8u::quotient#3 = divr8u::return#0 [phi:divr8u::@3->divr8u::@1#1] -- register_copy
+ // [457] phi divr8u::dividend#3 = divr8u::dividend#0 [phi:divr8u::@3->divr8u::@1#2] -- register_copy
+ // [457] phi divr8u::rem#5 = divr8u::rem#11 [phi:divr8u::@3->divr8u::@1#3] -- register_copy
+ jmp __b1
+ // divr8u::@1
+ __b1:
+ // [458] divr8u::rem#0 = divr8u::rem#5 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z rem
+ // [459] divr8u::$1 = divr8u::dividend#3 & $80 -- vbuz1=vbuz2_band_vbuc1
+ lda #$80
+ and.z dividend
+ sta.z __1
+ // [460] if(divr8u::$1==0) goto divr8u::@2 -- vbuz1_eq_0_then_la1
+ lda.z __1
+ beq __b2_from___b1
+ jmp __b4
+ // divr8u::@4
+ __b4:
+ // [461] divr8u::rem#1 = divr8u::rem#0 | 1 -- vbuz1=vbuz1_bor_vbuc1
+ lda #1
+ ora.z rem
+ sta.z rem
+ // [462] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2]
+ __b2_from___b1:
+ __b2_from___b4:
+ // [462] phi divr8u::rem#6 = divr8u::rem#0 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy
+ jmp __b2
+ // divr8u::@2
+ __b2:
+ // [463] divr8u::dividend#0 = divr8u::dividend#3 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z dividend
+ // [464] divr8u::quotient#1 = divr8u::quotient#3 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z quotient
+ // [465] if(divr8u::rem#6divr8u::@3]
+ __b3_from___b2:
+ __b3_from___b5:
+ // [468] phi divr8u::return#0 = divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy
+ // [468] phi divr8u::rem#11 = divr8u::rem#6 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy
+ jmp __b3
+ // divr8u::@3
+ __b3:
+ // [469] divr8u::i#1 = ++ divr8u::i#2 -- vbuz1=_inc_vbuz1
+ inc.z i
+ // [470] if(divr8u::i#1!=8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1
+ lda #8
+ cmp.z i
+ bne __b1_from___b3
+ jmp __breturn
+ // divr8u::@return
+ __breturn:
+ // [471] return
+ rts
+}
+ // cscroll
+// Scroll the entire screen if the cursor is beyond the last line
+cscroll: {
+ // [472] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1
+ lda #$19
+ cmp.z conio_cursor_y
+ bne __breturn
+ // [473] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
+ __b1_from_cscroll:
+ jmp __b1
+ // cscroll::@1
+ __b1:
+ // [474] call memcpy
+ // [485] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
+ memcpy_from___b1:
+ // [485] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN
+ sta.z memcpy.destination+1
+ // [485] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // [475] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
+ __b2_from___b1:
+ jmp __b2
+ // cscroll::@2
+ __b2:
+ // [476] call memcpy
+ // [485] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
+ memcpy_from___b2:
+ // [485] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1
+ lda #COLORRAM
+ sta.z memcpy.destination+1
+ // [485] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1
+ lda #COLORRAM+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // [477] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
+ __b3_from___b2:
+ jmp __b3
+ // cscroll::@3
+ __b3:
+ // [478] call memset
+ // [495] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
+ memset_from___b3:
+ // [495] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuz1=vbuc1
+ lda #' '
+ sta.z memset.c
+ // [495] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ jmp __b4
+ // cscroll::@4
+ __b4:
+ // [479] memset::c#1 = conio_textcolor -- vbuz1=vbuz2
+ lda.z conio_textcolor
+ sta.z memset.c
+ // [480] call memset
+ // [495] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
+ memset_from___b4:
+ // [495] phi memset::c#4 = memset::c#1 [phi:cscroll::@4->memset#0] -- register_copy
+ // [495] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1
+ lda #COLORRAM+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ jmp __b5
+ // cscroll::@5
+ __b5:
+ // [481] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1
+ sec
+ lda.z conio_line_text
+ sbc #$28
+ sta.z conio_line_text
+ lda.z conio_line_text+1
+ sbc #0
+ sta.z conio_line_text+1
+ // [482] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1
+ sec
+ lda.z conio_line_color
+ sbc #$28
+ sta.z conio_line_color
+ lda.z conio_line_color+1
+ sbc #0
+ sta.z conio_line_color+1
+ // [483] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1
+ dec.z conio_cursor_y
+ jmp __breturn
+ // cscroll::@return
+ __breturn:
+ // [484] return
+ rts
+}
+ // memcpy
+// Copy block of memory (forwards)
+// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
+// void * memcpy(__zp($b) void *destination, __zp($d) void *source, unsigned int num)
+memcpy: {
+ .label src_end = 9
+ .label dst = $b
+ .label src = $d
+ .label source = $d
+ .label destination = $b
+ // [486] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
+ lda.z source
+ clc
+ adc #<$19*$28-$28
+ sta.z src_end
+ lda.z source+1
+ adc #>$19*$28-$28
+ sta.z src_end+1
+ // [487] memcpy::src#4 = (char *)memcpy::source#2
+ // [488] memcpy::dst#4 = (char *)memcpy::destination#2
+ // [489] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
+ __b1_from_memcpy:
+ __b1_from___b2:
+ // [489] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy
+ // [489] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy
+ jmp __b1
+ // memcpy::@1
+ __b1:
+ // [490] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1
+ lda.z src+1
+ cmp.z src_end+1
+ bne __b2
+ lda.z src
+ cmp.z src_end
+ bne __b2
+ jmp __breturn
+ // memcpy::@return
+ __breturn:
+ // [491] return
+ rts
+ // memcpy::@2
+ __b2:
+ // [492] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
+ ldy #0
+ lda (src),y
+ ldy #0
+ sta (dst),y
+ // [493] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ // [494] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
+ inc.z src
+ bne !+
+ inc.z src+1
+ !:
+ jmp __b1_from___b2
+}
+ // memset
+// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
+// void * memset(__zp($b) void *str, __zp($10) char c, unsigned int num)
+memset: {
+ .label end = $12
+ .label dst = $b
+ .label c = $10
+ .label str = $b
+ jmp __b1
+ // memset::@1
+ __b1:
+ // [496] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1
+ lda #$28
+ clc
+ adc.z str
+ sta.z end
+ lda #0
+ adc.z str+1
+ sta.z end+1
+ // [497] memset::dst#4 = (char *)memset::str#3
+ // [498] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
+ __b2_from___b1:
+ __b2_from___b3:
+ // [498] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
+ jmp __b2
+ // memset::@2
+ __b2:
+ // [499] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
+ lda.z dst+1
+ cmp.z end+1
+ bne __b3
+ lda.z dst
+ cmp.z end
+ bne __b3
+ jmp __breturn
+ // memset::@return
+ __breturn:
+ // [500] return
+ rts
+ // memset::@3
+ __b3:
+ // [501] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuz2
+ lda.z c
+ ldy #0
+ sta (dst),y
+ // [502] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ jmp __b2_from___b3
+}
+ // File Data
+.segment Data
+ // The digits used for numbers
+ DIGITS: .text "0123456789abcdef"
+ // Values of decimal digits
+ RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a
+ // [0..65536] 16-bit
+ points: .byte 0, 0, 0, 0
+ buffer: .byte 0, 0, 0, 0
+ // for unexpanded. 37888-4096 color for expanded
+ ducknumber: .byte $44, $55, $43, $4b, $3a
+ // DUCK:
+ chrono: .byte $54, $4d, $3a, $39
+ // TM:9
+ duck_udg: .byte $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0
+ // POKE CODES = 0,1,2,3,4; CHROUT CODES = 64, 65, 66, 67, 68 (with previous reverse_off "chrout(146)")
+ intro: .text @"\n\n\nDIFFICULTY\n----------\n\n\n"
+ .byte 0
+ levels: .text @"1.EASIEST\n\n3.EASY\n\n5.MEDIUM\n\n7.HARD\n\n9.EXPERT\n\n\n\n\n"
+ .byte 0
+ foot: .text @"PRESS: 1,3,5,7 or 9\n\n"
+ .byte 0
+ game_over: .text @"\n\n\n\nGAME OVER"
+ .byte 0
+ play_again: .text @"\n\n\nPlay Again (Y/N)?"
+ .byte 0
+ your_score: .text @"\n\n\nYour Score: "
+ .byte 0
+ high_score: .text @"\n\nHi-Score: "
+ .byte 0
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp __init1
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Removing instruction jmp __b2
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Removing instruction jmp __b50
+Removing instruction jmp __b51
+Removing instruction jmp __b1
+Removing instruction jmp __b3
+Removing instruction jmp __b52
+Removing instruction jmp __b53
+Removing instruction jmp __b54
+Removing instruction jmp __b55
+Removing instruction jmp __b56
+Removing instruction jmp __b57
+Removing instruction jmp __b4
+Removing instruction jmp __b5
+Removing instruction jmp __b58
+Removing instruction jmp __b59
+Removing instruction jmp __b60
+Removing instruction jmp __b6
+Removing instruction jmp __b8
+Removing instruction jmp __b61
+Removing instruction jmp __b62
+Removing instruction jmp __b13
+Removing instruction jmp __b71
+Removing instruction jmp __b12
+Removing instruction jmp __b65
+Removing instruction jmp __b66
+Removing instruction jmp __b67
+Removing instruction jmp __b68
+Removing instruction jmp __b69
+Removing instruction jmp __b70
+Removing instruction jmp __b17
+Removing instruction jmp __b19
+Removing instruction jmp __b75
+Removing instruction jmp __b76
+Removing instruction jmp __b77
+Removing instruction jmp __b20
+Removing instruction jmp __b22
+Removing instruction jmp __b79
+Removing instruction jmp __b80
+Removing instruction jmp __b81
+Removing instruction jmp __b45
+Removing instruction jmp __b82
+Removing instruction jmp __b24
+Removing instruction jmp __b83
+Removing instruction jmp __b84
+Removing instruction jmp __b106
+Removing instruction jmp __b105
+Removing instruction jmp __b104
+Removing instruction jmp __b103
+Removing instruction jmp __b25
+Removing instruction jmp __b26
+Removing instruction jmp __b28
+Removing instruction jmp __b86
+Removing instruction jmp __b87
+Removing instruction jmp __b44
+Removing instruction jmp __b91
+Removing instruction jmp __b92
+Removing instruction jmp __b93
+Removing instruction jmp __b94
+Removing instruction jmp __b95
+Removing instruction jmp __b96
+Removing instruction jmp __b97
+Removing instruction jmp __b98
+Removing instruction jmp __b99
+Removing instruction jmp __b100
+Removing instruction jmp __b101
+Removing instruction jmp __b102
+Removing instruction jmp __b47
+Removing instruction jmp __b112
+Removing instruction jmp __b48
+Removing instruction jmp __b49
+Removing instruction jmp __breturn
+Removing instruction jmp __b27
+Removing instruction jmp __b85
+Removing instruction jmp __b37
+Removing instruction jmp __b29
+Removing instruction jmp __b38
+Removing instruction jmp __b30
+Removing instruction jmp __b39
+Removing instruction jmp __b31
+Removing instruction jmp __b40
+Removing instruction jmp __b32
+Removing instruction jmp __b41
+Removing instruction jmp __b42
+Removing instruction jmp __b35
+Removing instruction jmp __b33
+Removing instruction jmp __b111
+Removing instruction jmp __b110
+Removing instruction jmp __b36
+Removing instruction jmp __b89
+Removing instruction jmp __b90
+Removing instruction jmp __b108
+Removing instruction jmp __b43
+Removing instruction jmp __b88
+Removing instruction jmp __b78
+Removing instruction jmp __b74
+Removing instruction jmp __b14
+Removing instruction jmp __b16
+Removing instruction jmp __b73
+Removing instruction jmp __b72
+Removing instruction jmp __b9
+Removing instruction jmp __b11
+Removing instruction jmp __b64
+Removing instruction jmp __b63
+Removing instruction jmp __b3
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b3
+Removing instruction jmp __b4
+Removing instruction jmp __breturn
+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 __b15
+Removing instruction jmp __b1
+Removing instruction jmp __b5
+Removing instruction jmp __b7
+Removing instruction jmp __b11
+Removing instruction jmp __b8
+Removing instruction jmp __b2
+Removing instruction jmp __b4
+Removing instruction jmp __b3
+Removing instruction jmp __b12
+Removing instruction jmp __b13
+Removing instruction jmp __b9
+Removing instruction jmp __breturn
+Removing instruction jmp __b14
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Removing instruction jmp __b2
+Removing instruction jmp __b4
+Removing instruction jmp __b1
+Removing instruction jmp __b3
+Removing instruction jmp __breturn
+Removing instruction jmp __b7
+Removing instruction jmp __b4
+Removing instruction jmp __b6
+Removing instruction jmp __b2
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Removing instruction jmp __b2
+Removing instruction jmp __b3
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b1
+Removing instruction jmp __b3
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b4
+Removing instruction jmp __b2
+Removing instruction jmp __b5
+Removing instruction jmp __b3
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __b3
+Removing instruction jmp __b4
+Removing instruction jmp __b5
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __breturn
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction lda #0
+Removing instruction lda #0
+Removing instruction lda.z line
+Removing instruction lda #<0
+Removing instruction lda #>0
+Removing instruction lda #<0
+Removing instruction lda #>0
+Removing instruction lda #0
+Removing instruction lda.z __29+1
+Removing instruction lda #>0
+Removing instruction lda #>0
+Replacing instruction ldy #0 with TAY
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Removing instruction lda.z __78
+Removing instruction lda.z __81
+Removing instruction lda.z __84
+Removing instruction lda.z __88
+Removing instruction lda.z __92
+Removing instruction ldy #0
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction ldy #0 with TAY
+Removing instruction ldy #0
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Removing instruction ldy #0
+Replacing instruction ldy #0 with TAY
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Replacing instruction ldy #0 with TAY
+Removing instruction lda.z z_1+1
+Removing instruction lda #>0
+Replacing instruction ldy #0 with TAY
+Removing instruction ldy #0
+Removing instruction lda.z m
+Removing instruction lda #>0
+Replacing instruction ldy #0 with TAY
+Replacing instruction ldx #0 with TAX
+Removing instruction lda #>0
+Removing instruction lda #0
+Replacing instruction ldy.z __11 with TAY
+Replacing instruction ldy #0 with TAY
+Replacing instruction ldy.z __10 with TAY
+Replacing instruction lda.z m with TXA
+Removing instruction ldy.z conio_cursor_x
+Removing instruction lda #0
+Removing instruction lda.z __1
+Removing instruction ldy #0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Replacing label __b2_from_conio_c64_init with __b1
+Replacing label __b24_from___b106 with __b24_from___b84
+Replacing label __b24_from___b105 with __b24_from___b84
+Replacing label __b24_from___b104 with __b24_from___b84
+Replacing label __b24_from___b103 with __b24_from___b84
+Replacing label __b27_from___b26 with __b27
+Replacing label __b22_from___b87 with __b22
+Replacing label __b46_from___b114 with __b46_from___b99
+Replacing label __b29_from___b85 with __b29
+Replacing label __b30_from___b29 with __b30
+Replacing label __b31_from___b30 with __b31
+Replacing label __b32_from___b31 with __b32
+Replacing label __b33_from___b32 with __b33
+Replacing label __b36_from___b33 with __b36
+Replacing label __b36_from___b109 with __b36_from___b111
+Replacing label __b36_from___b108 with __b36_from___b111
+Replacing label __b36_from___b107 with __b36_from___b111
+Replacing label __b36_from___b107 with __b36_from___b111
+Replacing label __b36_from___b43 with __b36
+Replacing label __b24_from___b23 with __b24_from___b84
+Replacing label __b13_from___b73 with __b13
+Replacing label __b13_from___b73 with __b13
+Replacing label __b3_from_gotoxy with __b2
+Replacing label __b1 with __b2
+Replacing label __b1_from___b2 with __b1
+Replacing label __b15_from_write_score with __b1
+Replacing label __b15_from_write_score with __b1
+Replacing label __b1_from___b4 with __b1
+Replacing label __b1_from_cputc with __b1
+Replacing label __b2_from___b1 with __b2
+Replacing label __b3_from___b2 with __b3
+Replacing label __b1_from___b3 with __b1
+Replacing label __b1_from___b2 with __b1
+Replacing label __b2_from___b3 with __b2
+Removing instruction __b1_from___init1:
+Removing instruction __b2_from_conio_c64_init:
+Removing instruction __b2:
+Removing instruction __b1_from___b2:
+Removing instruction gotoxy_from___b1:
+Removing instruction clear_screen_from___b3:
+Removing instruction __b52_from___b3:
+Removing instruction __b53_from___b52:
+Removing instruction cputs_from___b53:
+Removing instruction __b54_from___b53:
+Removing instruction __b55_from___b54:
+Removing instruction cputs_from___b55:
+Removing instruction __b56_from___b55:
+Removing instruction __b57_from___b56:
+Removing instruction cputs_from___b57:
+Removing instruction __b5_from___b4:
+Removing instruction __b13_from___b73:
+Removing instruction __b12_from___b71:
+Removing instruction __b19_from___b17:
+Removing instruction __b22_from___b87:
+Removing instruction __b24_from___b103:
+Removing instruction __b24_from___b104:
+Removing instruction __b24_from___b105:
+Removing instruction __b24_from___b106:
+Removing instruction __b24_from___b23:
+Removing instruction __b24_from___b82:
+Removing instruction random_from___b24:
+Removing instruction __b25_from___b103:
+Removing instruction __b44_from___b87:
+Removing instruction __b92_from___b91:
+Removing instruction __b93_from___b92:
+Removing instruction cputs_from___b93:
+Removing instruction __b94_from___b93:
+Removing instruction __b95_from___b94:
+Removing instruction cputs_from___b95:
+Removing instruction __b96_from___b95:
+Removing instruction cputs_from___b96:
+Removing instruction __b97_from___b96:
+Removing instruction __b98_from___b97:
+Removing instruction cputs_from___b98:
+Removing instruction __b46_from___b114:
+Removing instruction __b100_from___b46:
+Removing instruction cputs_from___b100:
+Removing instruction __b101_from___b100:
+Removing instruction __b102_from___b101:
+Removing instruction cputs_from___b102:
+Removing instruction __b27_from___b26:
+Removing instruction __b29_from___b37:
+Removing instruction __b29_from___b85:
+Removing instruction __b30_from___b29:
+Removing instruction __b30_from___b38:
+Removing instruction __b31_from___b30:
+Removing instruction __b31_from___b39:
+Removing instruction __b32_from___b31:
+Removing instruction __b32_from___b40:
+Removing instruction __b33_from___b32:
+Removing instruction __b33_from___b35:
+Removing instruction __b36_from___b107:
+Removing instruction __b36_from___b108:
+Removing instruction __b36_from___b109:
+Removing instruction __b36_from___b110:
+Removing instruction __b36_from___b33:
+Removing instruction __b36_from___b43:
+Removing instruction __b88_from___b34:
+Removing instruction wait_from___b88:
+Removing instruction __b3_from_gotoxy:
+Removing instruction __b3:
+Removing instruction __b1_from___b3:
+Removing instruction __b1:
+Removing instruction __b3_from___b1:
+Removing instruction __b1_from_cputs:
+Removing instruction __b1_from___b2:
+Removing instruction __b15_from_write_score:
+Removing instruction __b15:
+Removing instruction __b1_from___b15:
+Removing instruction __b1_from_wait:
+Removing instruction __b1_from___b4:
+Removing instruction __b4_from___b7:
+Removing instruction utoa_append_from___b5:
+Removing instruction __b3_from___b2:
+Removing instruction __b1_from_cputc:
+Removing instruction __b1_from___b3:
+Removing instruction __b2_from___b1:
+Removing instruction __b2_from___b4:
+Removing instruction __b3_from___b2:
+Removing instruction __b3_from___b5:
+Removing instruction __b1_from_cscroll:
+Removing instruction memcpy_from___b1:
+Removing instruction __b2_from___b1:
+Removing instruction memcpy_from___b2:
+Removing instruction __b3_from___b2:
+Removing instruction memset_from___b3:
+Removing instruction __b1_from_memcpy:
+Removing instruction __b1_from___b2:
+Removing instruction __b2_from___b1:
+Removing instruction __b2_from___b3:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction __init1:
+Removing instruction __b1:
+Removing instruction __breturn:
+Removing instruction __b1_from_conio_c64_init:
+Removing instruction __breturn:
+Removing instruction __b50:
+Removing instruction __b51:
+Removing instruction __b3_from___b1:
+Removing instruction __b52:
+Removing instruction textcolor_from___b52:
+Removing instruction __b53:
+Removing instruction __b54:
+Removing instruction textcolor_from___b54:
+Removing instruction __b55:
+Removing instruction __b56:
+Removing instruction textcolor_from___b56:
+Removing instruction __b57:
+Removing instruction __b5:
+Removing instruction clear_screen_from___b5:
+Removing instruction __b58:
+Removing instruction __b59:
+Removing instruction __b60:
+Removing instruction __b6_from___b60:
+Removing instruction __b8:
+Removing instruction __b61:
+Removing instruction __b62:
+Removing instruction __b13_from___b62:
+Removing instruction random_from___b13:
+Removing instruction __b71:
+Removing instruction __b65:
+Removing instruction __b66:
+Removing instruction __b67:
+Removing instruction __b68:
+Removing instruction __b69:
+Removing instruction __b70:
+Removing instruction __b17_from___b70:
+Removing instruction __b19:
+Removing instruction write_score_from___b19:
+Removing instruction __b75:
+Removing instruction __b76:
+Removing instruction __b77:
+Removing instruction __b20_from___b77:
+Removing instruction __b22_from___b20:
+Removing instruction __b79:
+Removing instruction __b80:
+Removing instruction __b81:
+Removing instruction __b45:
+Removing instruction __b82:
+Removing instruction __b24:
+Removing instruction __b83:
+Removing instruction random_from___b83:
+Removing instruction __b84:
+Removing instruction __b106:
+Removing instruction __b105:
+Removing instruction __b104:
+Removing instruction __b103:
+Removing instruction __b25:
+Removing instruction __b26_from___b25:
+Removing instruction __b28:
+Removing instruction write_score_from___b28:
+Removing instruction __b86:
+Removing instruction wait_from___b86:
+Removing instruction __b87:
+Removing instruction __b44:
+Removing instruction clear_screen_from___b44:
+Removing instruction __b91:
+Removing instruction __b92:
+Removing instruction textcolor_from___b92:
+Removing instruction __b93:
+Removing instruction __b94:
+Removing instruction textcolor_from___b94:
+Removing instruction __b95:
+Removing instruction __b96:
+Removing instruction __b97:
+Removing instruction textcolor_from___b97:
+Removing instruction __b98:
+Removing instruction __b99:
+Removing instruction utoa_from___b46:
+Removing instruction __b100:
+Removing instruction __b101:
+Removing instruction textcolor_from___b101:
+Removing instruction __b102:
+Removing instruction __b112:
+Removing instruction __b49:
+Removing instruction __breturn:
+Removing instruction __b3_from___b113:
+Removing instruction __b85:
+Removing instruction __b37:
+Removing instruction __b38:
+Removing instruction __b39:
+Removing instruction __b40:
+Removing instruction __b41:
+Removing instruction __b42:
+Removing instruction wait_from___b42:
+Removing instruction __b35_from___b42:
+Removing instruction __b111:
+Removing instruction __b110:
+Removing instruction wait_from___b36:
+Removing instruction __b89:
+Removing instruction wait_from___b89:
+Removing instruction __b90:
+Removing instruction __b26_from___b90:
+Removing instruction __b108:
+Removing instruction __b43:
+Removing instruction write_score_from___b34:
+Removing instruction __b88:
+Removing instruction __b35_from___b88:
+Removing instruction __b78:
+Removing instruction __b20_from___b78:
+Removing instruction __b74:
+Removing instruction __b17_from___b74:
+Removing instruction __b16:
+Removing instruction __b73:
+Removing instruction __b72:
+Removing instruction __b14_from___b72:
+Removing instruction __b9_from___b7:
+Removing instruction __b11:
+Removing instruction __b64:
+Removing instruction __b6_from___b64:
+Removing instruction __b63:
+Removing instruction __b9_from___b63:
+Removing instruction __b1_from_gotoxy:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Removing instruction __b1_from_clear_screen:
+Removing instruction __b3:
+Removing instruction gotoxy_from___b3:
+Removing instruction __b4:
+Removing instruction __breturn:
+Removing instruction __b1_from___b2:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Removing instruction __b2:
+Removing instruction __breturn:
+Removing instruction __b1_from_write_score:
+Removing instruction __b7:
+Removing instruction utoa_from___b7:
+Removing instruction __b11:
+Removing instruction __b8:
+Removing instruction __b4:
+Removing instruction __b12:
+Removing instruction __b13:
+Removing instruction __breturn:
+Removing instruction __b14:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Removing instruction __b4:
+Removing instruction __b2_from___b3:
+Removing instruction __b1_from_utoa:
+Removing instruction __b3:
+Removing instruction __breturn:
+Removing instruction __b7:
+Removing instruction __b1_from___b4:
+Removing instruction __b6:
+Removing instruction __b4_from___b6:
+Removing instruction __b2:
+Removing instruction __b1:
+Removing instruction __b2:
+Removing instruction __b3:
+Removing instruction __b1_from_utoa_append:
+Removing instruction __b3:
+Removing instruction __breturn:
+Removing instruction __b1_from___b2:
+Removing instruction divr8u_from_div16u8u:
+Removing instruction __b1:
+Removing instruction divr8u_from___b1:
+Removing instruction __b2:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Removing instruction __b1_from_divr8u:
+Removing instruction __b4:
+Removing instruction __b5:
+Removing instruction __breturn:
+Removing instruction __b1:
+Removing instruction __b2:
+Removing instruction __b3:
+Removing instruction __b4:
+Removing instruction memset_from___b4:
+Removing instruction __b5:
+Removing instruction __breturn:
+Removing instruction __b1:
+Removing instruction __breturn:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Skipping double jump to __b46 in jmp __b46_from___b99
+Skipping double jump to __b36 in beq __b36_from___b111
+Skipping double jump to __b36 in beq __b36_from___b111
+Skipping double jump to __b36 in jmp __b36_from___b111
+Skipping double jump to __b36 in bne __b36_from___b111
+Skipping double jump to __b36 in bcs __b36_from___b111
+Skipping double jump to __b12 in jmp __b12_from___b73
+Replacing jump to rts with rts in jmp __breturn
+Succesful ASM optimization Pass5DoubleJumpElimination
+Relabelling long label __b12_from___b73 to __b5
+Relabelling long label __b12_from___b62 to __b8
+Relabelling long label __b24_from___b84 to __b11
+Relabelling long label __b46_from___b99 to __b16
+Relabelling long label __b36_from___b111 to __b19
+Relabelling long label __b14_from___b71 to __b24
+Relabelling long label __b2_from___b1 to __b4
+Succesful ASM optimization Pass5RelabelLongLabels
+Removing instruction jmp __b1
+Removing instruction jmp __b13
+Removing instruction jmp __b22
+Removing instruction jmp __b46
+Removing instruction jmp __b36
+Removing instruction jmp __b2
+Removing instruction jmp __b1
+Removing instruction jmp __b1
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction lda #brick
+Removing instruction ldy #0
+Removing instruction lda #brick
+Removing instruction ldy #0
+Removing instruction lda #brick
+Removing instruction ldy #0
+Removing instruction lda #brick
+Removing instruction ldy #0
+Removing instruction ldy #0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Removing instruction __b19:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction __b5:
+Removing instruction __b16:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Fixing long branch [445] beq __b11 to bne
+Fixing long branch [531] bcc __b22 to bcs
+Fixing long branch [920] beq __b36 to bne
+Fixing long branch [936] bne __b36 to beq
+Fixing long branch [941] bcs __b36 to bcc
+Fixing long branch [1052] bcc __b13 to bcs
+Fixing long branch [1058] bcc __b13 to bcs
+Fixing long branch [161] bcc __b2 to bcs
+Fixing long branch [235] bcc __b7 to bcs
+Fixing long branch [287] bcc __b24 to bcs
+Fixing long branch [290] beq __b24 to bne
+Fixing long branch [329] bcc __b18 to bcs
+Fixing long branch [352] bcc __b21 to bcs
+Fixing long branch [381] bcc __b23 to bcs
+Fixing long branch [471] bcc __b27 to bcs
+Fixing long branch [711] bne __b34 to beq
+Fixing long branch [716] bne __b34 to beq
+Fixing long branch [790] bne __b109 to beq
+
+FINAL SYMBOL TABLE
+__constant char * const COLORRAM = (char *) 55296
+__constant char * const DEFAULT_SCREEN = (char *) 1024
+__constant char DIGITS[] = "0123456789abcdef"z
+__constant const char LIGHT_BLUE = $e
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+__constant unsigned int RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
+void __start()
+__constant const char brick = $e6
+__constant char buffer[] = { 0, 0, 0, 0 }
+__constant const unsigned int c = $7800
+__constant const char chrono[] = { $54, $4d, $3a, $39 }
+void chrono_restart()
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:24 3.0310104636363637E7
+void clear_screen(char n , char m)
+unsigned int clear_screen::$4 // zp[2]:35 100001.0
+unsigned int clear_screen::$5 // zp[2]:9 66667.33333333333
+char clear_screen::m
+char clear_screen::n
+char clear_screen::n#5 // n zp[1]:8 12500.125
+void conio_c64_init()
+__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
+char conio_c64_init::line
+char conio_c64_init::line#0 // line zp[1]:76 11.0
+char conio_c64_init::line#2 // line zp[1]:76 22.0
+__loadstore char conio_cursor_x // zp[1]:39 200133.45333333334
+__loadstore char conio_cursor_y // zp[1]:29 3516593.4945054944
+__loadstore char *conio_line_color // zp[2]:30 2662771.1807228914
+__loadstore char *conio_line_text // zp[2]:32 2600117.7411764706
+__loadstore char conio_textcolor // zp[1]:34 1629048.4677419355
+void cputc(char c)
+char cputc::c
+char cputc::c#0 // c zp[1]:2 1050001.5
+void cputln()
+void cputs(const char *s)
+char cputs::c
+char cputs::c#1 // c zp[1]:2 100001.0
+const char *cputs::s
+const char *cputs::s#0 // s zp[2]:5 50000.5
+const char *cputs::s#10 // s zp[2]:5 150502.0
+const char *cputs::s#11 // s zp[2]:5 1001.0
+void cscroll()
+unsigned int div16u8u(unsigned int dividend , char divisor)
+unsigned int div16u8u::dividend
+unsigned int div16u8u::dividend#0 // dividend zp[2]:35 420000.60000000003
+char div16u8u::divisor
+__constant char div16u8u::divisor#0 = $3c // divisor
+unsigned int div16u8u::quotient
+char div16u8u::quotient_hi
+char div16u8u::quotient_hi#0 // quotient_hi zp[1]:2 333333.6666666667
+char div16u8u::quotient_lo
+char div16u8u::quotient_lo#0 // quotient_lo zp[1]:16 2000002.0
+unsigned int div16u8u::return
+unsigned int div16u8u::return#0 // return zp[2]:18 366667.3333333334
+unsigned int div16u8u::return#2 // return_1 zp[2]:48 9166.833333333332
+char divr8u(char dividend , char divisor , char rem)
+char divr8u::$1 // zp[1]:17 2.00000000002E11
+char divr8u::dividend
+char divr8u::dividend#0 // dividend zp[1]:3 2.500000000025E10
+char divr8u::dividend#1 // dividend zp[1]:3 2000002.0
+char divr8u::dividend#2 // dividend zp[1]:3 1000001.0
+char divr8u::dividend#3 // dividend zp[1]:3 5.0001666667333336E10
+char divr8u::dividend#5 // dividend zp[1]:3 1.2000003E7
+char divr8u::divisor
+char divr8u::i
+char divr8u::i#1 // i zp[1]:7 1.500000000015E11
+char divr8u::i#2 // i zp[1]:7 1.6666666666833334E10
+char divr8u::quotient
+char divr8u::quotient#1 // quotient zp[1]:16 1.500000000015E11
+char divr8u::quotient#2 // quotient zp[1]:16 1.00000000001E11
+char divr8u::quotient#3 // quotient zp[1]:16 2.8571428571714287E10
+char divr8u::rem
+char divr8u::rem#0 // rem zp[1]:15 1.00000000001E11
+char divr8u::rem#1 // rem zp[1]:15 2.00000000002E11
+char divr8u::rem#10 // rem zp[1]:15 1.1000002E7
+char divr8u::rem#11 // rem zp[1]:15 2.702711801846847E9
+char divr8u::rem#2 // rem zp[1]:15 2.00000000002E11
+char divr8u::rem#4 // rem zp[1]:15 2000002.0
+char divr8u::rem#5 // rem zp[1]:15 2.00010000003E11
+char divr8u::rem#6 // rem zp[1]:15 1.00000000001E11
+char divr8u::return
+char divr8u::return#0 // return zp[1]:16 5.000033333416667E10
+char divr8u::return#2 // return zp[1]:16 2000002.0
+char divr8u::return#3 // return zp[1]:16 2000002.0
+__constant const char down = $11
+unsigned int duck
+unsigned int duck#0 // duck zp[2]:22 6.6666667333333336E7
+unsigned int duck#1 // duck zp[2]:22 4237745.88135593
+__constant const char duck_udg[] = { $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0 }
+__constant const char ducknumber[] = { $44, $55, $43, $4b, $3a }
+__constant const char foot[] = "PRESS: 1,3,5,7 or 9
+
+"
+__constant const char game_over[] = "
+
+
+
+GAME OVER"
+void gotoxy(char x , char y)
+char *gotoxy::$5 // zp[2]:72 20002.0
+char *gotoxy::$6 // zp[2]:44 20002.0
+unsigned int gotoxy::$7 // zp[2]:44 15001.5
+unsigned int gotoxy::$8 // zp[2]:70 20002.0
+unsigned int gotoxy::$9 // zp[2]:44 20002.0
+unsigned int gotoxy::line_offset
+unsigned int gotoxy::line_offset#0 // line_offset zp[2]:44 10001.0
+char gotoxy::x
+char gotoxy::y
+char gotoxy::y#2 // y zp[1]:76 22.0
+char gotoxy::y#4 // y zp[1]:76 6671.0
+char gotoxy::y#5 // y zp[1]:76 6667.333333333333
+__constant const char green = $1e
+__constant const char high_score[] = "
+
+Hi-Score: "
+unsigned int hiscore
+unsigned int hiscore#110 // hiscore_1 zp[2]:108 1.1744186046511627
+unsigned int hiscore#123 // hiscore_1 zp[2]:108 202.0
+unsigned int hiscore#124 // hiscore zp[2]:42 202.0
+unsigned int hiscore#19 // hiscore zp[2]:42 31.076923076923077
+__constant const char home = $13
+__constant const char intro[] = "
+
+
+DIFFICULTY
+----------
+
+
+"
+char j
+char j#11 // j zp[1]:50 7500.75
+char j#13 // j_1 zp[1]:85 1001.0
+char j#16 // j_2 zp[1]:86 1001.0
+char j#19 // j_3 zp[1]:104 1034.6666666666667
+char j#2 // j zp[1]:50 20002.0
+char j#3 // j_1 zp[1]:85 2002.0
+char j#5 // j_2 zp[1]:86 2002.0
+char k
+char k#1 // k zp[1]:99 2002.0
+char k#101 // k zp[1]:99 273.0
+__loadstore volatile char l // zp[1]:107 455.79148936170213
+__constant const char levels[] = "1.EASIEST
+
+3.EASY
+
+5.MEDIUM
+
+7.HARD
+
+9.EXPERT
+
+
+
+
+"
+__constant const char lock = 8
+__constant const char lower = $e
+__loadstore volatile char m // zp[1]:4 3.8961039106499544E16
+void main()
+unsigned int main::$104 // zp[2]:93 2500.25
+unsigned int main::$107 // zp[2]:95 2500.25
+unsigned int main::$110 // zp[2]:97 2500.25
+unsigned int main::$119 // zp[2]:74 6667.333333333333
+unsigned int main::$120 // zp[2]:81 10001.0
+unsigned int main::$122 // zp[2]:83 10001.0
+unsigned int main::$124 // zp[2]:74 10001.0
+unsigned int main::$125 // zp[2]:77 10001.0
+unsigned int main::$127 // zp[2]:58 10001.0
+unsigned int main::$128 // zp[2]:58 10001.0
+unsigned int main::$130 // zp[2]:60 10001.0
+unsigned int main::$131 // zp[2]:60 10001.0
+unsigned int main::$133 // zp[2]:62 10001.0
+unsigned int main::$134 // zp[2]:62 10001.0
+unsigned int main::$136 // zp[2]:79 10001.0
+unsigned int main::$138 // zp[2]:64 10001.0
+unsigned int main::$139 // zp[2]:64 10001.0
+unsigned int main::$141 // zp[2]:66 10001.0
+unsigned int main::$142 // zp[2]:66 10001.0
+unsigned int main::$144 // zp[2]:68 10001.0
+unsigned int main::$145 // zp[2]:68 10001.0
+unsigned int main::$150 // zp[2]:105 1001.0
+unsigned int main::$151 // zp[2]:87 2002.0
+unsigned int main::$152 // zp[2]:87 1001.0
+unsigned int main::$153 // zp[2]:89 2002.0
+unsigned int main::$154 // zp[2]:89 1001.0
+unsigned int main::$155 // zp[2]:91 2002.0
+unsigned int main::$156 // zp[2]:91 1001.0
+char main::$177 // zp[1]:8 2002.0
+unsigned int main::$179 // zp[2]:56 20002.0
+unsigned int main::$180 // zp[2]:46 20002.0
+char main::$26 // zp[1]:8 2002.0
+unsigned int main::$29 // zp[2]:5 2002.0
+unsigned int main::$3 // zp[2]:112 101.0
+unsigned int main::$35 // zp[2]:102 2002.0
+unsigned int main::$57 // zp[2]:100 2002.0
+unsigned int main::$61 // zp[2]:13 2.00000002E8
+unsigned int main::$66 // zp[2]:11 2.00000002E7
+unsigned int main::$69 // zp[2]:25 2.00000002E7
+unsigned int main::$72 // zp[2]:27 2.00000002E7
+char main::$78 // zp[1]:16 20002.0
+char main::$81 // zp[1]:7 20002.0
+char main::$84 // zp[1]:3 20002.0
+char main::$88 // zp[1]:54 20002.0
+char main::$92 // zp[1]:55 20002.0
+unsigned int main::$96 // zp[2]:46 15001.5
+unsigned int main::$97 // zp[2]:46 20002.0
+void * memcpy(void *destination , void *source , unsigned int num)
+void *memcpy::destination
+void *memcpy::destination#2 // destination zp[2]:11
+char *memcpy::dst
+char *memcpy::dst#1 // dst zp[2]:11 1.000000000001E12
+char *memcpy::dst#2 // dst zp[2]:11 1.0003333333346667E12
+char *memcpy::dst#4 // dst zp[2]:11 2.000000002E9
+unsigned int memcpy::num
+void *memcpy::return
+void *memcpy::source
+void *memcpy::source#2 // source zp[2]:13
+char *memcpy::src
+char *memcpy::src#1 // src zp[2]:13 2.000000000002E12
+char *memcpy::src#2 // src zp[2]:13 1.00025000000125E12
+char *memcpy::src#4 // src zp[2]:13 1.000000001E9
+char *memcpy::src_end
+char *memcpy::src_end#0 // src_end zp[2]:9 1.2512500000025E11
+void * memset(void *str , char c , unsigned int num)
+char memset::c
+char memset::c#1 // c zp[1]:16 2.00000002E8
+char memset::c#4 // c zp[1]:16 1.4287142857171426E11
+char *memset::dst
+char *memset::dst#1 // dst zp[2]:11 2.000000000002E12
+char *memset::dst#2 // dst zp[2]:11 1.3336666666683335E12
+char *memset::dst#4 // dst zp[2]:11 2.000000002E9
+char *memset::end
+char *memset::end#0 // end zp[2]:18 1.668333333336667E11
+unsigned int memset::num
+void *memset::return
+void *memset::str
+void *memset::str#3 // str zp[2]:11
+char n
+char n#1 // n zp[1]:51 20002.0
+char n#101 // n zp[1]:51 4429.142857142857
+char n#109 // n zp[1]:51 7.769230769230769
+char n#14 // n zp[1]:51 344.8620689655172
+char n#20 // n zp[1]:51 220.07272727272726
+char n#52 // n zp[1]:51 93.84375
+char n#89 // n zp[1]:51 35.644067796610166
+unsigned int peephole
+unsigned int peephole#12 // peephole zp[2]:52 617.7352941176471
+unsigned int peephole#52 // peephole zp[2]:52 62.5625
+__constant const char play_again[] = "
+
+
+Play Again (Y/N)?"
+__constant char points[] = { 0, 0, 0, 0 }
+void random(char k , char n)
+char random::$3 // zp[1]:2 5.5E17
+char random::k
+char random::k#0 // k zp[1]:3 500.5
+char random::k#4 // k zp[1]:3 2.00000000000000192E17
+char random::n
+char random::n#0 // n zp[1]:8 2002.0
+char random::n#4 // n zp[1]:8 2.00000000000002E16
+void read_chrono()
+unsigned int read_chrono::$0 // zp[2]:35 200002.0
+unsigned int read_chrono::$5 // zp[2]:9 200002.0
+__constant const char red = $1c
+char rem8u
+char rem8u#127 // rem8u zp[1]:15 11.6
+char rem8u#25 // rem8u zp[1]:15 220.07272727272726
+char rem8u#48 // rem8u zp[1]:15 93.84375
+__constant const char reverse_on = $12
+__constant const char right = $1d
+unsigned int score
+unsigned int score#13 // score zp[2]:42 70334.66666666666
+unsigned int score#19 // score zp[2]:42 1272.9090909090908
+unsigned int score#38 // score zp[2]:42 3843.0654205607475
+unsigned int score#4 // score zp[2]:42 2002.0
+unsigned int score#43 // score zp[2]:42 566.0943396226415
+unsigned int score#6 // score zp[2]:42 20002.0
+unsigned int score#8 // score zp[2]:42 10001.0
+unsigned int score#81 // score zp[2]:42 15001.5
+char textcolor(char color)
+char textcolor::color
+char textcolor::color#7 // color zp[1]:8 1001.0
+char textcolor::old
+char textcolor::return
+unsigned int time
+unsigned int time#11 // time zp[2]:48 20002.0
+unsigned int time#17 // time zp[2]:48 566.0943396226415
+unsigned int time#38 // time zp[2]:48 10001.0
+unsigned int tu
+unsigned int tu#1 // tu zp[2]:110 166.83333333333334
+unsigned int tu#13 // tu zp[2]:110 32.032
+void utoa(unsigned int value , char *buffer , char radix)
+char utoa::$10 // zp[1]:17 2.0000000002E10
+char utoa::$11 // zp[1]:2 2000002.0
+char *utoa::buffer
+char *utoa::buffer#10 // buffer zp[2]:13 2.857285714714286E9
+char *utoa::buffer#15 // buffer zp[2]:13 1.50000000015E10
+char *utoa::buffer#3 // buffer zp[2]:13 2000002.0
+char *utoa::buffer#4 // buffer zp[2]:13 2.0000000002E10
+char utoa::digit
+char utoa::digit#1 // digit zp[1]:3 2.0000000002E10
+char utoa::digit#2 // digit zp[1]:3 2.857142857428571E9
+unsigned int utoa::digit_value
+unsigned int utoa::digit_value#0 // digit_value zp[2]:9 6.0000000006E9
+unsigned int *utoa::digit_values
+char utoa::max_digits
+char utoa::radix
+char utoa::started
+char utoa::started#2 // started zp[1]:16 5.0000000005E9
+char utoa::started#4 // started zp[1]:16 1.0000000001E10
+unsigned int utoa::value
+unsigned int utoa::value#0 // value zp[2]:5 1.0000000001E10
+unsigned int utoa::value#1 // value zp[2]:5 200002.0
+unsigned int utoa::value#10 // value zp[2]:5 1100103.0
+unsigned int utoa::value#2 // value zp[2]:5 202.0
+unsigned int utoa::value#3 // value zp[2]:5 5.714428572142858E9
+unsigned int utoa::value#7 // value zp[2]:5 1.50000000015E10
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+char *utoa_append::buffer
+char *utoa_append::buffer#0 // buffer zp[2]:13 1.375000000025E10
+char utoa_append::digit
+char utoa_append::digit#1 // digit zp[1]:7 1.0E16
+char utoa_append::digit#2 // digit zp[1]:7 1.000005E16
+unsigned int utoa_append::return
+unsigned int utoa_append::return#0 // return zp[2]:5 2.0000000002E10
+unsigned int utoa_append::sub
+unsigned int utoa_append::sub#0 // sub zp[2]:9 3.333335E15
+unsigned int utoa_append::value
+unsigned int utoa_append::value#0 // value zp[2]:5 3.6666666667333336E10
+unsigned int utoa_append::value#1 // value zp[2]:5 2.0E16
+unsigned int utoa_append::value#2 // value zp[2]:5 5.000018333333334E15
+void wait(char n)
+char wait::n
+char wait::n#6 // n zp[1]:3 1.25000000125E8
+void write_score()
+unsigned int y
+unsigned int y#0 // y zp[2]:40 20002.0
+unsigned int y#1 // y zp[2]:40 20002.0
+unsigned int y#10 // y zp[2]:40 13334.666666666666
+unsigned int y#11 // y zp[2]:40 13334.666666666666
+unsigned int y#114 // y zp[2]:40 11.6
+unsigned int y#12 // y zp[2]:40 13334.666666666666
+unsigned int y#13 // y zp[2]:40 2285.9428571428575
+unsigned int y#130 // y zp[2]:40 20002.0
+unsigned int y#141 // y_1 zp[2]:52 20002.0
+unsigned int y#18 // y zp[2]:40 509.61904761904765
+unsigned int y#2 // y zp[2]:40 20002.0
+unsigned int y#3 // y zp[2]:40 20002.0
+unsigned int y#35 // y_1 zp[2]:52 2353.1764705882347
+unsigned int y#49 // y zp[2]:40 93.84375
+__constant const char yellow = $9e
+__constant const char your_score[] = "
+
+
+Your Score: "
+unsigned int z
+unsigned int z#1 // z zp[2]:37 200002.0
+unsigned int z#100 // z_1 zp[2]:20 1050.15
+unsigned int z#102 // z_1 zp[2]:20 93.84375
+unsigned int z#128 // z_1 zp[2]:20 93.84375
+unsigned int z#2 // z zp[2]:37 66667.33333333333
+unsigned int z#23 // z_1 zp[2]:20 1.0333333334666666E10
+unsigned int z#25 // z_1 zp[2]:20 2.564438476923077E7
+unsigned int z#28 // z_1 zp[2]:20 266.93333333333334
+unsigned int z#4 // z_1 zp[2]:20 2.0000000002E10
+unsigned int z#48 // z_1 zp[2]:20 857.2285714285714
+unsigned int z#53 // z_1 zp[2]:20 70503.0
+unsigned int z#9 // z_1 zp[2]:20 2002.0
+
+zp[1]:76 [ conio_c64_init::line#2 conio_c64_init::line#0 gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ]
+zp[2]:108 [ hiscore#110 hiscore#123 ]
+zp[1]:99 [ k#101 k#1 ]
+zp[1]:85 [ j#13 j#3 ]
+zp[1]:86 [ j#16 j#5 ]
+zp[2]:110 [ tu#13 tu#1 ]
+zp[2]:52 [ peephole#52 peephole#12 y#35 y#141 ]
+zp[1]:51 [ n#52 n#89 n#109 n#20 n#101 n#14 n#1 ]
+zp[2]:48 [ time#11 time#17 time#38 div16u8u::return#2 ]
+zp[2]:40 [ y#13 y#12 y#11 y#10 y#0 y#49 y#114 y#18 y#130 y#1 y#2 y#3 ]
+zp[2]:42 [ score#81 hiscore#19 hiscore#124 score#19 score#43 score#38 score#8 score#13 score#4 score#6 ]
+zp[1]:50 [ j#11 j#2 ]
+zp[2]:37 [ z#2 z#1 ]
+zp[1]:8 [ random::n#4 random::n#0 main::$26 main::$177 textcolor::color#7 clear_screen::n#5 ]
+zp[2]:20 [ z#53 z#48 z#100 z#102 z#128 z#28 z#9 z#25 z#23 z#4 ]
+zp[1]:15 [ divr8u::rem#5 divr8u::rem#10 divr8u::rem#4 rem8u#48 rem8u#127 rem8u#25 divr8u::rem#11 divr8u::rem#6 divr8u::rem#0 divr8u::rem#1 divr8u::rem#2 ]
+zp[1]:39 [ conio_cursor_x ]
+zp[1]:29 [ conio_cursor_y ]
+zp[2]:32 [ conio_line_text ]
+zp[2]:30 [ conio_line_color ]
+zp[1]:34 [ conio_textcolor ]
+zp[1]:107 [ l ]
+zp[1]:4 [ m ]
+zp[1]:24 [ chrout::petscii ]
+zp[2]:5 [ main::$29 utoa::value#3 utoa::value#7 utoa::value#10 utoa::value#2 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 cputs::s#10 cputs::s#11 cputs::s#0 ]
+zp[2]:22 [ duck#0 duck#1 ]
+zp[2]:13 [ main::$61 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 utoa::buffer#10 utoa::buffer#15 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ]
+zp[2]:11 [ main::$66 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
+zp[2]:25 [ main::$69 ]
+zp[2]:27 [ main::$72 ]
+zp[2]:105 [ main::$150 ]
+zp[2]:87 [ main::$151 main::$152 ]
+zp[2]:89 [ main::$153 main::$154 ]
+zp[2]:91 [ main::$155 main::$156 ]
+zp[1]:104 [ j#19 ]
+zp[1]:16 [ main::$78 memset::c#4 memset::c#1 divr8u::quotient#3 divr8u::return#0 divr8u::quotient#1 divr8u::quotient#2 divr8u::return#2 divr8u::return#3 div16u8u::quotient_lo#0 utoa::started#2 utoa::started#4 ]
+zp[1]:7 [ main::$81 divr8u::i#2 divr8u::i#1 utoa_append::digit#2 utoa_append::digit#1 ]
+zp[1]:3 [ main::$84 divr8u::dividend#3 divr8u::dividend#5 divr8u::dividend#1 divr8u::dividend#2 divr8u::dividend#0 utoa::digit#2 utoa::digit#1 wait::n#6 random::k#4 random::k#0 ]
+zp[1]:54 [ main::$88 ]
+zp[1]:55 [ main::$92 ]
+zp[2]:46 [ main::$96 main::$180 main::$97 ]
+zp[2]:56 [ main::$179 ]
+zp[2]:93 [ main::$104 ]
+zp[2]:95 [ main::$107 ]
+zp[2]:97 [ main::$110 ]
+zp[2]:77 [ main::$125 ]
+zp[2]:58 [ main::$127 main::$128 ]
+zp[2]:60 [ main::$130 main::$131 ]
+zp[2]:62 [ main::$133 main::$134 ]
+zp[2]:79 [ main::$136 ]
+zp[2]:64 [ main::$138 main::$139 ]
+zp[2]:66 [ main::$141 main::$142 ]
+zp[2]:68 [ main::$144 main::$145 ]
+zp[2]:74 [ main::$119 main::$124 ]
+zp[2]:81 [ main::$120 ]
+zp[2]:83 [ main::$122 ]
+zp[2]:100 [ main::$57 ]
+zp[2]:102 [ main::$35 ]
+zp[2]:112 [ main::$3 ]
+zp[2]:44 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
+zp[2]:70 [ gotoxy::$8 ]
+zp[2]:72 [ gotoxy::$5 ]
+zp[2]:35 [ read_chrono::$0 div16u8u::dividend#0 clear_screen::$4 ]
+zp[1]:2 [ div16u8u::quotient_hi#0 utoa::$11 random::$3 cputs::c#1 cputc::c#0 ]
+zp[1]:17 [ divr8u::$1 utoa::$10 ]
+zp[2]:9 [ memcpy::src_end#0 read_chrono::$5 utoa::digit_value#0 utoa_append::sub#0 clear_screen::$5 ]
+zp[2]:18 [ memset::end#0 div16u8u::return#0 ]
+
+
+FINAL ASSEMBLER
+Score: 2147483647
+
+ // File Comments
+/// @file
+/// Functions for performing input and output.
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="ducks-total.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(__start)
+ // Global Constants & labels
+ .const LIGHT_BLUE = $e
+ .const down = $11
+ .const right = $1d
+ .const lock = 8
+ .const lower = $e
+ .const home = $13
+ .const reverse_on = $12
+ .const brick = $e6
+ .const green = $1e
+ .const yellow = $9e
+ .const red = $1c
+ .const c = $7800
+ /// Color Ram
+ .label COLORRAM = $d800
+ /// Default address of screen character matrix
+ .label DEFAULT_SCREEN = $400
+ // The number of bytes on the screen
+ // The current cursor x-position
+ .label conio_cursor_x = $27
+ // The current cursor y-position
+ .label conio_cursor_y = $1d
+ // The current text cursor line start
+ .label conio_line_text = $20
+ // The current color cursor line start
+ .label conio_line_color = $1e
+ // The current text color
+ .label conio_textcolor = $22
+ .label l = $6b
+ .label m = 4
+ .label z = $25
+ .label z_1 = $14
+ .label n = $33
+ .label k = $63
+ .label j = $32
+ .label j_1 = $55
+ .label j_2 = $56
+ .label duck = $16
+ // [0..255] 8-bit
+ .label tu = $6e
+ // Volume to max
+ .label score = $2a
+ .label y = $28
+ .label time = $30
+ .label j_3 = $68
+ // Remainder after signed 8 bit division
+ .label rem8u = $f
+ .label peephole = $34
+ .label y_1 = $34
+ .label hiscore = $2a
+ .label hiscore_1 = $6c
+.segment Code
+ // __start
+__start: {
+ // __start::__init1
+ // __ma char conio_cursor_x = 0
+ // [1] conio_cursor_x = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z conio_cursor_x
+ // __ma char conio_cursor_y = 0
+ // [2] conio_cursor_y = 0 -- vbuz1=vbuc1
+ sta.z conio_cursor_y
+ // __ma char *conio_line_text = CONIO_SCREEN_TEXT
+ // [3] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1
+ lda #DEFAULT_SCREEN
+ sta.z conio_line_text+1
+ // __ma char *conio_line_color = CONIO_SCREEN_COLORS
+ // [4] conio_line_color = COLORRAM -- pbuz1=pbuc1
+ lda #COLORRAM
+ sta.z conio_line_color+1
+ // __ma char conio_textcolor = CONIO_TEXTCOLOR_DEFAULT
+ // [5] conio_textcolor = LIGHT_BLUE -- vbuz1=vbuc1
+ lda #LIGHT_BLUE
+ sta.z conio_textcolor
+ // j,k,l,m
+ // [6] l = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z l
+ // j,k,l,m,n=0
+ // [7] m = 0 -- vbuz1=vbuc1
+ sta.z m
+ // #pragma constructor_for(conio_c64_init, cputc, clrscr, cscroll)
+ // [8] call conio_c64_init
+ jsr conio_c64_init
+ // [9] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
+ // __start::@1
+ // [10] call main
+ jsr main
+ // __start::@return
+ // [11] return
+ rts
+}
+ // conio_c64_init
+// Set initial cursor position
+conio_c64_init: {
+ // Position cursor at current line
+ .label BASIC_CURSOR_LINE = $d6
+ .label line = $4c
+ // char line = *BASIC_CURSOR_LINE
+ // [12] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuz1=_deref_pbuc1
+ lda.z BASIC_CURSOR_LINE
+ sta.z line
+ // if(line>=CONIO_HEIGHT)
+ // [13] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuz1_lt_vbuc1_then_la1
+ cmp #$19
+ bcc __b1
+ // [15] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
+ // [15] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuz1=vbuc1
+ lda #$19-1
+ sta.z line
+ // [14] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
+ // conio_c64_init::@2
+ // [15] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
+ // [15] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy
+ // conio_c64_init::@1
+ __b1:
+ // gotoxy(0, line)
+ // [16] gotoxy::y#2 = conio_c64_init::line#2
+ // [17] call gotoxy
+ // [304] phi from conio_c64_init::@1 to gotoxy [phi:conio_c64_init::@1->gotoxy]
+ // [304] phi gotoxy::y#4 = gotoxy::y#2 [phi:conio_c64_init::@1->gotoxy#0] -- register_copy
+ jsr gotoxy
+ // conio_c64_init::@return
+ // }
+ // [18] return
+ rts
+}
+ // main
+main: {
+ .label __3 = $70
+ .label __26 = 8
+ .label __29 = 5
+ .label __35 = $66
+ .label __57 = $64
+ .label __61 = $d
+ .label __66 = $b
+ .label __69 = $19
+ .label __72 = $1b
+ .label __78 = $10
+ .label __81 = 7
+ .label __84 = 3
+ .label __88 = $36
+ .label __92 = $37
+ .label __96 = $2e
+ .label __97 = $2e
+ .label __104 = $5d
+ .label __107 = $5f
+ .label __110 = $61
+ .label __119 = $4a
+ .label __120 = $51
+ .label __122 = $53
+ .label __124 = $4a
+ .label __125 = $4d
+ .label __127 = $3a
+ .label __128 = $3a
+ .label __130 = $3c
+ .label __131 = $3c
+ .label __133 = $3e
+ .label __134 = $3e
+ .label __136 = $4f
+ .label __138 = $40
+ .label __139 = $40
+ .label __141 = $42
+ .label __142 = $42
+ .label __144 = $44
+ .label __145 = $44
+ .label __150 = $69
+ .label __151 = $57
+ .label __152 = $57
+ .label __153 = $59
+ .label __154 = $59
+ .label __155 = $5b
+ .label __156 = $5b
+ .label __177 = 8
+ .label __179 = $38
+ .label __180 = $2e
+ // POKE
+ // [19] *((char *) 36879) = 8 -- _deref_pbuc1=vbuc2
+ lda #8
+ sta $900f
+ // chrout(lock)
+ // [20] chrout::petscii = lock -- vbuz1=vbuc1
+ lda #lock
+ sta.z chrout.petscii
+ // [21] call chrout
+ // border and black paper
+ jsr chrout
+ // main::@50
+ // chrout(lower)
+ // [22] chrout::petscii = lower -- vbuz1=vbuc1
+ lda #lower
+ sta.z chrout.petscii
+ // [23] call chrout
+ //Lock UpperCase to Lowercase key
+ jsr chrout
+ // main::@51
+ // m=0
+ // [24] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ //Put text in Lowercase set
+ // main::@1
+ __b1:
+ // for (m=0; m<40; m++)
+ // [25] if(m<$28) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #$28
+ bcs !__b2+
+ jmp __b2
+ !__b2:
+ // [26] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
+ // [26] phi n#109 = 0 [phi:main::@1->main::@3#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z n
+ // [26] phi hiscore#110 = 0 [phi:main::@1->main::@3#1] -- vwuz1=vwuc1
+ sta.z hiscore_1
+ sta.z hiscore_1+1
+ // [26] phi y#114 = 0 [phi:main::@1->main::@3#2] -- vwuz1=vwuc1
+ sta.z y
+ sta.z y+1
+ // [26] phi rem8u#127 = 0 [phi:main::@1->main::@3#3] -- vbuz1=vbuc1
+ sta.z rem8u
+ // Load udgs. From 0-->39;
+ // main::@3
+ __b3:
+ // clear_screen(32,0)
+ // [27] call clear_screen
+ // [321] phi from main::@3 to clear_screen [phi:main::@3->clear_screen]
+ // [321] phi clear_screen::n#5 = $20 [phi:main::@3->clear_screen#0] -- vbuz1=vbuc1
+ lda #$20
+ sta.z clear_screen.n
+ jsr clear_screen
+ // [28] phi from main::@3 to main::@52 [phi:main::@3->main::@52]
+ // main::@52
+ // textcolor(7)
+ // [29] call textcolor
+ // Clear Screen with spaces & black ink
+ // [334] phi from main::@52 to textcolor [phi:main::@52->textcolor]
+ // [334] phi textcolor::color#7 = 7 [phi:main::@52->textcolor#0] -- vbuz1=vbuc1
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // [30] phi from main::@52 to main::@53 [phi:main::@52->main::@53]
+ // main::@53
+ // cputs(intro)
+ // [31] call cputs
+ // [337] phi from main::@53 to cputs [phi:main::@53->cputs]
+ // [337] phi cputs::s#11 = intro [phi:main::@53->cputs#0] -- pbuz1=pbuc1
+ lda #intro
+ sta.z cputs.s+1
+ jsr cputs
+ // [32] phi from main::@53 to main::@54 [phi:main::@53->main::@54]
+ // main::@54
+ // textcolor(1)
+ // [33] call textcolor
+ // Yellow ink
+ // [334] phi from main::@54 to textcolor [phi:main::@54->textcolor]
+ // [334] phi textcolor::color#7 = 1 [phi:main::@54->textcolor#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // [34] phi from main::@54 to main::@55 [phi:main::@54->main::@55]
+ // main::@55
+ // cputs(levels)
+ // [35] call cputs
+ // [337] phi from main::@55 to cputs [phi:main::@55->cputs]
+ // [337] phi cputs::s#11 = levels [phi:main::@55->cputs#0] -- pbuz1=pbuc1
+ lda #levels
+ sta.z cputs.s+1
+ jsr cputs
+ // [36] phi from main::@55 to main::@56 [phi:main::@55->main::@56]
+ // main::@56
+ // textcolor(2)
+ // [37] call textcolor
+ // White
+ // [334] phi from main::@56 to textcolor [phi:main::@56->textcolor]
+ // [334] phi textcolor::color#7 = 2 [phi:main::@56->textcolor#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // [38] phi from main::@56 to main::@57 [phi:main::@56->main::@57]
+ // main::@57
+ // cputs(foot)
+ // [39] call cputs
+ // [337] phi from main::@57 to cputs [phi:main::@57->cputs]
+ // [337] phi cputs::s#11 = foot [phi:main::@57->cputs#0] -- pbuz1=pbuc1
+ lda #foot
+ sta.z cputs.s+1
+ jsr cputs
+ // Red
+ // main::@4
+ __b4:
+ // l=PEEK
+ // [40] l = *((char *) 197) -- vbuz1=_deref_pbuc1
+ lda.z $c5
+ sta.z l
+ // ++l;
+ // [41] l = ++ l -- vbuz1=_inc_vbuz1
+ inc.z l
+ // while (l>5)
+ // [42] if(l>=5+1) goto main::@4 -- vbuz1_ge_vbuc1_then_la1
+ lda.z l
+ cmp #5+1
+ bcs __b4
+ // [43] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
+ // main::@5
+ // clear_screen(4,0)
+ // [44] call clear_screen
+ // wait for 1-3-5-7-9 keys only
+ // [321] phi from main::@5 to clear_screen [phi:main::@5->clear_screen]
+ // [321] phi clear_screen::n#5 = 4 [phi:main::@5->clear_screen#0] -- vbuz1=vbuc1
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ // main::@58
+ // POKE
+ // [45] *((char *) 36869) = $ff -- _deref_pbuc1=vbuc2
+ lda #$ff
+ sta $9005
+ // chrout(reverse_on)
+ // [46] chrout::petscii = reverse_on -- vbuz1=vbuc1
+ lda #reverse_on
+ sta.z chrout.petscii
+ // [47] call chrout
+ // Graphic mode
+ jsr chrout
+ // main::@59
+ // chrout(red)
+ // [48] chrout::petscii = red -- vbuz1=vbuc1
+ lda #red
+ sta.z chrout.petscii
+ // [49] call chrout
+ jsr chrout
+ // main::@60
+ // chrout(down)
+ // [50] chrout::petscii = down -- vbuz1=vbuc1
+ lda #down
+ sta.z chrout.petscii
+ // [51] call chrout
+ jsr chrout
+ // [52] phi from main::@60 to main::@6 [phi:main::@60->main::@6]
+ // [52] phi n#89 = n#109 [phi:main::@60->main::@6#0] -- register_copy
+ // [52] phi k#101 = 1 [phi:main::@60->main::@6#1] -- vbuz1=vbuc1
+ lda #1
+ sta.z k
+ //for (z=1;z<23;z++) { POKE(7680+z*22,230);POKE(c+7680+z*22,2); POKE(7679+z*22,230); POKE(c+7679+z*22,2); } // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ //k=1; do { chrout(brick); POKE(211,20); chrout(brick); ++k; } while (k<23);
+ //for (k=1;k<22;k++) { chrout(brick); POKE(211,22); chrout(brick); }; // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ // main::@6
+ __b6:
+ // for (k=1;k<22;k++)
+ // [53] if(k#101<$16) goto main::@7 -- vbuz1_lt_vbuc1_then_la1
+ lda.z k
+ cmp #$16
+ bcs !__b7+
+ jmp __b7
+ !__b7:
+ // main::@8
+ // chrout(brick)
+ // [54] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [55] call chrout
+ // 23 rows * 22 columns (7680 to 8185). 506 positions.
+ jsr chrout
+ // main::@61
+ // POKE
+ // [56] *((char *) 8185) = brick -- _deref_pbuc1=vbuc2
+ lda #brick
+ sta $1ff9
+ // [57] *((char *)$1ff9+c) = 2 -- _deref_pbuc1=vbuc2
+ lda #2
+ sta $1ff9+c
+ // chrout(home)
+ // [58] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [59] call chrout
+ //last brick from last line (#23) to avoid scrolling
+ jsr chrout
+ // main::@62
+ // if (l>1)
+ // [60] if(l<1+1) goto main::@12 -- vbuz1_lt_vbuc1_then_la1
+ lda.z l
+ cmp #1+1
+ bcc __b8
+ // [61] phi from main::@62 to main::@13 [phi:main::@62->main::@13]
+ // [61] phi z#28 = 1 [phi:main::@62->main::@13#0] -- vwuz1=vbuc1
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ // [61] phi from main::@73 to main::@13 [phi:main::@73->main::@13]
+ // [61] phi z#28 = z#9 [phi:main::@73->main::@13#0] -- register_copy
+ // main::@13
+ __b13:
+ // random((7-l),26-(3*l))
+ // [62] random::k#0 = 7 - l -- vbuz1=vbuc1_minus_vbuz2
+ lda #7
+ sec
+ sbc.z l
+ sta.z random.k
+ // 3*l
+ // [63] main::$177 = l << 1 -- vbuz1=vbuz2_rol_1
+ lda.z l
+ asl
+ sta.z __177
+ // [64] main::$26 = main::$177 + l -- vbuz1=vbuz1_plus_vbuz2
+ lda.z __26
+ clc
+ adc.z l
+ sta.z __26
+ // random((7-l),26-(3*l))
+ // [65] random::n#0 = $1a - main::$26 -- vbuz1=vbuc1_minus_vbuz1
+ lda #$1a
+ sec
+ sbc.z random.n
+ sta.z random.n
+ // [66] call random
+ // Write differential random bricks depending on 'l' level choosen
+ // [345] phi from main::@13 to random [phi:main::@13->random]
+ // [345] phi random::n#4 = random::n#0 [phi:main::@13->random#0] -- register_copy
+ // [345] phi random::k#4 = random::k#0 [phi:main::@13->random#1] -- register_copy
+ jsr random
+ // main::@71
+ // z+m
+ // [67] main::$29 = z#28 + m -- vwuz1=vwuz2_plus_vbuz3
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __29
+ lda #0
+ adc.z z_1+1
+ sta.z __29+1
+ // if (z+m>505)
+ // [68] if(main::$29<=$1f9) goto main::@14 -- vwuz1_le_vwuc1_then_la1
+ cmp #>$1f9
+ bne !+
+ lda.z __29
+ cmp #<$1f9
+ !:
+ bcs !__b24+
+ jmp __b24
+ !__b24:
+ bne !__b24+
+ jmp __b24
+ !__b24:
+ // [69] phi from main::@71 main::@73 to main::@12 [phi:main::@71/main::@73->main::@12]
+ // [69] phi z#128 = z#28 [phi:main::@71/main::@73->main::@12#0] -- register_copy
+ jmp __b12
+ // [69] phi from main::@62 to main::@12 [phi:main::@62->main::@12]
+ __b8:
+ // [69] phi z#128 = 1 [phi:main::@62->main::@12#0] -- vwuz1=vbuc1
+ lda #<1
+ sta.z z_1
+ lda #>1
+ sta.z z_1+1
+ // main::@12
+ __b12:
+ // POKE
+ // [70] *((char *) 36878) = $f -- _deref_pbuc1=vbuc2
+ lda #$f
+ sta $900e
+ // chrout(home)
+ // [71] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [72] call chrout
+ // Duck #1
+ jsr chrout
+ // main::@65
+ // chrout(yellow)
+ // [73] chrout::petscii = yellow -- vbuz1=vbuc1
+ lda #yellow
+ sta.z chrout.petscii
+ // [74] call chrout
+ jsr chrout
+ // main::@66
+ // chrout(80)
+ // [75] chrout::petscii = $50 -- vbuz1=vbuc1
+ lda #$50
+ sta.z chrout.petscii
+ // [76] call chrout
+ jsr chrout
+ // main::@67
+ // chrout(84)
+ // [77] chrout::petscii = $54 -- vbuz1=vbuc1
+ lda #$54
+ sta.z chrout.petscii
+ // [78] call chrout
+ jsr chrout
+ // main::@68
+ // chrout(83)
+ // [79] chrout::petscii = $53 -- vbuz1=vbuc1
+ lda #$53
+ sta.z chrout.petscii
+ // [80] call chrout
+ jsr chrout
+ // main::@69
+ // chrout(58)
+ // [81] chrout::petscii = $3a -- vbuz1=vbuc1
+ lda #$3a
+ sta.z chrout.petscii
+ // [82] call chrout
+ jsr chrout
+ // main::@70
+ // POKE
+ // [83] *((char *) 211) = $12 -- _deref_pbuc1=vbuc2
+ lda #$12
+ sta.z $d3
+ // [84] phi from main::@70 to main::@17 [phi:main::@70->main::@17]
+ // [84] phi j#13 = 0 [phi:main::@70->main::@17#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z j_1
+ // jump to Column 18
+ // main::@17
+ __b17:
+ // for (j=0; j<4; ++j)
+ // [85] if(j#13<4) goto main::@18 -- vbuz1_lt_vbuc1_then_la1
+ lda.z j_1
+ cmp #4
+ bcs !__b18+
+ jmp __b18
+ !__b18:
+ // [86] phi from main::@17 to main::@19 [phi:main::@17->main::@19]
+ // main::@19
+ // write_score()
+ // [87] call write_score
+ // Write 'TM:9', yellow
+ // [351] phi from main::@19 to write_score [phi:main::@19->write_score]
+ // [351] phi score#13 = 0 [phi:main::@19->write_score#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z score
+ sta.z score+1
+ jsr write_score
+ // main::@75
+ // chrout(home)
+ // [88] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [89] call chrout
+ // Write Score (yellow)
+ jsr chrout
+ // main::@76
+ // chrout(green)
+ // [90] chrout::petscii = green -- vbuz1=vbuc1
+ lda #green
+ sta.z chrout.petscii
+ // [91] call chrout
+ jsr chrout
+ // main::@77
+ // POKE
+ // [92] *((char *) 211) = $a -- _deref_pbuc1=vbuc2
+ lda #$a
+ sta.z $d3
+ // [93] phi from main::@77 to main::@20 [phi:main::@77->main::@20]
+ // [93] phi j#16 = 0 [phi:main::@77->main::@20#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z j_2
+ // Jump to column 10
+ // main::@20
+ __b20:
+ // for (j=0; j<5; j++)
+ // [94] if(j#16<5) goto main::@21 -- vbuz1_lt_vbuc1_then_la1
+ lda.z j_2
+ cmp #5
+ bcs !__b21+
+ jmp __b21
+ !__b21:
+ // [95] phi from main::@20 to main::@22 [phi:main::@20->main::@22]
+ // [95] phi n#52 = n#89 [phi:main::@20->main::@22#0] -- register_copy
+ // [95] phi peephole#52 = $1f1f [phi:main::@20->main::@22#1] -- vwuz1=vwuc1
+ lda #<$1f1f
+ sta.z peephole
+ lda #>$1f1f
+ sta.z peephole+1
+ // [95] phi z#102 = z#128 [phi:main::@20->main::@22#2] -- register_copy
+ // [95] phi y#49 = y#114 [phi:main::@20->main::@22#3] -- register_copy
+ // [95] phi rem8u#48 = rem8u#127 [phi:main::@20->main::@22#4] -- register_copy
+ // [95] phi tu#13 = 1 [phi:main::@20->main::@22#5] -- vwuz1=vbuc1
+ lda #<1
+ sta.z tu
+ lda #>1
+ sta.z tu+1
+ // Write 'DUCK', green
+ // [95] phi from main::@87 to main::@22 [phi:main::@87->main::@22]
+ // [95] phi n#52 = n#20 [phi:main::@87->main::@22#0] -- register_copy
+ // [95] phi peephole#52 = peephole#12 [phi:main::@87->main::@22#1] -- register_copy
+ // [95] phi z#102 = z#25 [phi:main::@87->main::@22#2] -- register_copy
+ // [95] phi y#49 = y#18 [phi:main::@87->main::@22#3] -- register_copy
+ // [95] phi rem8u#48 = rem8u#25 [phi:main::@87->main::@22#4] -- register_copy
+ // [95] phi tu#13 = tu#1 [phi:main::@87->main::@22#5] -- register_copy
+ // main::@22
+ __b22:
+ // chrout(home)
+ // [96] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [97] call chrout
+ jsr chrout
+ // main::@79
+ // chrout(green)
+ // [98] chrout::petscii = green -- vbuz1=vbuc1
+ lda #green
+ sta.z chrout.petscii
+ // [99] call chrout
+ jsr chrout
+ // main::@80
+ // chrout(reverse_on)
+ // [100] chrout::petscii = reverse_on -- vbuz1=vbuc1
+ lda #reverse_on
+ sta.z chrout.petscii
+ // [101] call chrout
+ jsr chrout
+ // main::@81
+ // POKE
+ // [102] *((char *) 211) = $f -- _deref_pbuc1=vbuc2
+ lda #$f
+ sta.z $d3
+ // if (tu<10)
+ // [103] if(tu#13<$a) goto main::@23 -- vwuz1_lt_vbuc1_then_la1
+ // Jump to column 15
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$a
+ bcs !__b23+
+ jmp __b23
+ !__b23:
+ !:
+ // main::@45
+ // chrout(49)
+ // [104] chrout::petscii = $31 -- vbuz1=vbuc1
+ lda #$31
+ sta.z chrout.petscii
+ // [105] call chrout
+ jsr chrout
+ // main::@82
+ // chrout(48)
+ // [106] chrout::petscii = $30 -- vbuz1=vbuc1
+ lda #$30
+ sta.z chrout.petscii
+ // [107] call chrout
+ jsr chrout
+ // [108] phi from main::@103 main::@104 main::@105 main::@106 main::@23 main::@82 main::@84 to main::@24 [phi:main::@103/main::@104/main::@105/main::@106/main::@23/main::@82/main::@84->main::@24]
+ __b11:
+ // Write duck number
+ // main::@24
+ // random(0,255)
+ // [109] call random
+ // [345] phi from main::@24 to random [phi:main::@24->random]
+ // [345] phi random::n#4 = $ff [phi:main::@24->random#0] -- vbuz1=vbuc1
+ lda #$ff
+ sta.z random.n
+ // [345] phi random::k#4 = 0 [phi:main::@24->random#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z random.k
+ jsr random
+ // main::@83
+ // duck=m
+ // [110] duck#0 = m -- vwuz1=vbuz2
+ lda.z m
+ sta.z duck
+ lda #0
+ sta.z duck+1
+ // random(0,255)
+ // [111] call random
+ // [345] phi from main::@83 to random [phi:main::@83->random]
+ // [345] phi random::n#4 = $ff [phi:main::@83->random#0] -- vbuz1=vbuc1
+ lda #$ff
+ sta.z random.n
+ // [345] phi random::k#4 = 0 [phi:main::@83->random#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z random.k
+ jsr random
+ // main::@84
+ // m+7701
+ // [112] main::$61 = m + $1e15 -- vwuz1=vbuz2_plus_vwuc1
+ lda.z m
+ clc
+ adc #<$1e15
+ sta.z __61
+ lda #>$1e15
+ adc #0
+ sta.z __61+1
+ // duck=m+7701+duck
+ // [113] duck#1 = main::$61 + duck#0 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z duck
+ adc.z __61
+ sta.z duck
+ lda.z duck+1
+ adc.z __61+1
+ sta.z duck+1
+ // PEEK
+ // [114] main::$66 = duck#1 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z duck
+ adc #1
+ sta.z __66
+ lda.z duck+1
+ adc #0
+ sta.z __66+1
+ // [115] main::$69 = duck#1 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __69
+ lda #0
+ adc.z duck+1
+ sta.z __69+1
+ // [116] main::$72 = duck#1 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __72
+ lda #0
+ adc.z duck+1
+ sta.z __72+1
+ // while ((duck>8163) || PEEK(duck)==brick || PEEK(duck+1)==brick || PEEK(duck+22)==brick || PEEK(duck+23)==brick)
+ // [117] if(duck#1>$1fe3) goto main::@24 -- vwuz1_gt_vwuc1_then_la1
+ lda #>$1fe3
+ cmp.z duck+1
+ bcc __b11
+ bne !+
+ lda #<$1fe3
+ cmp.z duck
+ bcc __b11
+ !:
+ // main::@106
+ // [118] if(*((char *)duck#1)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (duck),y
+ beq __b11
+ // main::@105
+ // [119] if(*((char *)main::$66)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ cmp (__66),y
+ beq __b11
+ // main::@104
+ // [120] if(*((char *)main::$69)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ cmp (__69),y
+ beq __b11
+ // main::@103
+ // [121] if(*((char *)main::$72)==brick) goto main::@24 -- _deref_pbuz1_eq_vbuc1_then_la1
+ cmp (__72),y
+ bne !__b11+
+ jmp __b11
+ !__b11:
+ // [122] phi from main::@103 to main::@25 [phi:main::@103->main::@25]
+ // main::@25
+ // chrono_restart()
+ // [123] call chrono_restart
+ jsr chrono_restart
+ // [124] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
+ // [124] phi n#20 = n#52 [phi:main::@25->main::@26#0] -- register_copy
+ // [124] phi peephole#12 = peephole#52 [phi:main::@25->main::@26#1] -- register_copy
+ // [124] phi z#100 = z#102 [phi:main::@25->main::@26#2] -- register_copy
+ // [124] phi y#18 = y#49 [phi:main::@25->main::@26#3] -- register_copy
+ // [124] phi rem8u#25 = rem8u#48 [phi:main::@25->main::@26#4] -- register_copy
+ // [124] phi score#19 = score#38 [phi:main::@25->main::@26#5] -- register_copy
+ // [124] phi time#11 = 0 [phi:main::@25->main::@26#6] -- vwuz1=vbuc1
+ lda #<0
+ sta.z time
+ sta.z time+1
+ // main::@26
+ __b26:
+ // while (time<10)
+ // [125] if(time#11<$a) goto main::@27 -- vwuz1_lt_vbuc1_then_la1
+ lda.z time+1
+ bne !+
+ lda.z time
+ cmp #$a
+ bcs !__b27+
+ jmp __b27
+ !__b27:
+ !:
+ // main::@28
+ // tu++;
+ // [126] tu#1 = ++ tu#13 -- vwuz1=_inc_vwuz1
+ inc.z tu
+ bne !+
+ inc.z tu+1
+ !:
+ // score=score-10
+ // [127] score#4 = score#19 - $a -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // write_score()
+ // [128] call write_score
+ // [351] phi from main::@28 to write_score [phi:main::@28->write_score]
+ // [351] phi score#13 = score#4 [phi:main::@28->write_score#0] -- register_copy
+ jsr write_score
+ // main::@86
+ // POKE
+ // [129] *((char *) 36877) = $82 -- _deref_pbuc1=vbuc2
+ lda #$82
+ sta $900d
+ // wait(20)
+ // [130] call wait
+ // [381] phi from main::@86 to wait [phi:main::@86->wait]
+ // [381] phi z#53 = z#100 [phi:main::@86->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $14 [phi:main::@86->wait#1] -- vbuz1=vbuc1
+ lda #$14
+ sta.z wait.n
+ jsr wait
+ // main::@87
+ // POKE
+ // [131] *((char *) 36877) = 0 -- _deref_pbuc1=vbuc2
+ lda #0
+ sta $900d
+ // [132] main::$150 = duck#1 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z duck
+ clc
+ adc #c
+ sta.z __150+1
+ // [133] *((char *)main::$150) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ tay
+ sta (__150),y
+ // [134] main::$151 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __151
+ lda.z duck+1
+ sta.z __151+1
+ // [135] main::$152 = main::$151 + 1+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __152
+ clc
+ adc #<1+c
+ sta.z __152
+ lda.z __152+1
+ adc #>1+c
+ sta.z __152+1
+ // [136] *((char *)main::$152) = 0 -- _deref_pbuz1=vbuc1
+ tya
+ sta (__152),y
+ // [137] main::$153 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __153
+ lda.z duck+1
+ sta.z __153+1
+ // [138] main::$154 = main::$153 + $16+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __154
+ clc
+ adc #<$16+c
+ sta.z __154
+ lda.z __154+1
+ adc #>$16+c
+ sta.z __154+1
+ // [139] *((char *)main::$154) = 0 -- _deref_pbuz1=vbuc1
+ tya
+ sta (__154),y
+ // [140] main::$155 = duck#1 -- vwuz1=vwuz2
+ lda.z duck
+ sta.z __155
+ lda.z duck+1
+ sta.z __155+1
+ // [141] main::$156 = main::$155 + $17+c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __156
+ clc
+ adc #<$17+c
+ sta.z __156
+ lda.z __156+1
+ adc #>$17+c
+ sta.z __156+1
+ // [142] *((char *)main::$156) = 0 -- _deref_pbuz1=vbuc1
+ tya
+ sta (__156),y
+ // while (tu<11)
+ // [143] if(tu#1<$b) goto main::@22 -- vwuz1_lt_vbuc1_then_la1
+ lda.z tu+1
+ bne !+
+ lda.z tu
+ cmp #$b
+ bcs !__b22+
+ jmp __b22
+ !__b22:
+ !:
+ // [144] phi from main::@87 to main::@44 [phi:main::@87->main::@44]
+ // main::@44
+ // clear_screen(4,0)
+ // [145] call clear_screen
+ // 10 ducks
+ // [321] phi from main::@44 to clear_screen [phi:main::@44->clear_screen]
+ // [321] phi clear_screen::n#5 = 4 [phi:main::@44->clear_screen#0] -- vbuz1=vbuc1
+ lda #4
+ sta.z clear_screen.n
+ jsr clear_screen
+ // main::@91
+ // POKE
+ // [146] *((char *) 36869) = $f0 -- _deref_pbuc1=vbuc2
+ lda #$f0
+ sta $9005
+ // chrout(lower)
+ // [147] chrout::petscii = lower -- vbuz1=vbuc1
+ lda #lower
+ sta.z chrout.petscii
+ // [148] call chrout
+ jsr chrout
+ // [149] phi from main::@91 to main::@92 [phi:main::@91->main::@92]
+ // main::@92
+ // textcolor(7)
+ // [150] call textcolor
+ // Return to text mode, lowcase
+ // [334] phi from main::@92 to textcolor [phi:main::@92->textcolor]
+ // [334] phi textcolor::color#7 = 7 [phi:main::@92->textcolor#0] -- vbuz1=vbuc1
+ lda #7
+ sta.z textcolor.color
+ jsr textcolor
+ // [151] phi from main::@92 to main::@93 [phi:main::@92->main::@93]
+ // main::@93
+ // cputs(game_over)
+ // [152] call cputs
+ // [337] phi from main::@93 to cputs [phi:main::@93->cputs]
+ // [337] phi cputs::s#11 = game_over [phi:main::@93->cputs#0] -- pbuz1=pbuc1
+ lda #game_over
+ sta.z cputs.s+1
+ jsr cputs
+ // [153] phi from main::@93 to main::@94 [phi:main::@93->main::@94]
+ // main::@94
+ // textcolor(2)
+ // [154] call textcolor
+ // Yellow
+ // [334] phi from main::@94 to textcolor [phi:main::@94->textcolor]
+ // [334] phi textcolor::color#7 = 2 [phi:main::@94->textcolor#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z textcolor.color
+ jsr textcolor
+ // [155] phi from main::@94 to main::@95 [phi:main::@94->main::@95]
+ // main::@95
+ // cputs(your_score)
+ // [156] call cputs
+ // [337] phi from main::@95 to cputs [phi:main::@95->cputs]
+ // [337] phi cputs::s#11 = your_score [phi:main::@95->cputs#0] -- pbuz1=pbuc1
+ lda #your_score
+ sta.z cputs.s+1
+ jsr cputs
+ // [157] phi from main::@95 to main::@96 [phi:main::@95->main::@96]
+ // main::@96
+ // cputs(buffer)
+ // [158] call cputs
+ // [337] phi from main::@96 to cputs [phi:main::@96->cputs]
+ // [337] phi cputs::s#11 = buffer [phi:main::@96->cputs#0] -- pbuz1=pbuc1
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // [159] phi from main::@96 to main::@97 [phi:main::@96->main::@97]
+ // main::@97
+ // textcolor(3)
+ // [160] call textcolor
+ // Red
+ // [334] phi from main::@97 to textcolor [phi:main::@97->textcolor]
+ // [334] phi textcolor::color#7 = 3 [phi:main::@97->textcolor#0] -- vbuz1=vbuc1
+ lda #3
+ sta.z textcolor.color
+ jsr textcolor
+ // [161] phi from main::@97 to main::@98 [phi:main::@97->main::@98]
+ // main::@98
+ // cputs(high_score)
+ // [162] call cputs
+ // [337] phi from main::@98 to cputs [phi:main::@98->cputs]
+ // [337] phi cputs::s#11 = high_score [phi:main::@98->cputs#0] -- pbuz1=pbuc1
+ lda #high_score
+ sta.z cputs.s+1
+ jsr cputs
+ // main::@99
+ // if (score>hiscore)
+ // [163] if(score#38<=hiscore#110) goto main::@114 -- vwuz1_le_vwuz2_then_la1
+ lda.z score+1
+ cmp.z hiscore_1+1
+ bne !+
+ lda.z score
+ cmp.z hiscore_1
+ beq __b114
+ !:
+ bcc __b114
+ // [165] phi from main::@114 main::@99 to main::@46 [phi:main::@114/main::@99->main::@46]
+ // [165] phi hiscore#19 = hiscore#124 [phi:main::@114/main::@99->main::@46#0] -- register_copy
+ jmp __b46
+ // main::@114
+ __b114:
+ // [164] hiscore#124 = hiscore#110 -- vwuz1=vwuz2
+ lda.z hiscore_1
+ sta.z hiscore
+ lda.z hiscore_1+1
+ sta.z hiscore+1
+ // main::@46
+ __b46:
+ // utoa(hiscore,buffer,10)
+ // [166] utoa::value#2 = hiscore#19 -- vwuz1=vwuz2
+ lda.z hiscore
+ sta.z utoa.value
+ lda.z hiscore+1
+ sta.z utoa.value+1
+ // [167] call utoa
+ // [390] phi from main::@46 to utoa [phi:main::@46->utoa]
+ // [390] phi utoa::value#10 = utoa::value#2 [phi:main::@46->utoa#0] -- register_copy
+ jsr utoa
+ // [168] phi from main::@46 to main::@100 [phi:main::@46->main::@100]
+ // main::@100
+ // cputs(buffer)
+ // [169] call cputs
+ // [337] phi from main::@100 to cputs [phi:main::@100->cputs]
+ // [337] phi cputs::s#11 = buffer [phi:main::@100->cputs#0] -- pbuz1=pbuc1
+ lda #buffer
+ sta.z cputs.s+1
+ jsr cputs
+ // [170] phi from main::@100 to main::@101 [phi:main::@100->main::@101]
+ // main::@101
+ // textcolor(1)
+ // [171] call textcolor
+ // Cyan
+ // [334] phi from main::@101 to textcolor [phi:main::@101->textcolor]
+ // [334] phi textcolor::color#7 = 1 [phi:main::@101->textcolor#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z textcolor.color
+ jsr textcolor
+ // [172] phi from main::@101 to main::@102 [phi:main::@101->main::@102]
+ // main::@102
+ // cputs(play_again)
+ // [173] call cputs
+ // [337] phi from main::@102 to cputs [phi:main::@102->cputs]
+ // [337] phi cputs::s#11 = play_again [phi:main::@102->cputs#0] -- pbuz1=pbuc1
+ lda #play_again
+ sta.z cputs.s+1
+ jsr cputs
+ // white
+ // main::@47
+ __b47:
+ // j=PEEK
+ // [174] j#19 = *((char *) 197) -- vbuz1=_deref_pbuc1
+ lda.z $c5
+ sta.z j_3
+ // while (j!= 11 && j!=28 )
+ // [175] if(j#19==$b) goto main::@48 -- vbuz1_eq_vbuc1_then_la1
+ lda #$b
+ cmp.z j_3
+ beq __b48
+ // main::@112
+ // [176] if(j#19!=$1c) goto main::@47 -- vbuz1_neq_vbuc1_then_la1
+ lda #$1c
+ cmp.z j_3
+ bne __b47
+ // main::@48
+ __b48:
+ // while (j==11)
+ // [177] if(j#19==$b) goto main::@113 -- vbuz1_eq_vbuc1_then_la1
+ lda #$b
+ cmp.z j_3
+ beq __b113
+ // main::@49
+ // asm
+ // asm { jsr$FD22 }
+ // N pressed. Exit game
+ jsr $fd22
+ // main::@return
+ // }
+ // [179] return
+ rts
+ // main::@113
+ __b113:
+ // [180] hiscore#123 = hiscore#19 -- vwuz1=vwuz2
+ lda.z hiscore
+ sta.z hiscore_1
+ lda.z hiscore+1
+ sta.z hiscore_1+1
+ // [26] phi from main::@113 to main::@3 [phi:main::@113->main::@3]
+ // [26] phi n#109 = n#20 [phi:main::@113->main::@3#0] -- register_copy
+ // [26] phi hiscore#110 = hiscore#123 [phi:main::@113->main::@3#1] -- register_copy
+ // [26] phi y#114 = y#18 [phi:main::@113->main::@3#2] -- register_copy
+ // [26] phi rem8u#127 = rem8u#25 [phi:main::@113->main::@3#3] -- register_copy
+ jmp __b3
+ // [181] phi from main::@26 to main::@27 [phi:main::@26->main::@27]
+ // main::@27
+ __b27:
+ // read_chrono()
+ // [182] call read_chrono
+ jsr read_chrono
+ // main::@85
+ // m=PEEK
+ // [183] m = *((char *) 37151) -- vbuz1=_deref_pbuc1
+ // Joystick routine
+ lda $911f
+ sta.z m
+ // POKE
+ // [184] *((char *) 37154) = $7f -- _deref_pbuc1=vbuc2
+ lda #$7f
+ sta $9122
+ // n=PEEK
+ // [185] n#14 = *((char *) 37152) -- vbuz1=_deref_pbuc1
+ lda $9120
+ sta.z n
+ // POKE
+ // [186] *((char *) 37154) = $ff -- _deref_pbuc1=vbuc2
+ lda #$ff
+ sta $9122
+ // 16&m
+ // [187] main::$78 = $10 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #$10
+ and.z m
+ sta.z __78
+ // if ((16&m)==0)
+ // [188] if(main::$78!=0) goto main::@29 -- vbuz1_neq_0_then_la1
+ bne __b29
+ // main::@37
+ // y--;
+ // [189] y#0 = -- y#18 -- vwuz1=_dec_vwuz1
+ lda.z y
+ bne !+
+ dec.z y+1
+ !:
+ dec.z y
+ // [190] phi from main::@37 main::@85 to main::@29 [phi:main::@37/main::@85->main::@29]
+ // [190] phi y#10 = y#0 [phi:main::@37/main::@85->main::@29#0] -- register_copy
+ // main::@29
+ __b29:
+ // 128&n
+ // [191] main::$81 = $80 & n#14 -- vbuz1=vbuc1_band_vbuz2
+ lda #$80
+ and.z n
+ sta.z __81
+ // if ((128&n)==0)
+ // [192] if(main::$81!=0) goto main::@30 -- vbuz1_neq_0_then_la1
+ bne __b30
+ // main::@38
+ // y++;
+ // [193] y#1 = ++ y#10 -- vwuz1=_inc_vwuz1
+ inc.z y
+ bne !+
+ inc.z y+1
+ !:
+ // [194] phi from main::@29 main::@38 to main::@30 [phi:main::@29/main::@38->main::@30]
+ // [194] phi y#11 = y#10 [phi:main::@29/main::@38->main::@30#0] -- register_copy
+ // main::@30
+ __b30:
+ // 4&m
+ // [195] main::$84 = 4 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #4
+ and.z m
+ sta.z __84
+ // if ((4&m)==0)
+ // [196] if(main::$84!=0) goto main::@31 -- vbuz1_neq_0_then_la1
+ bne __b31
+ // main::@39
+ // y=y-22
+ // [197] y#2 = y#11 - $16 -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z y
+ sbc #$16
+ sta.z y
+ lda.z y+1
+ sbc #0
+ sta.z y+1
+ // [198] phi from main::@30 main::@39 to main::@31 [phi:main::@30/main::@39->main::@31]
+ // [198] phi y#12 = y#11 [phi:main::@30/main::@39->main::@31#0] -- register_copy
+ // main::@31
+ __b31:
+ // 8&m
+ // [199] main::$88 = 8 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #8
+ and.z m
+ sta.z __88
+ // if ((8&m)==0)
+ // [200] if(main::$88!=0) goto main::@32 -- vbuz1_neq_0_then_la1
+ bne __b32
+ // main::@40
+ // y=y+22
+ // [201] y#3 = y#12 + $16 -- vwuz1=vwuz1_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y
+ sta.z y
+ bcc !+
+ inc.z y+1
+ !:
+ // [202] phi from main::@31 main::@40 to main::@32 [phi:main::@31/main::@40->main::@32]
+ // [202] phi y#13 = y#12 [phi:main::@31/main::@40->main::@32#0] -- register_copy
+ // main::@32
+ __b32:
+ // 32&m
+ // [203] main::$92 = $20 & m -- vbuz1=vbuc1_band_vbuz2
+ lda #$20
+ and.z m
+ sta.z __92
+ // if ((32&m)==0)
+ // [204] if(main::$92!=0) goto main::@33 -- vbuz1_neq_0_then_la1
+ bne __b33
+ // main::@41
+ // POKE
+ // [205] *((char *) 36877) = $82 -- _deref_pbuc1=vbuc2
+ lda #$82
+ sta $900d
+ // if (peephole!=duck)
+ // [206] if(peephole#12!=duck#1) goto main::@34 -- vwuz1_neq_vwuz2_then_la1
+ lda.z peephole+1
+ cmp.z duck+1
+ beq !__b34+
+ jmp __b34
+ !__b34:
+ lda.z peephole
+ cmp.z duck
+ beq !__b34+
+ jmp __b34
+ !__b34:
+ // main::@42
+ // 12-time
+ // [207] main::$96 = $c - div16u8u::return#2 -- vwuz1=vwuc1_minus_vwuz2
+ sec
+ lda #<$c
+ sbc.z div16u8u.return_1
+ sta.z __96
+ lda #>$c
+ sbc.z div16u8u.return_1+1
+ sta.z __96+1
+ // (12-time)*10
+ // [208] main::$179 = main::$96 << 2 -- vwuz1=vwuz2_rol_2
+ lda.z __96
+ asl
+ sta.z __179
+ lda.z __96+1
+ rol
+ sta.z __179+1
+ asl.z __179
+ rol.z __179+1
+ // [209] main::$180 = main::$179 + main::$96 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z __180
+ adc.z __179
+ sta.z __180
+ lda.z __180+1
+ adc.z __179+1
+ sta.z __180+1
+ // [210] main::$97 = main::$180 << 1 -- vwuz1=vwuz1_rol_1
+ asl.z __97
+ rol.z __97+1
+ // score=score+(12-time)*10
+ // [211] score#8 = score#19 + main::$97 -- vwuz1=vwuz1_plus_vwuz2
+ clc
+ lda.z score
+ adc.z __97
+ sta.z score
+ lda.z score+1
+ adc.z __97+1
+ sta.z score+1
+ // wait(10)
+ // [212] call wait
+ // [381] phi from main::@42 to wait [phi:main::@42->wait]
+ // [381] phi z#53 = z#100 [phi:main::@42->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $a [phi:main::@42->wait#1] -- vbuz1=vbuc1
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ // [213] phi from main::@42 to main::@35 [phi:main::@42->main::@35]
+ // [213] phi score#81 = score#8 [phi:main::@42->main::@35#0] -- register_copy
+ // [213] phi time#38 = $a [phi:main::@42->main::@35#1] -- vwuz1=vbuc1
+ lda #<$a
+ sta.z time
+ lda #>$a
+ sta.z time+1
+ // main::@35
+ __b35:
+ // POKE
+ // [214] *((char *) 36877) = 0 -- _deref_pbuc1=vbuc2
+ lda #0
+ sta $900d
+ // [215] phi from main::@32 main::@35 to main::@33 [phi:main::@32/main::@35->main::@33]
+ // [215] phi score#43 = score#19 [phi:main::@32/main::@35->main::@33#0] -- register_copy
+ // [215] phi time#17 = div16u8u::return#2 [phi:main::@32/main::@35->main::@33#1] -- register_copy
+ // [215] phi z#48 = z#100 [phi:main::@32/main::@35->main::@33#2] -- register_copy
+ // main::@33
+ __b33:
+ // PEEK
+ // [216] main::$104 = y#13 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z y
+ adc #1
+ sta.z __104
+ lda.z y+1
+ adc #0
+ sta.z __104+1
+ // [217] main::$107 = y#13 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y
+ sta.z __107
+ lda #0
+ adc.z y+1
+ sta.z __107+1
+ // [218] main::$110 = y#13 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z y
+ sta.z __110
+ lda #0
+ adc.z y+1
+ sta.z __110+1
+ // if (PEEK(y)!=brick && PEEK(y+1)!=brick && PEEK(y+22)!=brick && PEEK(y+23)!=brick && y>7702 && y<8163)
+ // [219] if(*((char *)y#13)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (y),y
+ beq __b36
+ // main::@111
+ // [220] if(*((char *)main::$104)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ cmp (__104),y
+ beq __b36
+ // main::@110
+ // [221] if(*((char *)main::$107)!=brick) goto main::@109 -- _deref_pbuz1_neq_vbuc1_then_la1
+ lda (__107),y
+ cmp #brick
+ beq !__b109+
+ jmp __b109
+ !__b109:
+ // [222] phi from main::@107 main::@108 main::@109 main::@110 main::@111 to main::@36 [phi:main::@107/main::@108/main::@109/main::@110/main::@111->main::@36]
+ // [222] phi from main::@33 main::@43 to main::@36 [phi:main::@33/main::@43->main::@36]
+ // [222] phi y#35 = peephole#12 [phi:main::@33/main::@43->main::@36#0] -- register_copy
+ // main::@36
+ __b36:
+ // POKE
+ // [223] *((char *)y#35) = $fd -- _deref_pbuz1=vbuc1
+ lda #$fd
+ ldy #0
+ sta (y_1),y
+ // [224] main::$125 = y#35 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z y_1
+ clc
+ adc #c
+ sta.z __125+1
+ // [225] *((char *)main::$125) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ sta (__125),y
+ // [226] main::$127 = y#35 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z y_1
+ adc #1
+ sta.z __127
+ lda.z y_1+1
+ adc #0
+ sta.z __127+1
+ // [227] *((char *)main::$127) = $ed -- _deref_pbuz1=vbuc1
+ lda #$ed
+ sta (__127),y
+ // [228] main::$128 = main::$127 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __128
+ clc
+ adc #c
+ sta.z __128+1
+ // [229] *((char *)main::$128) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ sta (__128),y
+ // [230] main::$130 = y#35 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z y_1
+ sta.z __130
+ tya
+ adc.z y_1+1
+ sta.z __130+1
+ // [231] *((char *)main::$130) = $ee -- _deref_pbuz1=vbuc1
+ lda #$ee
+ sta (__130),y
+ // [232] main::$131 = main::$130 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __131
+ clc
+ adc #c
+ sta.z __131+1
+ // [233] *((char *)main::$131) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ sta (__131),y
+ // [234] main::$133 = y#35 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z y_1
+ sta.z __133
+ tya
+ adc.z y_1+1
+ sta.z __133+1
+ // [235] *((char *)main::$133) = $f0 -- _deref_pbuz1=vbuc1
+ lda #$f0
+ sta (__133),y
+ // [236] main::$134 = main::$133 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __134
+ clc
+ adc #c
+ sta.z __134+1
+ // [237] *((char *)main::$134) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ sta (__134),y
+ // wait(5)
+ // [238] call wait
+ // Clear peephole if there is not bricks contact
+ // [381] phi from main::@36 to wait [phi:main::@36->wait]
+ // [381] phi z#53 = z#48 [phi:main::@36->wait#0] -- register_copy
+ // [381] phi wait::n#6 = 5 [phi:main::@36->wait#1] -- vbuz1=vbuc1
+ lda #5
+ sta.z wait.n
+ jsr wait
+ // main::@89
+ // POKE
+ // [239] *((char *)duck#1) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ tay
+ sta (duck),y
+ // [240] main::$136 = duck#1 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z duck
+ clc
+ adc #c
+ sta.z __136+1
+ // [241] *((char *)main::$136) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ sta (__136),y
+ // [242] main::$138 = duck#1 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z duck
+ adc #1
+ sta.z __138
+ lda.z duck+1
+ adc #0
+ sta.z __138+1
+ // [243] *((char *)main::$138) = 1 -- _deref_pbuz1=vbuc1
+ lda #1
+ sta (__138),y
+ // [244] main::$139 = main::$138 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __139
+ clc
+ adc #c
+ sta.z __139+1
+ // [245] *((char *)main::$139) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ sta (__139),y
+ // [246] main::$141 = duck#1 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z duck
+ sta.z __141
+ tya
+ adc.z duck+1
+ sta.z __141+1
+ // [247] *((char *)main::$141) = 2 -- _deref_pbuz1=vbuc1
+ lda #2
+ sta (__141),y
+ // [248] main::$142 = main::$141 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __142
+ clc
+ adc #c
+ sta.z __142+1
+ // [249] *((char *)main::$142) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ sta (__142),y
+ // [250] main::$144 = duck#1 + $17 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$17
+ clc
+ adc.z duck
+ sta.z __144
+ tya
+ adc.z duck+1
+ sta.z __144+1
+ // [251] *((char *)main::$144) = 3 -- _deref_pbuz1=vbuc1
+ lda #3
+ sta (__144),y
+ // [252] main::$145 = main::$144 + c -- vwuz1=vwuz1_plus_vwuc1
+ lda.z __145
+ clc
+ adc #c
+ sta.z __145+1
+ // [253] *((char *)main::$145) = 7 -- _deref_pbuz1=vbuc1
+ lda #7
+ sta (__145),y
+ // wait(5)
+ // [254] call wait
+ // [381] phi from main::@89 to wait [phi:main::@89->wait]
+ // [381] phi z#53 = z#25 [phi:main::@89->wait#0] -- register_copy
+ // [381] phi wait::n#6 = 5 [phi:main::@89->wait#1] -- vbuz1=vbuc1
+ lda #5
+ sta.z wait.n
+ jsr wait
+ // main::@90
+ // [255] y#130 = y#35 -- vwuz1=vwuz2
+ lda.z y_1
+ sta.z y
+ lda.z y_1+1
+ sta.z y+1
+ // [124] phi from main::@90 to main::@26 [phi:main::@90->main::@26]
+ // [124] phi n#20 = n#14 [phi:main::@90->main::@26#0] -- register_copy
+ // [124] phi peephole#12 = y#35 [phi:main::@90->main::@26#1] -- register_copy
+ // [124] phi z#100 = z#25 [phi:main::@90->main::@26#2] -- register_copy
+ // [124] phi y#18 = y#130 [phi:main::@90->main::@26#3] -- register_copy
+ // [124] phi rem8u#25 = divr8u::rem#11 [phi:main::@90->main::@26#4] -- register_copy
+ // [124] phi score#19 = score#43 [phi:main::@90->main::@26#5] -- register_copy
+ // [124] phi time#11 = time#17 [phi:main::@90->main::@26#6] -- register_copy
+ jmp __b26
+ // main::@109
+ __b109:
+ // if (PEEK(y)!=brick && PEEK(y+1)!=brick && PEEK(y+22)!=brick && PEEK(y+23)!=brick && y>7702 && y<8163)
+ // [256] if(*((char *)main::$110)==brick) goto main::@36 -- _deref_pbuz1_eq_vbuc1_then_la1
+ lda #brick
+ ldy #0
+ cmp (__110),y
+ bne !__b36+
+ jmp __b36
+ !__b36:
+ // main::@108
+ // [257] if(y#13>$1e16) goto main::@107 -- vwuz1_gt_vwuc1_then_la1
+ lda #>$1e16
+ cmp.z y+1
+ bcc __b107
+ bne !+
+ lda #<$1e16
+ cmp.z y
+ bcc __b107
+ !:
+ jmp __b36
+ // main::@107
+ __b107:
+ // [258] if(y#13>=$1fe3) goto main::@36 -- vwuz1_ge_vwuc1_then_la1
+ lda.z y+1
+ cmp #>$1fe3
+ bcc !+
+ beq !__b36+
+ jmp __b36
+ !__b36:
+ lda.z y
+ cmp #<$1fe3
+ bcc !__b36+
+ jmp __b36
+ !__b36:
+ !:
+ // main::@43
+ // POKE
+ // [259] main::$119 = peephole#12 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z peephole
+ clc
+ adc #c
+ sta.z __119+1
+ // [260] *((char *)main::$119) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ tay
+ sta (__119),y
+ // [261] main::$120 = main::$119 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z __119
+ adc #1
+ sta.z __120
+ lda.z __119+1
+ adc #0
+ sta.z __120+1
+ // [262] *((char *)main::$120) = 0 -- _deref_pbuz1=vbuc1
+ tya
+ sta (__120),y
+ // [263] main::$122 = main::$119 + $16 -- vwuz1=vwuz2_plus_vbuc1
+ lda #$16
+ clc
+ adc.z __119
+ sta.z __122
+ tya
+ adc.z __119+1
+ sta.z __122+1
+ // [264] *((char *)main::$122) = 0 -- _deref_pbuz1=vbuc1
+ tya
+ sta (__122),y
+ // [265] main::$124 = main::$119 + $17 -- vwuz1=vwuz1_plus_vbuc1
+ lda #$17
+ clc
+ adc.z __124
+ sta.z __124
+ bcc !+
+ inc.z __124+1
+ !:
+ // [266] *((char *)main::$124) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ tay
+ sta (__124),y
+ // [267] y#141 = y#13 -- vwuz1=vwuz2
+ lda.z y
+ sta.z y_1
+ lda.z y+1
+ sta.z y_1+1
+ jmp __b36
+ // main::@34
+ __b34:
+ // score=score-10
+ // [268] score#6 = score#19 - $a -- vwuz1=vwuz1_minus_vbuc1
+ sec
+ lda.z score
+ sbc #$a
+ sta.z score
+ lda.z score+1
+ sbc #0
+ sta.z score+1
+ // write_score()
+ // [269] call write_score
+ // [351] phi from main::@34 to write_score [phi:main::@34->write_score]
+ // [351] phi score#13 = score#6 [phi:main::@34->write_score#0] -- register_copy
+ jsr write_score
+ // [270] phi from main::@34 to main::@88 [phi:main::@34->main::@88]
+ // main::@88
+ // wait(10)
+ // [271] call wait
+ // [381] phi from main::@88 to wait [phi:main::@88->wait]
+ // [381] phi z#53 = z#100 [phi:main::@88->wait#0] -- register_copy
+ // [381] phi wait::n#6 = $a [phi:main::@88->wait#1] -- vbuz1=vbuc1
+ lda #$a
+ sta.z wait.n
+ jsr wait
+ // [213] phi from main::@88 to main::@35 [phi:main::@88->main::@35]
+ // [213] phi score#81 = score#38 [phi:main::@88->main::@35#0] -- register_copy
+ // [213] phi time#38 = div16u8u::return#2 [phi:main::@88->main::@35#1] -- register_copy
+ jmp __b35
+ // main::@23
+ __b23:
+ // 48+tu
+ // [272] main::$57 = $30 + tu#13 -- vwuz1=vbuc1_plus_vwuz2
+ lda #$30
+ clc
+ adc.z tu
+ sta.z __57
+ lda #0
+ adc.z tu+1
+ sta.z __57+1
+ // chrout(48+tu)
+ // [273] chrout::petscii = main::$57 -- vbuz1=vwuz2
+ lda.z __57
+ sta.z chrout.petscii
+ // [274] call chrout
+ jsr chrout
+ jmp __b11
+ // main::@21
+ __b21:
+ // chrout(ducknumber[j])
+ // [275] chrout::petscii = ducknumber[j#16] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z j_2
+ lda ducknumber,y
+ sta.z chrout.petscii
+ // [276] call chrout
+ jsr chrout
+ // main::@78
+ // for (j=0; j<5; j++)
+ // [277] j#5 = ++ j#16 -- vbuz1=_inc_vbuz1
+ inc.z j_2
+ // [93] phi from main::@78 to main::@20 [phi:main::@78->main::@20]
+ // [93] phi j#16 = j#5 [phi:main::@78->main::@20#0] -- register_copy
+ jmp __b20
+ // main::@18
+ __b18:
+ // chrout(chrono[j])
+ // [278] chrout::petscii = chrono[j#13] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z j_1
+ lda chrono,y
+ sta.z chrout.petscii
+ // [279] call chrout
+ jsr chrout
+ // main::@74
+ // for (j=0; j<4; ++j)
+ // [280] j#3 = ++ j#13 -- vbuz1=_inc_vbuz1
+ inc.z j_1
+ // [84] phi from main::@74 to main::@17 [phi:main::@74->main::@17]
+ // [84] phi j#13 = j#3 [phi:main::@74->main::@17#0] -- register_copy
+ jmp __b17
+ // [281] phi from main::@71 to main::@14 [phi:main::@71->main::@14]
+ __b24:
+ // [281] phi j#11 = 1 [phi:main::@71->main::@14#0] -- vbuz1=vbuc1
+ lda #1
+ sta.z j
+ // main::@14
+ __b14:
+ // for (j=1; j<=m; ++j)
+ // [282] if(j#11<=m) goto main::@15 -- vbuz1_le_vbuz2_then_la1
+ lda.z m
+ cmp.z j
+ bcs __b15
+ // main::@16
+ // chrout(brick)
+ // [283] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [284] call chrout
+ jsr chrout
+ // main::@73
+ // z+m
+ // [285] main::$35 = z#28 + m -- vwuz1=vwuz2_plus_vbuz3
+ lda.z m
+ clc
+ adc.z z_1
+ sta.z __35
+ lda #0
+ adc.z z_1+1
+ sta.z __35+1
+ // z=z+m+1
+ // [286] z#9 = main::$35 + 1 -- vwuz1=vwuz2_plus_1
+ clc
+ lda.z __35
+ adc #1
+ sta.z z_1
+ lda.z __35+1
+ adc #0
+ sta.z z_1+1
+ // while (z<506)
+ // [287] if(z#9<$1fa) goto main::@13 -- vwuz1_lt_vwuc1_then_la1
+ cmp #>$1fa
+ bcs !__b13+
+ jmp __b13
+ !__b13:
+ bne !+
+ lda.z z_1
+ cmp #<$1fa
+ bcs !__b13+
+ jmp __b13
+ !__b13:
+ !:
+ jmp __b12
+ // main::@15
+ __b15:
+ // chrout(right)
+ // [288] chrout::petscii = right -- vbuz1=vbuc1
+ lda #right
+ sta.z chrout.petscii
+ // [289] call chrout
+ jsr chrout
+ // main::@72
+ // for (j=1; j<=m; ++j)
+ // [290] j#2 = ++ j#11 -- vbuz1=_inc_vbuz1
+ inc.z j
+ // [281] phi from main::@72 to main::@14 [phi:main::@72->main::@14]
+ // [281] phi j#11 = j#2 [phi:main::@72->main::@14#0] -- register_copy
+ jmp __b14
+ // main::@7
+ __b7:
+ // chrout(brick)
+ // [291] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [292] call chrout
+ jsr chrout
+ // [293] phi from main::@7 to main::@9 [phi:main::@7->main::@9]
+ // [293] phi n#101 = 2 [phi:main::@7->main::@9#0] -- vbuz1=vbuc1
+ lda #2
+ sta.z n
+ // main::@9
+ __b9:
+ // for(n=2;n<22;++n)
+ // [294] if(n#101<$16) goto main::@10 -- vbuz1_lt_vbuc1_then_la1
+ lda.z n
+ cmp #$16
+ bcc __b10
+ // main::@11
+ // chrout(brick)
+ // [295] chrout::petscii = brick -- vbuz1=vbuc1
+ lda #brick
+ sta.z chrout.petscii
+ // [296] call chrout
+ jsr chrout
+ // main::@64
+ // for (k=1;k<22;k++)
+ // [297] k#1 = ++ k#101 -- vbuz1=_inc_vbuz1
+ inc.z k
+ // [52] phi from main::@64 to main::@6 [phi:main::@64->main::@6]
+ // [52] phi n#89 = n#101 [phi:main::@64->main::@6#0] -- register_copy
+ // [52] phi k#101 = k#1 [phi:main::@64->main::@6#1] -- register_copy
+ jmp __b6
+ // main::@10
+ __b10:
+ // chrout(right)
+ // [298] chrout::petscii = right -- vbuz1=vbuc1
+ lda #right
+ sta.z chrout.petscii
+ // [299] call chrout
+ jsr chrout
+ // main::@63
+ // for(n=2;n<22;++n)
+ // [300] n#1 = ++ n#101 -- vbuz1=_inc_vbuz1
+ inc.z n
+ // [293] phi from main::@63 to main::@9 [phi:main::@63->main::@9]
+ // [293] phi n#101 = n#1 [phi:main::@63->main::@9#0] -- register_copy
+ jmp __b9
+ // main::@2
+ __b2:
+ // POKE
+ // [301] main::$3 = $1c00 + m -- vwuz1=vwuc1_plus_vbuz2
+ lda.z m
+ clc
+ adc #<$1c00
+ sta.z __3
+ lda #>$1c00
+ adc #0
+ sta.z __3+1
+ // [302] *((char *)main::$3) = duck_udg[m] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
+ ldy.z m
+ lda duck_udg,y
+ ldy #0
+ sta (__3),y
+ // for (m=0; m<40; m++)
+ // [303] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b1
+}
+ // gotoxy
+// Set the cursor to the specified position
+// void gotoxy(char x, __zp($4c) char y)
+gotoxy: {
+ .label __5 = $48
+ .label __6 = $2c
+ .label __7 = $2c
+ .label line_offset = $2c
+ .label y = $4c
+ .label __8 = $46
+ .label __9 = $2c
+ // if(y>CONIO_HEIGHT)
+ // [305] if(gotoxy::y#4<$19+1) goto gotoxy::@3 -- vbuz1_lt_vbuc1_then_la1
+ lda.z y
+ cmp #$19+1
+ bcc __b2
+ // [307] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
+ // [307] phi gotoxy::y#5 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z y
+ // [306] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
+ // gotoxy::@3
+ // [307] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
+ // [307] phi gotoxy::y#5 = gotoxy::y#4 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy
+ // gotoxy::@1
+ // gotoxy::@2
+ __b2:
+ // conio_cursor_x = x
+ // [308] conio_cursor_x = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z conio_cursor_x
+ // conio_cursor_y = y
+ // [309] conio_cursor_y = gotoxy::y#5 -- vbuz1=vbuz2
+ lda.z y
+ sta.z conio_cursor_y
+ // unsigned int line_offset = (unsigned int)y*CONIO_WIDTH
+ // [310] gotoxy::$7 = (unsigned int)gotoxy::y#5 -- vwuz1=_word_vbuz2
+ lda.z y
+ sta.z __7
+ lda #0
+ sta.z __7+1
+ // [311] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2
+ lda.z __7
+ asl
+ sta.z __8
+ lda.z __7+1
+ rol
+ sta.z __8+1
+ asl.z __8
+ rol.z __8+1
+ // [312] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1
+ clc
+ lda.z __9
+ adc.z __8
+ sta.z __9
+ lda.z __9+1
+ adc.z __8+1
+ sta.z __9+1
+ // [313] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ asl.z line_offset
+ rol.z line_offset+1
+ // CONIO_SCREEN_TEXT + line_offset
+ // [314] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2
+ lda.z line_offset
+ clc
+ adc #DEFAULT_SCREEN
+ sta.z __5+1
+ // conio_line_text = CONIO_SCREEN_TEXT + line_offset
+ // [315] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2
+ lda.z __5
+ sta.z conio_line_text
+ lda.z __5+1
+ sta.z conio_line_text+1
+ // CONIO_SCREEN_COLORS + line_offset
+ // [316] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1
+ lda.z __6
+ clc
+ adc #COLORRAM
+ sta.z __6+1
+ // conio_line_color = CONIO_SCREEN_COLORS + line_offset
+ // [317] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2
+ lda.z __6
+ sta.z conio_line_color
+ lda.z __6+1
+ sta.z conio_line_color+1
+ // gotoxy::@return
+ // }
+ // [318] return
+ rts
+}
+ // chrout
+// void chrout(__zp($18) volatile char petscii)
+chrout: {
+ .label petscii = $18
+ // asm
+ // asm { ldapetscii jsr$ffd2 }
+ lda petscii
+ jsr $ffd2
+ // chrout::@return
+ // }
+ // [320] return
+ rts
+}
+ // clear_screen
+// void clear_screen(__zp(8) char n, char m)
+clear_screen: {
+ .label __4 = $23
+ .label __5 = 9
+ .label n = 8
+ // [322] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
+ // [322] phi z#2 = 0 [phi:clear_screen->clear_screen::@1#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z z
+ sta.z z+1
+ // clear_screen::@1
+ __b1:
+ // for (z=0; z<506; ++z)
+ // [323] if(z#2<$1fa) goto clear_screen::@2 -- vwuz1_lt_vwuc1_then_la1
+ lda.z z+1
+ cmp #>$1fa
+ bcc __b2
+ bne !+
+ lda.z z
+ cmp #<$1fa
+ bcc __b2
+ !:
+ // [324] phi from clear_screen::@1 to clear_screen::@3 [phi:clear_screen::@1->clear_screen::@3]
+ // clear_screen::@3
+ // gotoxy(0,0)
+ // [325] call gotoxy
+ // From 0-->505 (506 bytes). ClearScreen with byte 'n' with color 'm'
+ // [304] phi from clear_screen::@3 to gotoxy [phi:clear_screen::@3->gotoxy]
+ // [304] phi gotoxy::y#4 = 0 [phi:clear_screen::@3->gotoxy#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z gotoxy.y
+ jsr gotoxy
+ // clear_screen::@4
+ // chrout(home)
+ // [326] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [327] call chrout
+ jsr chrout
+ // clear_screen::@return
+ // }
+ // [328] return
+ rts
+ // clear_screen::@2
+ __b2:
+ // POKE
+ // [329] clear_screen::$5 = $1e00 + z#2 -- vwuz1=vwuc1_plus_vwuz2
+ lda.z z
+ clc
+ adc #<$1e00
+ sta.z __5
+ lda.z z+1
+ adc #>$1e00
+ sta.z __5+1
+ // [330] clear_screen::$4 = clear_screen::$5 + c -- vwuz1=vwuz2_plus_vwuc1
+ lda.z __5
+ clc
+ adc #c
+ sta.z __4+1
+ // [331] *((char *)clear_screen::$4) = 0 -- _deref_pbuz1=vbuc1
+ lda #0
+ tay
+ sta (__4),y
+ // [332] *((char *)clear_screen::$5) = clear_screen::n#5 -- _deref_pbuz1=vbuz2
+ lda.z n
+ sta (__5),y
+ // for (z=0; z<506; ++z)
+ // [333] z#1 = ++ z#2 -- vwuz1=_inc_vwuz1
+ inc.z z
+ bne !+
+ inc.z z+1
+ !:
+ // [322] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
+ // [322] phi z#2 = z#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy
+ jmp __b1
+}
+ // textcolor
+// Set the color for text output. The old color setting is returned.
+// char textcolor(__zp(8) char color)
+textcolor: {
+ .label color = 8
+ // conio_textcolor = color
+ // [335] conio_textcolor = textcolor::color#7 -- vbuz1=vbuz2
+ lda.z color
+ sta.z conio_textcolor
+ // textcolor::@return
+ // }
+ // [336] return
+ rts
+}
+ // cputs
+// Output a NUL-terminated string at the current cursor position
+// void cputs(__zp(5) const char *s)
+cputs: {
+ .label c = 2
+ .label s = 5
+ // [338] phi from cputs cputs::@2 to cputs::@1 [phi:cputs/cputs::@2->cputs::@1]
+ // [338] phi cputs::s#10 = cputs::s#11 [phi:cputs/cputs::@2->cputs::@1#0] -- register_copy
+ // cputs::@1
+ __b1:
+ // while(c=*s++)
+ // [339] cputs::c#1 = *cputs::s#10 -- vbuz1=_deref_pbuz2
+ ldy #0
+ lda (s),y
+ sta.z c
+ // [340] cputs::s#0 = ++ cputs::s#10 -- pbuz1=_inc_pbuz1
+ inc.z s
+ bne !+
+ inc.z s+1
+ !:
+ // [341] if(0!=cputs::c#1) goto cputs::@2 -- 0_neq_vbuz1_then_la1
+ lda.z c
+ bne __b2
+ // cputs::@return
+ // }
+ // [342] return
+ rts
+ // cputs::@2
+ __b2:
+ // cputc(c)
+ // [343] cputc::c#0 = cputs::c#1
+ // [344] call cputc
+ jsr cputc
+ jmp __b1
+}
+ // random
+// Return to home position
+// void random(__zp(3) char k, __zp(8) char n)
+random: {
+ .label k = 3
+ .label n = 8
+ .label __3 = 2
+ // random::@1
+ __b1:
+ // m=PEEK
+ // [346] m = *((char *) 37140) -- vbuz1=_deref_pbuc1
+ lda $9114
+ sta.z m
+ // m>n
+ // [347] random::$3 = m -- vbuz1=vbuz2
+ sta.z __3
+ // while (mn)
+ // [348] if(mrandom::n#4) goto random::@1 -- vbuz1_gt_vbuz2_then_la1
+ lda.z n
+ cmp.z __3
+ bcc __b1
+ // random::@return
+ // }
+ // [350] return
+ rts
+}
+ // write_score
+write_score: {
+ // if (score>65000)
+ // [352] if(score#13<=$fde8) goto write_score::@15 -- vwuz1_le_vwuc1_then_la1
+ lda.z score+1
+ cmp #>$fde8
+ bne !+
+ lda.z score
+ cmp #<$fde8
+ !:
+ bcc __b1
+ beq __b1
+ // [354] phi from write_score to write_score::@1 [phi:write_score->write_score::@1]
+ // [354] phi score#38 = 0 [phi:write_score->write_score::@1#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z score
+ sta.z score+1
+ // [353] phi from write_score to write_score::@15 [phi:write_score->write_score::@15]
+ // write_score::@15
+ // [354] phi from write_score::@15 to write_score::@1 [phi:write_score::@15->write_score::@1]
+ // [354] phi score#38 = score#13 [phi:write_score::@15->write_score::@1#0] -- register_copy
+ // write_score::@1
+ __b1:
+ // m=0
+ // [355] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ // write_score::@5
+ __b5:
+ // for (m=0;m<4;m++)
+ // [356] if(m<4) goto write_score::@6 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #4
+ bcc __b6
+ // write_score::@7
+ // utoa(score,buffer,10)
+ // [357] utoa::value#1 = score#38 -- vwuz1=vwuz2
+ lda.z score
+ sta.z utoa.value
+ lda.z score+1
+ sta.z utoa.value+1
+ // [358] call utoa
+ // (!!) Needed. Possibly a bug
+ // [390] phi from write_score::@7 to utoa [phi:write_score::@7->utoa]
+ // [390] phi utoa::value#10 = utoa::value#1 [phi:write_score::@7->utoa#0] -- register_copy
+ jsr utoa
+ // write_score::@11
+ // if (score>9)
+ // [359] if(score#38<9+1) goto write_score::@2 -- vwuz1_lt_vbuc1_then_la1
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #9+1
+ bcc __b2
+ !:
+ // write_score::@8
+ // points[2]=buffer[0]
+ // [360] *(points+2) = *buffer -- _deref_pbuc1=_deref_pbuc2
+ lda buffer
+ sta points+2
+ // points[3]=buffer[1]
+ // [361] *(points+3) = *(buffer+1) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+1
+ sta points+3
+ // write_score::@2
+ __b2:
+ // if (score>99)
+ // [362] if(score#38<$63+1) goto write_score::@3 -- vwuz1_lt_vbuc1_then_la1
+ lda.z score+1
+ bne !+
+ lda.z score
+ cmp #$63+1
+ bcc __b3
+ !:
+ // write_score::@4
+ // points[1]=buffer[0]
+ // [363] *(points+1) = *buffer -- _deref_pbuc1=_deref_pbuc2
+ lda buffer
+ sta points+1
+ // points[2]=buffer[1]
+ // [364] *(points+2) = *(buffer+1) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+1
+ sta points+2
+ // points[3]=buffer[2]
+ // [365] *(points+3) = *(buffer+2) -- _deref_pbuc1=_deref_pbuc2
+ lda buffer+2
+ sta points+3
+ // write_score::@3
+ __b3:
+ // chrout(yellow)
+ // [366] chrout::petscii = yellow -- vbuz1=vbuc1
+ lda #yellow
+ sta.z chrout.petscii
+ // [367] call chrout
+ jsr chrout
+ // write_score::@12
+ // chrout(home)
+ // [368] chrout::petscii = home -- vbuz1=vbuc1
+ lda #home
+ sta.z chrout.petscii
+ // [369] call chrout
+ jsr chrout
+ // write_score::@13
+ // POKE
+ // [370] *((char *) 211) = 4 -- _deref_pbuc1=vbuc2
+ lda #4
+ sta.z $d3
+ // m=0
+ // [371] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ // write_score::@9
+ __b9:
+ // for (m=0;m<4;m++)
+ // [372] if(m<4) goto write_score::@10 -- vbuz1_lt_vbuc1_then_la1
+ lda.z m
+ cmp #4
+ bcc __b10
+ // write_score::@return
+ // }
+ // [373] return
+ rts
+ // write_score::@10
+ __b10:
+ // chrout(points[m])
+ // [374] chrout::petscii = points[m] -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy.z m
+ lda points,y
+ sta.z chrout.petscii
+ // [375] call chrout
+ jsr chrout
+ // write_score::@14
+ // for (m=0;m<4;m++)
+ // [376] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b9
+ // write_score::@6
+ __b6:
+ // points[m]='0'
+ // [377] points[m] = '0' -- pbuc1_derefidx_vbuz1=vbuc2
+ lda #'0'
+ ldy.z m
+ sta points,y
+ // for (m=0;m<4;m++)
+ // [378] m = ++ m -- vbuz1=_inc_vbuz1
+ inc.z m
+ jmp __b5
+}
+ // chrono_restart
+chrono_restart: {
+ // asm
+ // asm { lda#0 ldy#0 ldx#0 jsr$ffdb }
+ lda #0
+ tay
+ tax
+ jsr $ffdb
+ // chrono_restart::@return
+ // }
+ // [380] return
+ rts
+}
+ // wait
+// void wait(__zp(3) char n)
+wait: {
+ .label n = 3
+ // m=0
+ // [382] m = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z m
+ // [383] phi from wait wait::@4 to wait::@1 [phi:wait/wait::@4->wait::@1]
+ // [383] phi z#25 = z#53 [phi:wait/wait::@4->wait::@1#0] -- register_copy
+ // wait::@1
+ __b1:
+ // for (m=0;mwait::@2]
+ __b4:
+ // [386] phi z#23 = 0 [phi:wait::@1->wait::@2#0] -- vwuz1=vbuc1
+ lda #<0
+ sta.z z_1
+ sta.z z_1+1
+ // wait::@2
+ __b2:
+ // for (z=0;z<540;++z)
+ // [387] if(z#23<$21c) goto wait::@3 -- vwuz1_lt_vwuc1_then_la1
+ lda.z z_1+1
+ cmp #>$21c
+ bcc __b3
+ bne !+
+ lda.z z_1
+ cmp #<$21c
+ bcc __b3
+ !:
+ // wait::@4
+ // for (m=0;mwait::@2]
+ // [386] phi z#23 = z#4 [phi:wait::@3->wait::@2#0] -- register_copy
+ jmp __b2
+}
+ // utoa
+// Converts unsigned number value to a string representing it in RADIX format.
+// If the leading digits are zero they are not included in the string.
+// - value : The number to be converted to RADIX
+// - buffer : receives the string representing the number and zero-termination.
+// - radix : The radix to convert the number to (from the enum RADIX)
+// void utoa(__zp(5) unsigned int value, __zp($d) char *buffer, char radix)
+utoa: {
+ .label __10 = $11
+ .label __11 = 2
+ .label digit_value = 9
+ .label buffer = $d
+ .label digit = 3
+ .label value = 5
+ .label started = $10
+ // [391] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
+ // [391] phi utoa::buffer#10 = buffer [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1
+ lda #<@buffer
+ sta.z buffer
+ lda #>@buffer
+ sta.z buffer+1
+ // [391] phi utoa::started#2 = 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z started
+ // [391] phi utoa::value#3 = utoa::value#10 [phi:utoa->utoa::@1#2] -- register_copy
+ // [391] phi utoa::digit#2 = 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1
+ sta.z digit
+ // utoa::@1
+ __b1:
+ // for( char digit=0; digit= digit_value)
+ // [400] if(0!=utoa::started#2) goto utoa::@5 -- 0_neq_vbuz1_then_la1
+ lda.z started
+ bne __b5
+ // utoa::@7
+ // [401] if(utoa::value#3>=utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1
+ lda.z digit_value+1
+ cmp.z value+1
+ bne !+
+ lda.z digit_value
+ cmp.z value
+ beq __b5
+ !:
+ bcc __b5
+ // [402] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4]
+ // [402] phi utoa::buffer#15 = utoa::buffer#10 [phi:utoa::@7->utoa::@4#0] -- register_copy
+ // [402] phi utoa::started#4 = utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy
+ // [402] phi utoa::value#7 = utoa::value#3 [phi:utoa::@7->utoa::@4#2] -- register_copy
+ // utoa::@4
+ __b4:
+ // for( char digit=0; digitutoa::@1]
+ // [391] phi utoa::buffer#10 = utoa::buffer#15 [phi:utoa::@4->utoa::@1#0] -- register_copy
+ // [391] phi utoa::started#2 = utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy
+ // [391] phi utoa::value#3 = utoa::value#7 [phi:utoa::@4->utoa::@1#2] -- register_copy
+ // [391] phi utoa::digit#2 = utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy
+ jmp __b1
+ // utoa::@5
+ __b5:
+ // utoa_append(buffer++, value, digit_value)
+ // [404] utoa_append::buffer#0 = utoa::buffer#10
+ // [405] utoa_append::value#0 = utoa::value#3
+ // [406] utoa_append::sub#0 = utoa::digit_value#0
+ // [407] call utoa_append
+ // [432] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append]
+ jsr utoa_append
+ // utoa_append(buffer++, value, digit_value)
+ // [408] utoa_append::return#0 = utoa_append::value#2
+ // utoa::@6
+ // value = utoa_append(buffer++, value, digit_value)
+ // [409] utoa::value#0 = utoa_append::return#0
+ // value = utoa_append(buffer++, value, digit_value);
+ // [410] utoa::buffer#4 = ++ utoa::buffer#10 -- pbuz1=_inc_pbuz1
+ inc.z buffer
+ bne !+
+ inc.z buffer+1
+ !:
+ // [402] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4]
+ // [402] phi utoa::buffer#15 = utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy
+ // [402] phi utoa::started#4 = 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1
+ lda #1
+ sta.z started
+ // [402] phi utoa::value#7 = utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy
+ jmp __b4
+}
+ // read_chrono
+read_chrono: {
+ .label __0 = $23
+ .label __5 = 9
+ // asm
+ // asm { jsr$ffde stal stxm }
+ jsr $ffde
+ sta l
+ stx m
+ // m*256
+ // [412] read_chrono::$0 = m << 8 -- vwuz1=vbuz2_rol_8
+ txa
+ sta.z __0+1
+ lda #0
+ sta.z __0
+ // div16u8u((m*256)+l,60)
+ // [413] div16u8u::dividend#0 = read_chrono::$0 + l -- vwuz1=vwuz1_plus_vbuz2
+ lda.z l
+ clc
+ adc.z div16u8u.dividend
+ sta.z div16u8u.dividend
+ bcc !+
+ inc.z div16u8u.dividend+1
+ !:
+ // [414] call div16u8u
+ jsr div16u8u
+ // [415] div16u8u::return#2 = div16u8u::return#0 -- vwuz1=vwuz2
+ lda.z div16u8u.return
+ sta.z div16u8u.return_1
+ lda.z div16u8u.return+1
+ sta.z div16u8u.return_1+1
+ // read_chrono::@2
+ // POKE
+ // [416] *((char *)$1e15+c) = 7 -- _deref_pbuc1=vbuc2
+ lda #7
+ sta $1e15+c
+ // [417] *((char *) 7701) = $b9 -- _deref_pbuc1=vbuc2
+ lda #$b9
+ sta $1e15
+ // if (time<10)
+ // [418] if(div16u8u::return#2>=$a) goto read_chrono::@return -- vwuz1_ge_vbuc1_then_la1
+ lda.z div16u8u.return_1+1
+ bne __breturn
+ lda.z div16u8u.return_1
+ cmp #$a
+ bcs __breturn
+ !:
+ // read_chrono::@1
+ // POKE
+ // [419] read_chrono::$5 = $b9 - div16u8u::return#2 -- vwuz1=vwuc1_minus_vwuz2
+ sec
+ lda #<$b9
+ sbc.z div16u8u.return_1
+ sta.z __5
+ lda #>$b9
+ sbc.z div16u8u.return_1+1
+ sta.z __5+1
+ // [420] *((char *) 7701) = read_chrono::$5 -- _deref_pbuc1=vwuz1
+ lda.z __5
+ sta $1e15
+ // read_chrono::@return
+ __breturn:
+ // }
+ // [421] return
+ rts
+}
+ // cputc
+// Output one character at the current cursor position
+// Moves the cursor forward. Scrolls the entire screen if needed
+// void cputc(__zp(2) char c)
+cputc: {
+ .label c = 2
+ // if(c=='\n')
+ // [422] if(cputc::c#0==' ') goto cputc::@1 -- vbuz1_eq_vbuc1_then_la1
+ lda #'\n'
+ cmp.z c
+ beq __b1
+ // cputc::@2
+ // conio_line_text[conio_cursor_x] = c
+ // [423] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuz3
+ lda.z c
+ ldy.z conio_cursor_x
+ sta (conio_line_text),y
+ // conio_line_color[conio_cursor_x] = conio_textcolor
+ // [424] conio_line_color[conio_cursor_x] = conio_textcolor -- pbuz1_derefidx_vbuz2=vbuz3
+ lda.z conio_textcolor
+ sta (conio_line_color),y
+ // if(++conio_cursor_x==CONIO_WIDTH)
+ // [425] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1
+ inc.z conio_cursor_x
+ // [426] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1
+ lda #$28
+ cmp.z conio_cursor_x
+ bne __breturn
+ // [427] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
+ // cputc::@3
+ // cputln()
+ // [428] call cputln
+ jsr cputln
+ // cputc::@return
+ __breturn:
+ // }
+ // [429] return
+ rts
+ // [430] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
+ // cputc::@1
+ __b1:
+ // cputln()
+ // [431] call cputln
+ jsr cputln
+ rts
+}
+ // utoa_append
+// Used to convert a single digit of an unsigned number value to a string representation
+// Counts a single digit up from '0' as long as the value is larger than sub.
+// Each time the digit is increased sub is subtracted from value.
+// - buffer : pointer to the char that receives the digit
+// - value : The value where the digit will be derived from
+// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
+// (For decimal the subs used are 10000, 1000, 100, 10, 1)
+// returns : the value reduced by sub * digit so that it is less than sub.
+// __zp(5) unsigned int utoa_append(__zp($d) char *buffer, __zp(5) unsigned int value, __zp(9) unsigned int sub)
+utoa_append: {
+ .label buffer = $d
+ .label value = 5
+ .label sub = 9
+ .label return = 5
+ .label digit = 7
+ // [433] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
+ // [433] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z digit
+ // [433] phi utoa_append::value#2 = utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy
+ // utoa_append::@1
+ __b1:
+ // while (value >= sub)
+ // [434] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1
+ lda.z sub+1
+ cmp.z value+1
+ bne !+
+ lda.z sub
+ cmp.z value
+ beq __b2
+ !:
+ bcc __b2
+ // utoa_append::@3
+ // *buffer = DIGITS[digit]
+ // [435] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuz2
+ ldy.z digit
+ lda DIGITS,y
+ ldy #0
+ sta (buffer),y
+ // utoa_append::@return
+ // }
+ // [436] return
+ rts
+ // utoa_append::@2
+ __b2:
+ // digit++;
+ // [437] utoa_append::digit#1 = ++ utoa_append::digit#2 -- vbuz1=_inc_vbuz1
+ inc.z digit
+ // value -= sub
+ // [438] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2
+ lda.z value
+ sec
+ sbc.z sub
+ sta.z value
+ lda.z value+1
+ sbc.z sub+1
+ sta.z value+1
+ // [433] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1]
+ // [433] phi utoa_append::digit#2 = utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy
+ // [433] phi utoa_append::value#2 = utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy
+ jmp __b1
+}
+ // div16u8u
+// Divide unsigned 16-bit unsigned long dividend with a 8-bit unsigned char divisor
+// The 8-bit unsigned char remainder can be found in rem8u after the division
+// __zp($30) unsigned int div16u8u(__zp($23) unsigned int dividend, char divisor)
+div16u8u: {
+ .label divisor = $3c
+ .label quotient_hi = 2
+ .label quotient_lo = $10
+ .label return = $12
+ .label dividend = $23
+ .label return_1 = $30
+ // unsigned char quotient_hi = divr8u(BYTE1(dividend), divisor, 0)
+ // [439] divr8u::dividend#1 = byte1 div16u8u::dividend#0 -- vbuz1=_byte1_vwuz2
+ lda.z dividend+1
+ sta.z divr8u.dividend
+ // [440] call divr8u
+ // [456] phi from div16u8u to divr8u [phi:div16u8u->divr8u]
+ // [456] phi divr8u::dividend#5 = divr8u::dividend#1 [phi:div16u8u->divr8u#0] -- register_copy
+ // [456] phi divr8u::rem#10 = 0 [phi:div16u8u->divr8u#1] -- vbuz1=vbuc1
+ lda #0
+ sta.z divr8u.rem
+ jsr divr8u
+ // unsigned char quotient_hi = divr8u(BYTE1(dividend), divisor, 0)
+ // [441] divr8u::return#2 = divr8u::return#0
+ // div16u8u::@1
+ // [442] div16u8u::quotient_hi#0 = divr8u::return#2 -- vbuz1=vbuz2
+ lda.z divr8u.return
+ sta.z quotient_hi
+ // unsigned char quotient_lo = divr8u(BYTE0(dividend), divisor, rem8u)
+ // [443] divr8u::dividend#2 = byte0 div16u8u::dividend#0 -- vbuz1=_byte0_vwuz2
+ lda.z dividend
+ sta.z divr8u.dividend
+ // [444] divr8u::rem#4 = divr8u::rem#11
+ // [445] call divr8u
+ // [456] phi from div16u8u::@1 to divr8u [phi:div16u8u::@1->divr8u]
+ // [456] phi divr8u::dividend#5 = divr8u::dividend#2 [phi:div16u8u::@1->divr8u#0] -- register_copy
+ // [456] phi divr8u::rem#10 = divr8u::rem#4 [phi:div16u8u::@1->divr8u#1] -- register_copy
+ jsr divr8u
+ // unsigned char quotient_lo = divr8u(BYTE0(dividend), divisor, rem8u)
+ // [446] divr8u::return#3 = divr8u::return#0
+ // div16u8u::@2
+ // [447] div16u8u::quotient_lo#0 = divr8u::return#3
+ // unsigned int quotient = MAKEWORD( quotient_hi, quotient_lo )
+ // [448] div16u8u::return#0 = div16u8u::quotient_hi#0 w= div16u8u::quotient_lo#0 -- vwuz1=vbuz2_word_vbuz3
+ lda.z quotient_hi
+ sta.z return+1
+ lda.z quotient_lo
+ sta.z return
+ // div16u8u::@return
+ // }
+ // [449] return
+ rts
+}
+ // cputln
+// Print a newline
+cputln: {
+ // conio_line_text += CONIO_WIDTH
+ // [450] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z conio_line_text
+ sta.z conio_line_text
+ bcc !+
+ inc.z conio_line_text+1
+ !:
+ // conio_line_color += CONIO_WIDTH
+ // [451] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z conio_line_color
+ sta.z conio_line_color
+ bcc !+
+ inc.z conio_line_color+1
+ !:
+ // conio_cursor_x = 0
+ // [452] conio_cursor_x = 0 -- vbuz1=vbuc1
+ lda #0
+ sta.z conio_cursor_x
+ // conio_cursor_y++;
+ // [453] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1
+ inc.z conio_cursor_y
+ // cscroll()
+ // [454] call cscroll
+ jsr cscroll
+ // cputln::@return
+ // }
+ // [455] return
+ rts
+}
+ // divr8u
+// Performs division on two 8 bit unsigned chars and an initial remainder
+// Returns dividend/divisor.
+// The final remainder will be set into the global variable rem8u
+// Implemented using simple binary division
+// __zp($10) char divr8u(__zp(3) char dividend, char divisor, __zp($f) char rem)
+divr8u: {
+ .label __1 = $11
+ .label rem = $f
+ .label dividend = 3
+ .label quotient = $10
+ .label i = 7
+ .label return = $10
+ // [457] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1]
+ // [457] phi divr8u::i#2 = 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1
+ lda #0
+ sta.z i
+ // [457] phi divr8u::quotient#3 = 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1
+ sta.z quotient
+ // [457] phi divr8u::dividend#3 = divr8u::dividend#5 [phi:divr8u->divr8u::@1#2] -- register_copy
+ // [457] phi divr8u::rem#5 = divr8u::rem#10 [phi:divr8u->divr8u::@1#3] -- register_copy
+ // [457] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1]
+ // [457] phi divr8u::i#2 = divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy
+ // [457] phi divr8u::quotient#3 = divr8u::return#0 [phi:divr8u::@3->divr8u::@1#1] -- register_copy
+ // [457] phi divr8u::dividend#3 = divr8u::dividend#0 [phi:divr8u::@3->divr8u::@1#2] -- register_copy
+ // [457] phi divr8u::rem#5 = divr8u::rem#11 [phi:divr8u::@3->divr8u::@1#3] -- register_copy
+ // divr8u::@1
+ __b1:
+ // rem = rem << 1
+ // [458] divr8u::rem#0 = divr8u::rem#5 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z rem
+ // dividend & $80
+ // [459] divr8u::$1 = divr8u::dividend#3 & $80 -- vbuz1=vbuz2_band_vbuc1
+ lda #$80
+ and.z dividend
+ sta.z __1
+ // if( (dividend & $80) != 0 )
+ // [460] if(divr8u::$1==0) goto divr8u::@2 -- vbuz1_eq_0_then_la1
+ beq __b2
+ // divr8u::@4
+ // rem = rem | 1
+ // [461] divr8u::rem#1 = divr8u::rem#0 | 1 -- vbuz1=vbuz1_bor_vbuc1
+ lda #1
+ ora.z rem
+ sta.z rem
+ // [462] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2]
+ // [462] phi divr8u::rem#6 = divr8u::rem#0 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy
+ // divr8u::@2
+ __b2:
+ // dividend = dividend << 1
+ // [463] divr8u::dividend#0 = divr8u::dividend#3 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z dividend
+ // quotient = quotient << 1
+ // [464] divr8u::quotient#1 = divr8u::quotient#3 << 1 -- vbuz1=vbuz1_rol_1
+ asl.z quotient
+ // if(rem>=divisor)
+ // [465] if(divr8u::rem#6divr8u::@3]
+ // [468] phi divr8u::return#0 = divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy
+ // [468] phi divr8u::rem#11 = divr8u::rem#6 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy
+ // divr8u::@3
+ __b3:
+ // for( char i : 0..7)
+ // [469] divr8u::i#1 = ++ divr8u::i#2 -- vbuz1=_inc_vbuz1
+ inc.z i
+ // [470] if(divr8u::i#1!=8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1
+ lda #8
+ cmp.z i
+ bne __b1
+ // divr8u::@return
+ // }
+ // [471] return
+ rts
+}
+ // cscroll
+// Scroll the entire screen if the cursor is beyond the last line
+cscroll: {
+ // if(conio_cursor_y==CONIO_HEIGHT)
+ // [472] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1
+ lda #$19
+ cmp.z conio_cursor_y
+ bne __breturn
+ // [473] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
+ // cscroll::@1
+ // memcpy(CONIO_SCREEN_TEXT, CONIO_SCREEN_TEXT+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
+ // [474] call memcpy
+ // [485] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
+ // [485] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN
+ sta.z memcpy.destination+1
+ // [485] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // [475] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
+ // cscroll::@2
+ // memcpy(CONIO_SCREEN_COLORS, CONIO_SCREEN_COLORS+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
+ // [476] call memcpy
+ // [485] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
+ // [485] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1
+ lda #COLORRAM
+ sta.z memcpy.destination+1
+ // [485] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1
+ lda #COLORRAM+$28
+ sta.z memcpy.source+1
+ jsr memcpy
+ // [477] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
+ // cscroll::@3
+ // memset(CONIO_SCREEN_TEXT+CONIO_BYTES-CONIO_WIDTH, ' ', CONIO_WIDTH)
+ // [478] call memset
+ // [495] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
+ // [495] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuz1=vbuc1
+ lda #' '
+ sta.z memset.c
+ // [495] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1
+ lda #DEFAULT_SCREEN+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ // cscroll::@4
+ // memset(CONIO_SCREEN_COLORS+CONIO_BYTES-CONIO_WIDTH, conio_textcolor, CONIO_WIDTH)
+ // [479] memset::c#1 = conio_textcolor -- vbuz1=vbuz2
+ lda.z conio_textcolor
+ sta.z memset.c
+ // [480] call memset
+ // [495] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
+ // [495] phi memset::c#4 = memset::c#1 [phi:cscroll::@4->memset#0] -- register_copy
+ // [495] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1
+ lda #COLORRAM+$19*$28-$28
+ sta.z memset.str+1
+ jsr memset
+ // cscroll::@5
+ // conio_line_text -= CONIO_WIDTH
+ // [481] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1
+ sec
+ lda.z conio_line_text
+ sbc #$28
+ sta.z conio_line_text
+ lda.z conio_line_text+1
+ sbc #0
+ sta.z conio_line_text+1
+ // conio_line_color -= CONIO_WIDTH
+ // [482] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1
+ sec
+ lda.z conio_line_color
+ sbc #$28
+ sta.z conio_line_color
+ lda.z conio_line_color+1
+ sbc #0
+ sta.z conio_line_color+1
+ // conio_cursor_y--;
+ // [483] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1
+ dec.z conio_cursor_y
+ // cscroll::@return
+ __breturn:
+ // }
+ // [484] return
+ rts
+}
+ // memcpy
+// Copy block of memory (forwards)
+// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
+// void * memcpy(__zp($b) void *destination, __zp($d) void *source, unsigned int num)
+memcpy: {
+ .label src_end = 9
+ .label dst = $b
+ .label src = $d
+ .label source = $d
+ .label destination = $b
+ // char* src_end = (char*)source+num
+ // [486] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
+ lda.z source
+ clc
+ adc #<$19*$28-$28
+ sta.z src_end
+ lda.z source+1
+ adc #>$19*$28-$28
+ sta.z src_end+1
+ // [487] memcpy::src#4 = (char *)memcpy::source#2
+ // [488] memcpy::dst#4 = (char *)memcpy::destination#2
+ // [489] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
+ // [489] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy
+ // [489] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy
+ // memcpy::@1
+ __b1:
+ // while(src!=src_end)
+ // [490] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1
+ lda.z src+1
+ cmp.z src_end+1
+ bne __b2
+ lda.z src
+ cmp.z src_end
+ bne __b2
+ // memcpy::@return
+ // }
+ // [491] return
+ rts
+ // memcpy::@2
+ __b2:
+ // *dst++ = *src++
+ // [492] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2
+ ldy #0
+ lda (src),y
+ sta (dst),y
+ // *dst++ = *src++;
+ // [493] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ // [494] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1
+ inc.z src
+ bne !+
+ inc.z src+1
+ !:
+ jmp __b1
+}
+ // memset
+// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
+// void * memset(__zp($b) void *str, __zp($10) char c, unsigned int num)
+memset: {
+ .label end = $12
+ .label dst = $b
+ .label c = $10
+ .label str = $b
+ // memset::@1
+ // char* end = (char*)str + num
+ // [496] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1
+ lda #$28
+ clc
+ adc.z str
+ sta.z end
+ lda #0
+ adc.z str+1
+ sta.z end+1
+ // [497] memset::dst#4 = (char *)memset::str#3
+ // [498] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
+ // [498] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
+ // memset::@2
+ __b2:
+ // for(char* dst = str; dst!=end; dst++)
+ // [499] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
+ lda.z dst+1
+ cmp.z end+1
+ bne __b3
+ lda.z dst
+ cmp.z end
+ bne __b3
+ // memset::@return
+ // }
+ // [500] return
+ rts
+ // memset::@3
+ __b3:
+ // *dst = c
+ // [501] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuz2
+ lda.z c
+ ldy #0
+ sta (dst),y
+ // for(char* dst = str; dst!=end; dst++)
+ // [502] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
+ inc.z dst
+ bne !+
+ inc.z dst+1
+ !:
+ jmp __b2
+}
+ // File Data
+.segment Data
+ // The digits used for numbers
+ DIGITS: .text "0123456789abcdef"
+ // Values of decimal digits
+ RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a
+ // [0..65536] 16-bit
+ points: .byte 0, 0, 0, 0
+ buffer: .byte 0, 0, 0, 0
+ // for unexpanded. 37888-4096 color for expanded
+ ducknumber: .byte $44, $55, $43, $4b, $3a
+ // DUCK:
+ chrono: .byte $54, $4d, $3a, $39
+ // TM:9
+ duck_udg: .byte $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0
+ // POKE CODES = 0,1,2,3,4; CHROUT CODES = 64, 65, 66, 67, 68 (with previous reverse_off "chrout(146)")
+ intro: .text @"\n\n\nDIFFICULTY\n----------\n\n\n"
+ .byte 0
+ levels: .text @"1.EASIEST\n\n3.EASY\n\n5.MEDIUM\n\n7.HARD\n\n9.EXPERT\n\n\n\n\n"
+ .byte 0
+ foot: .text @"PRESS: 1,3,5,7 or 9\n\n"
+ .byte 0
+ game_over: .text @"\n\n\n\nGAME OVER"
+ .byte 0
+ play_again: .text @"\n\n\nPlay Again (Y/N)?"
+ .byte 0
+ your_score: .text @"\n\n\nYour Score: "
+ .byte 0
+ high_score: .text @"\n\nHi-Score: "
+ .byte 0
+
diff --git a/src/test/ref/ducks-total.sym b/src/test/ref/ducks-total.sym
new file mode 100644
index 000000000..aec912a5a
--- /dev/null
+++ b/src/test/ref/ducks-total.sym
@@ -0,0 +1,440 @@
+__constant char * const COLORRAM = (char *) 55296
+__constant char * const DEFAULT_SCREEN = (char *) 1024
+__constant char DIGITS[] = "0123456789abcdef"z
+__constant const char LIGHT_BLUE = $e
+__constant char RADIX::BINARY = 2
+__constant char RADIX::DECIMAL = $a
+__constant char RADIX::HEXADECIMAL = $10
+__constant char RADIX::OCTAL = 8
+__constant unsigned int RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
+void __start()
+__constant const char brick = $e6
+__constant char buffer[] = { 0, 0, 0, 0 }
+__constant const unsigned int c = $7800
+__constant const char chrono[] = { $54, $4d, $3a, $39 }
+void chrono_restart()
+void chrout(volatile char petscii)
+__loadstore volatile char chrout::petscii // zp[1]:24 3.0310104636363637E7
+void clear_screen(char n , char m)
+unsigned int clear_screen::$4 // zp[2]:35 100001.0
+unsigned int clear_screen::$5 // zp[2]:9 66667.33333333333
+char clear_screen::m
+char clear_screen::n
+char clear_screen::n#5 // n zp[1]:8 12500.125
+void conio_c64_init()
+__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
+char conio_c64_init::line
+char conio_c64_init::line#0 // line zp[1]:76 11.0
+char conio_c64_init::line#2 // line zp[1]:76 22.0
+__loadstore char conio_cursor_x // zp[1]:39 200133.45333333334
+__loadstore char conio_cursor_y // zp[1]:29 3516593.4945054944
+__loadstore char *conio_line_color // zp[2]:30 2662771.1807228914
+__loadstore char *conio_line_text // zp[2]:32 2600117.7411764706
+__loadstore char conio_textcolor // zp[1]:34 1629048.4677419355
+void cputc(char c)
+char cputc::c
+char cputc::c#0 // c zp[1]:2 1050001.5
+void cputln()
+void cputs(const char *s)
+char cputs::c
+char cputs::c#1 // c zp[1]:2 100001.0
+const char *cputs::s
+const char *cputs::s#0 // s zp[2]:5 50000.5
+const char *cputs::s#10 // s zp[2]:5 150502.0
+const char *cputs::s#11 // s zp[2]:5 1001.0
+void cscroll()
+unsigned int div16u8u(unsigned int dividend , char divisor)
+unsigned int div16u8u::dividend
+unsigned int div16u8u::dividend#0 // dividend zp[2]:35 420000.60000000003
+char div16u8u::divisor
+__constant char div16u8u::divisor#0 = $3c // divisor
+unsigned int div16u8u::quotient
+char div16u8u::quotient_hi
+char div16u8u::quotient_hi#0 // quotient_hi zp[1]:2 333333.6666666667
+char div16u8u::quotient_lo
+char div16u8u::quotient_lo#0 // quotient_lo zp[1]:16 2000002.0
+unsigned int div16u8u::return
+unsigned int div16u8u::return#0 // return zp[2]:18 366667.3333333334
+unsigned int div16u8u::return#2 // return_1 zp[2]:48 9166.833333333332
+char divr8u(char dividend , char divisor , char rem)
+char divr8u::$1 // zp[1]:17 2.00000000002E11
+char divr8u::dividend
+char divr8u::dividend#0 // dividend zp[1]:3 2.500000000025E10
+char divr8u::dividend#1 // dividend zp[1]:3 2000002.0
+char divr8u::dividend#2 // dividend zp[1]:3 1000001.0
+char divr8u::dividend#3 // dividend zp[1]:3 5.0001666667333336E10
+char divr8u::dividend#5 // dividend zp[1]:3 1.2000003E7
+char divr8u::divisor
+char divr8u::i
+char divr8u::i#1 // i zp[1]:7 1.500000000015E11
+char divr8u::i#2 // i zp[1]:7 1.6666666666833334E10
+char divr8u::quotient
+char divr8u::quotient#1 // quotient zp[1]:16 1.500000000015E11
+char divr8u::quotient#2 // quotient zp[1]:16 1.00000000001E11
+char divr8u::quotient#3 // quotient zp[1]:16 2.8571428571714287E10
+char divr8u::rem
+char divr8u::rem#0 // rem zp[1]:15 1.00000000001E11
+char divr8u::rem#1 // rem zp[1]:15 2.00000000002E11
+char divr8u::rem#10 // rem zp[1]:15 1.1000002E7
+char divr8u::rem#11 // rem zp[1]:15 2.702711801846847E9
+char divr8u::rem#2 // rem zp[1]:15 2.00000000002E11
+char divr8u::rem#4 // rem zp[1]:15 2000002.0
+char divr8u::rem#5 // rem zp[1]:15 2.00010000003E11
+char divr8u::rem#6 // rem zp[1]:15 1.00000000001E11
+char divr8u::return
+char divr8u::return#0 // return zp[1]:16 5.000033333416667E10
+char divr8u::return#2 // return zp[1]:16 2000002.0
+char divr8u::return#3 // return zp[1]:16 2000002.0
+__constant const char down = $11
+unsigned int duck
+unsigned int duck#0 // duck zp[2]:22 6.6666667333333336E7
+unsigned int duck#1 // duck zp[2]:22 4237745.88135593
+__constant const char duck_udg[] = { $e, $1b, $3f, $1f, $f, 7, $f, $1f, 0, 0, 0, 0, 0, $c0, $70, $bc, $1f, $1d, $1e, $f, 3, 1, 1, 3, $ce, $1e, $7c, $f8, $e0, $40, $40, $e0, 0, 0, 0, 0, 0, 0, 0, 0 }
+__constant const char ducknumber[] = { $44, $55, $43, $4b, $3a }
+__constant const char foot[] = "PRESS: 1,3,5,7 or 9
+
+"
+__constant const char game_over[] = "
+
+
+
+GAME OVER"
+void gotoxy(char x , char y)
+char *gotoxy::$5 // zp[2]:72 20002.0
+char *gotoxy::$6 // zp[2]:44 20002.0
+unsigned int gotoxy::$7 // zp[2]:44 15001.5
+unsigned int gotoxy::$8 // zp[2]:70 20002.0
+unsigned int gotoxy::$9 // zp[2]:44 20002.0
+unsigned int gotoxy::line_offset
+unsigned int gotoxy::line_offset#0 // line_offset zp[2]:44 10001.0
+char gotoxy::x
+char gotoxy::y
+char gotoxy::y#2 // y zp[1]:76 22.0
+char gotoxy::y#4 // y zp[1]:76 6671.0
+char gotoxy::y#5 // y zp[1]:76 6667.333333333333
+__constant const char green = $1e
+__constant const char high_score[] = "
+
+Hi-Score: "
+unsigned int hiscore
+unsigned int hiscore#110 // hiscore_1 zp[2]:108 1.1744186046511627
+unsigned int hiscore#123 // hiscore_1 zp[2]:108 202.0
+unsigned int hiscore#124 // hiscore zp[2]:42 202.0
+unsigned int hiscore#19 // hiscore zp[2]:42 31.076923076923077
+__constant const char home = $13
+__constant const char intro[] = "
+
+
+DIFFICULTY
+----------
+
+
+"
+char j
+char j#11 // j zp[1]:50 7500.75
+char j#13 // j_1 zp[1]:85 1001.0
+char j#16 // j_2 zp[1]:86 1001.0
+char j#19 // j_3 zp[1]:104 1034.6666666666667
+char j#2 // j zp[1]:50 20002.0
+char j#3 // j_1 zp[1]:85 2002.0
+char j#5 // j_2 zp[1]:86 2002.0
+char k
+char k#1 // k zp[1]:99 2002.0
+char k#101 // k zp[1]:99 273.0
+__loadstore volatile char l // zp[1]:107 455.79148936170213
+__constant const char levels[] = "1.EASIEST
+
+3.EASY
+
+5.MEDIUM
+
+7.HARD
+
+9.EXPERT
+
+
+
+
+"
+__constant const char lock = 8
+__constant const char lower = $e
+__loadstore volatile char m // zp[1]:4 3.8961039106499544E16
+void main()
+unsigned int main::$104 // zp[2]:93 2500.25
+unsigned int main::$107 // zp[2]:95 2500.25
+unsigned int main::$110 // zp[2]:97 2500.25
+unsigned int main::$119 // zp[2]:74 6667.333333333333
+unsigned int main::$120 // zp[2]:81 10001.0
+unsigned int main::$122 // zp[2]:83 10001.0
+unsigned int main::$124 // zp[2]:74 10001.0
+unsigned int main::$125 // zp[2]:77 10001.0
+unsigned int main::$127 // zp[2]:58 10001.0
+unsigned int main::$128 // zp[2]:58 10001.0
+unsigned int main::$130 // zp[2]:60 10001.0
+unsigned int main::$131 // zp[2]:60 10001.0
+unsigned int main::$133 // zp[2]:62 10001.0
+unsigned int main::$134 // zp[2]:62 10001.0
+unsigned int main::$136 // zp[2]:79 10001.0
+unsigned int main::$138 // zp[2]:64 10001.0
+unsigned int main::$139 // zp[2]:64 10001.0
+unsigned int main::$141 // zp[2]:66 10001.0
+unsigned int main::$142 // zp[2]:66 10001.0
+unsigned int main::$144 // zp[2]:68 10001.0
+unsigned int main::$145 // zp[2]:68 10001.0
+unsigned int main::$150 // zp[2]:105 1001.0
+unsigned int main::$151 // zp[2]:87 2002.0
+unsigned int main::$152 // zp[2]:87 1001.0
+unsigned int main::$153 // zp[2]:89 2002.0
+unsigned int main::$154 // zp[2]:89 1001.0
+unsigned int main::$155 // zp[2]:91 2002.0
+unsigned int main::$156 // zp[2]:91 1001.0
+char main::$177 // zp[1]:8 2002.0
+unsigned int main::$179 // zp[2]:56 20002.0
+unsigned int main::$180 // zp[2]:46 20002.0
+char main::$26 // zp[1]:8 2002.0
+unsigned int main::$29 // zp[2]:5 2002.0
+unsigned int main::$3 // zp[2]:112 101.0
+unsigned int main::$35 // zp[2]:102 2002.0
+unsigned int main::$57 // zp[2]:100 2002.0
+unsigned int main::$61 // zp[2]:13 2.00000002E8
+unsigned int main::$66 // zp[2]:11 2.00000002E7
+unsigned int main::$69 // zp[2]:25 2.00000002E7
+unsigned int main::$72 // zp[2]:27 2.00000002E7
+char main::$78 // zp[1]:16 20002.0
+char main::$81 // zp[1]:7 20002.0
+char main::$84 // zp[1]:3 20002.0
+char main::$88 // zp[1]:54 20002.0
+char main::$92 // zp[1]:55 20002.0
+unsigned int main::$96 // zp[2]:46 15001.5
+unsigned int main::$97 // zp[2]:46 20002.0
+void * memcpy(void *destination , void *source , unsigned int num)
+void *memcpy::destination
+void *memcpy::destination#2 // destination zp[2]:11
+char *memcpy::dst
+char *memcpy::dst#1 // dst zp[2]:11 1.000000000001E12
+char *memcpy::dst#2 // dst zp[2]:11 1.0003333333346667E12
+char *memcpy::dst#4 // dst zp[2]:11 2.000000002E9
+unsigned int memcpy::num
+void *memcpy::return
+void *memcpy::source
+void *memcpy::source#2 // source zp[2]:13
+char *memcpy::src
+char *memcpy::src#1 // src zp[2]:13 2.000000000002E12
+char *memcpy::src#2 // src zp[2]:13 1.00025000000125E12
+char *memcpy::src#4 // src zp[2]:13 1.000000001E9
+char *memcpy::src_end
+char *memcpy::src_end#0 // src_end zp[2]:9 1.2512500000025E11
+void * memset(void *str , char c , unsigned int num)
+char memset::c
+char memset::c#1 // c zp[1]:16 2.00000002E8
+char memset::c#4 // c zp[1]:16 1.4287142857171426E11
+char *memset::dst
+char *memset::dst#1 // dst zp[2]:11 2.000000000002E12
+char *memset::dst#2 // dst zp[2]:11 1.3336666666683335E12
+char *memset::dst#4 // dst zp[2]:11 2.000000002E9
+char *memset::end
+char *memset::end#0 // end zp[2]:18 1.668333333336667E11
+unsigned int memset::num
+void *memset::return
+void *memset::str
+void *memset::str#3 // str zp[2]:11
+char n
+char n#1 // n zp[1]:51 20002.0
+char n#101 // n zp[1]:51 4429.142857142857
+char n#109 // n zp[1]:51 7.769230769230769
+char n#14 // n zp[1]:51 344.8620689655172
+char n#20 // n zp[1]:51 220.07272727272726
+char n#52 // n zp[1]:51 93.84375
+char n#89 // n zp[1]:51 35.644067796610166
+unsigned int peephole
+unsigned int peephole#12 // peephole zp[2]:52 617.7352941176471
+unsigned int peephole#52 // peephole zp[2]:52 62.5625
+__constant const char play_again[] = "
+
+
+Play Again (Y/N)?"
+__constant char points[] = { 0, 0, 0, 0 }
+void random(char k , char n)
+char random::$3 // zp[1]:2 5.5E17
+char random::k
+char random::k#0 // k zp[1]:3 500.5
+char random::k#4 // k zp[1]:3 2.00000000000000192E17
+char random::n
+char random::n#0 // n zp[1]:8 2002.0
+char random::n#4 // n zp[1]:8 2.00000000000002E16
+void read_chrono()
+unsigned int read_chrono::$0 // zp[2]:35 200002.0
+unsigned int read_chrono::$5 // zp[2]:9 200002.0
+__constant const char red = $1c
+char rem8u
+char rem8u#127 // rem8u zp[1]:15 11.6
+char rem8u#25 // rem8u zp[1]:15 220.07272727272726
+char rem8u#48 // rem8u zp[1]:15 93.84375
+__constant const char reverse_on = $12
+__constant const char right = $1d
+unsigned int score
+unsigned int score#13 // score zp[2]:42 70334.66666666666
+unsigned int score#19 // score zp[2]:42 1272.9090909090908
+unsigned int score#38 // score zp[2]:42 3843.0654205607475
+unsigned int score#4 // score zp[2]:42 2002.0
+unsigned int score#43 // score zp[2]:42 566.0943396226415
+unsigned int score#6 // score zp[2]:42 20002.0
+unsigned int score#8 // score zp[2]:42 10001.0
+unsigned int score#81 // score zp[2]:42 15001.5
+char textcolor(char color)
+char textcolor::color
+char textcolor::color#7 // color zp[1]:8 1001.0
+char textcolor::old
+char textcolor::return
+unsigned int time
+unsigned int time#11 // time zp[2]:48 20002.0
+unsigned int time#17 // time zp[2]:48 566.0943396226415
+unsigned int time#38 // time zp[2]:48 10001.0
+unsigned int tu
+unsigned int tu#1 // tu zp[2]:110 166.83333333333334
+unsigned int tu#13 // tu zp[2]:110 32.032
+void utoa(unsigned int value , char *buffer , char radix)
+char utoa::$10 // zp[1]:17 2.0000000002E10
+char utoa::$11 // zp[1]:2 2000002.0
+char *utoa::buffer
+char *utoa::buffer#10 // buffer zp[2]:13 2.857285714714286E9
+char *utoa::buffer#15 // buffer zp[2]:13 1.50000000015E10
+char *utoa::buffer#3 // buffer zp[2]:13 2000002.0
+char *utoa::buffer#4 // buffer zp[2]:13 2.0000000002E10
+char utoa::digit
+char utoa::digit#1 // digit zp[1]:3 2.0000000002E10
+char utoa::digit#2 // digit zp[1]:3 2.857142857428571E9
+unsigned int utoa::digit_value
+unsigned int utoa::digit_value#0 // digit_value zp[2]:9 6.0000000006E9
+unsigned int *utoa::digit_values
+char utoa::max_digits
+char utoa::radix
+char utoa::started
+char utoa::started#2 // started zp[1]:16 5.0000000005E9
+char utoa::started#4 // started zp[1]:16 1.0000000001E10
+unsigned int utoa::value
+unsigned int utoa::value#0 // value zp[2]:5 1.0000000001E10
+unsigned int utoa::value#1 // value zp[2]:5 200002.0
+unsigned int utoa::value#10 // value zp[2]:5 1100103.0
+unsigned int utoa::value#2 // value zp[2]:5 202.0
+unsigned int utoa::value#3 // value zp[2]:5 5.714428572142858E9
+unsigned int utoa::value#7 // value zp[2]:5 1.50000000015E10
+unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
+char *utoa_append::buffer
+char *utoa_append::buffer#0 // buffer zp[2]:13 1.375000000025E10
+char utoa_append::digit
+char utoa_append::digit#1 // digit zp[1]:7 1.0E16
+char utoa_append::digit#2 // digit zp[1]:7 1.000005E16
+unsigned int utoa_append::return
+unsigned int utoa_append::return#0 // return zp[2]:5 2.0000000002E10
+unsigned int utoa_append::sub
+unsigned int utoa_append::sub#0 // sub zp[2]:9 3.333335E15
+unsigned int utoa_append::value
+unsigned int utoa_append::value#0 // value zp[2]:5 3.6666666667333336E10
+unsigned int utoa_append::value#1 // value zp[2]:5 2.0E16
+unsigned int utoa_append::value#2 // value zp[2]:5 5.000018333333334E15
+void wait(char n)
+char wait::n
+char wait::n#6 // n zp[1]:3 1.25000000125E8
+void write_score()
+unsigned int y
+unsigned int y#0 // y zp[2]:40 20002.0
+unsigned int y#1 // y zp[2]:40 20002.0
+unsigned int y#10 // y zp[2]:40 13334.666666666666
+unsigned int y#11 // y zp[2]:40 13334.666666666666
+unsigned int y#114 // y zp[2]:40 11.6
+unsigned int y#12 // y zp[2]:40 13334.666666666666
+unsigned int y#13 // y zp[2]:40 2285.9428571428575
+unsigned int y#130 // y zp[2]:40 20002.0
+unsigned int y#141 // y_1 zp[2]:52 20002.0
+unsigned int y#18 // y zp[2]:40 509.61904761904765
+unsigned int y#2 // y zp[2]:40 20002.0
+unsigned int y#3 // y zp[2]:40 20002.0
+unsigned int y#35 // y_1 zp[2]:52 2353.1764705882347
+unsigned int y#49 // y zp[2]:40 93.84375
+__constant const char yellow = $9e
+__constant const char your_score[] = "
+
+
+Your Score: "
+unsigned int z
+unsigned int z#1 // z zp[2]:37 200002.0
+unsigned int z#100 // z_1 zp[2]:20 1050.15
+unsigned int z#102 // z_1 zp[2]:20 93.84375
+unsigned int z#128 // z_1 zp[2]:20 93.84375
+unsigned int z#2 // z zp[2]:37 66667.33333333333
+unsigned int z#23 // z_1 zp[2]:20 1.0333333334666666E10
+unsigned int z#25 // z_1 zp[2]:20 2.564438476923077E7
+unsigned int z#28 // z_1 zp[2]:20 266.93333333333334
+unsigned int z#4 // z_1 zp[2]:20 2.0000000002E10
+unsigned int z#48 // z_1 zp[2]:20 857.2285714285714
+unsigned int z#53 // z_1 zp[2]:20 70503.0
+unsigned int z#9 // z_1 zp[2]:20 2002.0
+
+zp[1]:76 [ conio_c64_init::line#2 conio_c64_init::line#0 gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ]
+zp[2]:108 [ hiscore#110 hiscore#123 ]
+zp[1]:99 [ k#101 k#1 ]
+zp[1]:85 [ j#13 j#3 ]
+zp[1]:86 [ j#16 j#5 ]
+zp[2]:110 [ tu#13 tu#1 ]
+zp[2]:52 [ peephole#52 peephole#12 y#35 y#141 ]
+zp[1]:51 [ n#52 n#89 n#109 n#20 n#101 n#14 n#1 ]
+zp[2]:48 [ time#11 time#17 time#38 div16u8u::return#2 ]
+zp[2]:40 [ y#13 y#12 y#11 y#10 y#0 y#49 y#114 y#18 y#130 y#1 y#2 y#3 ]
+zp[2]:42 [ score#81 hiscore#19 hiscore#124 score#19 score#43 score#38 score#8 score#13 score#4 score#6 ]
+zp[1]:50 [ j#11 j#2 ]
+zp[2]:37 [ z#2 z#1 ]
+zp[1]:8 [ random::n#4 random::n#0 main::$26 main::$177 textcolor::color#7 clear_screen::n#5 ]
+zp[2]:20 [ z#53 z#48 z#100 z#102 z#128 z#28 z#9 z#25 z#23 z#4 ]
+zp[1]:15 [ divr8u::rem#5 divr8u::rem#10 divr8u::rem#4 rem8u#48 rem8u#127 rem8u#25 divr8u::rem#11 divr8u::rem#6 divr8u::rem#0 divr8u::rem#1 divr8u::rem#2 ]
+zp[1]:39 [ conio_cursor_x ]
+zp[1]:29 [ conio_cursor_y ]
+zp[2]:32 [ conio_line_text ]
+zp[2]:30 [ conio_line_color ]
+zp[1]:34 [ conio_textcolor ]
+zp[1]:107 [ l ]
+zp[1]:4 [ m ]
+zp[1]:24 [ chrout::petscii ]
+zp[2]:5 [ main::$29 utoa::value#3 utoa::value#7 utoa::value#10 utoa::value#2 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 cputs::s#10 cputs::s#11 cputs::s#0 ]
+zp[2]:22 [ duck#0 duck#1 ]
+zp[2]:13 [ main::$61 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 utoa::buffer#10 utoa::buffer#15 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ]
+zp[2]:11 [ main::$66 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
+zp[2]:25 [ main::$69 ]
+zp[2]:27 [ main::$72 ]
+zp[2]:105 [ main::$150 ]
+zp[2]:87 [ main::$151 main::$152 ]
+zp[2]:89 [ main::$153 main::$154 ]
+zp[2]:91 [ main::$155 main::$156 ]
+zp[1]:104 [ j#19 ]
+zp[1]:16 [ main::$78 memset::c#4 memset::c#1 divr8u::quotient#3 divr8u::return#0 divr8u::quotient#1 divr8u::quotient#2 divr8u::return#2 divr8u::return#3 div16u8u::quotient_lo#0 utoa::started#2 utoa::started#4 ]
+zp[1]:7 [ main::$81 divr8u::i#2 divr8u::i#1 utoa_append::digit#2 utoa_append::digit#1 ]
+zp[1]:3 [ main::$84 divr8u::dividend#3 divr8u::dividend#5 divr8u::dividend#1 divr8u::dividend#2 divr8u::dividend#0 utoa::digit#2 utoa::digit#1 wait::n#6 random::k#4 random::k#0 ]
+zp[1]:54 [ main::$88 ]
+zp[1]:55 [ main::$92 ]
+zp[2]:46 [ main::$96 main::$180 main::$97 ]
+zp[2]:56 [ main::$179 ]
+zp[2]:93 [ main::$104 ]
+zp[2]:95 [ main::$107 ]
+zp[2]:97 [ main::$110 ]
+zp[2]:77 [ main::$125 ]
+zp[2]:58 [ main::$127 main::$128 ]
+zp[2]:60 [ main::$130 main::$131 ]
+zp[2]:62 [ main::$133 main::$134 ]
+zp[2]:79 [ main::$136 ]
+zp[2]:64 [ main::$138 main::$139 ]
+zp[2]:66 [ main::$141 main::$142 ]
+zp[2]:68 [ main::$144 main::$145 ]
+zp[2]:74 [ main::$119 main::$124 ]
+zp[2]:81 [ main::$120 ]
+zp[2]:83 [ main::$122 ]
+zp[2]:100 [ main::$57 ]
+zp[2]:102 [ main::$35 ]
+zp[2]:112 [ main::$3 ]
+zp[2]:44 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
+zp[2]:70 [ gotoxy::$8 ]
+zp[2]:72 [ gotoxy::$5 ]
+zp[2]:35 [ read_chrono::$0 div16u8u::dividend#0 clear_screen::$4 ]
+zp[1]:2 [ div16u8u::quotient_hi#0 utoa::$11 random::$3 cputs::c#1 cputc::c#0 ]
+zp[1]:17 [ divr8u::$1 utoa::$10 ]
+zp[2]:9 [ memcpy::src_end#0 read_chrono::$5 utoa::digit_value#0 utoa_append::sub#0 clear_screen::$5 ]
+zp[2]:18 [ memset::end#0 div16u8u::return#0 ]
diff --git a/src/test/ref/pointer-swap.asm b/src/test/ref/pointer-swap.asm
new file mode 100644
index 000000000..d1d068a09
--- /dev/null
+++ b/src/test/ref/pointer-swap.asm
@@ -0,0 +1,124 @@
+ // Commodore 64 PRG executable file
+.file [name="pointer-swap.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ .label screen = 2
+ .label tempbuffer = $c
+ .label newbuffer = $a
+ .label tempbuffer_1 = 6
+ .label newbuffer_1 = 8
+ .label oldbuffer = 4
+.segment Code
+main: {
+ // print()
+ lda #buffer2
+ sta.z oldbuffer+1
+ lda #buffer1
+ sta.z newbuffer_1+1
+ lda #<$400
+ sta.z screen
+ lda #>$400
+ sta.z screen+1
+ lda #<0
+ sta.z tempbuffer_1
+ sta.z tempbuffer_1+1
+ jsr print
+ // swap()
+ lda #buffer2
+ sta.z newbuffer+1
+ lda #buffer1
+ sta.z tempbuffer+1
+ jsr swap
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // swap()
+ jsr swap
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // swap()
+ jsr swap
+ // }
+ rts
+}
+print: {
+ // (char)tempbuffer&0x0f
+ lda.z tempbuffer_1
+ and #$f
+ // screen[0] = hextab[(char)tempbuffer&0x0f]
+ tay
+ lda hextab,y
+ ldy #0
+ sta (screen),y
+ // (char)newbuffer&0x0f
+ lda.z newbuffer_1
+ and #$f
+ // screen[2] = hextab[(char)newbuffer&0x0f]
+ tay
+ lda hextab,y
+ ldy #2
+ sta (screen),y
+ // (char)oldbuffer&0x0f
+ lda.z oldbuffer
+ and #$f
+ // screen[4] = hextab[(char)oldbuffer&0x0f]
+ tay
+ lda hextab,y
+ ldy #4
+ sta (screen),y
+ // screen += 40
+ lda #$28
+ clc
+ adc.z screen
+ sta.z screen
+ bcc !+
+ inc.z screen+1
+ !:
+ // }
+ rts
+}
+swap: {
+ lda.z tempbuffer
+ sta.z tempbuffer_1
+ lda.z tempbuffer+1
+ sta.z tempbuffer_1+1
+ lda.z newbuffer
+ sta.z newbuffer_1
+ lda.z newbuffer+1
+ sta.z newbuffer_1+1
+ lda.z tempbuffer
+ sta.z oldbuffer
+ lda.z tempbuffer+1
+ sta.z oldbuffer+1
+ // print()
+ jsr print
+ // }
+ rts
+}
+.segment Data
+ buffer1: .fill $a, 0
+ buffer2: .fill $a, 0
+ hextab: .text "0123456789abcdef"
diff --git a/src/test/ref/pointer-swap.cfg b/src/test/ref/pointer-swap.cfg
new file mode 100644
index 000000000..fcdd2bd78
--- /dev/null
+++ b/src/test/ref/pointer-swap.cfg
@@ -0,0 +1,57 @@
+
+void main()
+main: scope:[main] from
+ [0] phi()
+ [1] call print
+ to:main::@1
+main::@1: scope:[main] from main
+ [2] phi()
+ [3] call swap
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [4] tempbuffer#22 = newbuffer#0
+ [5] newbuffer#23 = tempbuffer#0
+ [6] call swap
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ [7] tempbuffer#23 = newbuffer#0
+ [8] newbuffer#24 = tempbuffer#0
+ [9] call swap
+ to:main::@return
+main::@return: scope:[main] from main::@3
+ [10] return
+ to:@return
+
+void print()
+print: scope:[print] from main swap
+ [11] oldbuffer#9 = phi( main/buffer2, swap/oldbuffer#22 )
+ [11] newbuffer#9 = phi( main/buffer1, swap/newbuffer#22 )
+ [11] screen#12 = phi( main/(char *) 1024, swap/screen#0 )
+ [11] tempbuffer#9 = phi( main/(char *) 0, swap/tempbuffer#21 )
+ [12] print::$3 = (char)tempbuffer#9
+ [13] print::$0 = print::$3 & $f
+ [14] *screen#12 = hextab[print::$0]
+ [15] print::$4 = (char)newbuffer#9
+ [16] print::$1 = print::$4 & $f
+ [17] screen#12[2] = hextab[print::$1]
+ [18] print::$5 = (char)oldbuffer#9
+ [19] print::$2 = print::$5 & $f
+ [20] screen#12[4] = hextab[print::$2]
+ [21] screen#0 = screen#12 + $28
+ to:print::@return
+print::@return: scope:[print] from print
+ [22] return
+ to:@return
+
+void swap()
+swap: scope:[swap] from main::@1 main::@2 main::@3
+ [23] newbuffer#0 = phi( main::@1/buffer2, main::@2/newbuffer#23, main::@3/newbuffer#24 )
+ [23] tempbuffer#0 = phi( main::@1/buffer1, main::@2/tempbuffer#22, main::@3/tempbuffer#23 )
+ [24] tempbuffer#21 = tempbuffer#0
+ [25] newbuffer#22 = newbuffer#0
+ [26] oldbuffer#22 = tempbuffer#0
+ [27] call print
+ to:swap::@return
+swap::@return: scope:[swap] from swap
+ [28] return
+ to:@return
diff --git a/src/test/ref/pointer-swap.log b/src/test/ref/pointer-swap.log
new file mode 100644
index 000000000..3044bc33c
--- /dev/null
+++ b/src/test/ref/pointer-swap.log
@@ -0,0 +1,1019 @@
+Inlined call call __init
+
+CONTROL FLOW GRAPH SSA
+
+void print()
+print: scope:[print] from main swap
+ oldbuffer#9 = phi( main/oldbuffer#18, swap/oldbuffer#0 )
+ newbuffer#9 = phi( main/newbuffer#18, swap/newbuffer#0 )
+ screen#12 = phi( main/screen#23, swap/screen#24 )
+ tempbuffer#9 = phi( main/tempbuffer#17, swap/tempbuffer#0 )
+ print::$3 = (char)tempbuffer#9
+ print::$0 = print::$3 & $f
+ screen#12[0] = hextab[print::$0]
+ print::$4 = (char)newbuffer#9
+ print::$1 = print::$4 & $f
+ screen#12[2] = hextab[print::$1]
+ print::$5 = (char)oldbuffer#9
+ print::$2 = print::$5 & $f
+ screen#12[4] = hextab[print::$2]
+ screen#0 = screen#12 + $28
+ to:print::@return
+print::@return: scope:[print] from print
+ screen#13 = phi( print/screen#0 )
+ screen#1 = screen#13
+ return
+ to:@return
+
+void swap()
+swap: scope:[swap] from main::@1 main::@2 main::@3
+ screen#24 = phi( main::@1/screen#4, main::@2/screen#5, main::@3/screen#6 )
+ oldbuffer#10 = phi( main::@1/oldbuffer#19, main::@2/oldbuffer#2, main::@3/oldbuffer#3 )
+ newbuffer#10 = phi( main::@1/newbuffer#19, main::@2/newbuffer#2, main::@3/newbuffer#3 )
+ tempbuffer#0 = newbuffer#10
+ newbuffer#0 = oldbuffer#10
+ oldbuffer#0 = tempbuffer#0
+ call print
+ to:swap::@1
+swap::@1: scope:[swap] from swap
+ oldbuffer#20 = phi( swap/oldbuffer#0 )
+ newbuffer#20 = phi( swap/newbuffer#0 )
+ tempbuffer#18 = phi( swap/tempbuffer#0 )
+ screen#14 = phi( swap/screen#1 )
+ screen#2 = screen#14
+ to:swap::@return
+swap::@return: scope:[swap] from swap::@1
+ screen#15 = phi( swap::@1/screen#2 )
+ oldbuffer#11 = phi( swap::@1/oldbuffer#20 )
+ newbuffer#11 = phi( swap::@1/newbuffer#20 )
+ tempbuffer#10 = phi( swap::@1/tempbuffer#18 )
+ tempbuffer#1 = tempbuffer#10
+ newbuffer#1 = newbuffer#11
+ oldbuffer#1 = oldbuffer#11
+ screen#3 = screen#15
+ return
+ to:@return
+
+void main()
+main: scope:[main] from __start::@1
+ oldbuffer#18 = phi( __start::@1/oldbuffer#21 )
+ newbuffer#18 = phi( __start::@1/newbuffer#21 )
+ screen#23 = phi( __start::@1/screen#25 )
+ tempbuffer#17 = phi( __start::@1/tempbuffer#20 )
+ call print
+ to:main::@1
+main::@1: scope:[main] from main
+ tempbuffer#19 = phi( main/tempbuffer#17 )
+ oldbuffer#19 = phi( main/oldbuffer#18 )
+ newbuffer#19 = phi( main/newbuffer#18 )
+ screen#16 = phi( main/screen#1 )
+ screen#4 = screen#16
+ call swap
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ screen#17 = phi( main::@1/screen#3 )
+ oldbuffer#12 = phi( main::@1/oldbuffer#1 )
+ newbuffer#12 = phi( main::@1/newbuffer#1 )
+ tempbuffer#11 = phi( main::@1/tempbuffer#1 )
+ tempbuffer#2 = tempbuffer#11
+ newbuffer#2 = newbuffer#12
+ oldbuffer#2 = oldbuffer#12
+ screen#5 = screen#17
+ call swap
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ screen#18 = phi( main::@2/screen#3 )
+ oldbuffer#13 = phi( main::@2/oldbuffer#1 )
+ newbuffer#13 = phi( main::@2/newbuffer#1 )
+ tempbuffer#12 = phi( main::@2/tempbuffer#1 )
+ tempbuffer#3 = tempbuffer#12
+ newbuffer#3 = newbuffer#13
+ oldbuffer#3 = oldbuffer#13
+ screen#6 = screen#18
+ call swap
+ to:main::@4
+main::@4: scope:[main] from main::@3
+ screen#19 = phi( main::@3/screen#3 )
+ oldbuffer#14 = phi( main::@3/oldbuffer#1 )
+ newbuffer#14 = phi( main::@3/newbuffer#1 )
+ tempbuffer#13 = phi( main::@3/tempbuffer#1 )
+ tempbuffer#4 = tempbuffer#13
+ newbuffer#4 = newbuffer#14
+ oldbuffer#4 = oldbuffer#14
+ screen#7 = screen#19
+ to:main::@return
+main::@return: scope:[main] from main::@4
+ oldbuffer#15 = phi( main::@4/oldbuffer#4 )
+ newbuffer#15 = phi( main::@4/newbuffer#4 )
+ tempbuffer#14 = phi( main::@4/tempbuffer#4 )
+ screen#20 = phi( main::@4/screen#7 )
+ screen#8 = screen#20
+ tempbuffer#5 = tempbuffer#14
+ newbuffer#5 = newbuffer#15
+ oldbuffer#5 = oldbuffer#15
+ return
+ to:@return
+
+void __start()
+__start: scope:[__start] from
+ to:__start::__init1
+__start::__init1: scope:[__start] from __start
+ newbuffer#6 = buffer1
+ oldbuffer#6 = buffer2
+ tempbuffer#6 = (char *) 0
+ screen#9 = (char *)$400
+ to:__start::@1
+__start::@1: scope:[__start] from __start::__init1
+ oldbuffer#21 = phi( __start::__init1/oldbuffer#6 )
+ newbuffer#21 = phi( __start::__init1/newbuffer#6 )
+ tempbuffer#20 = phi( __start::__init1/tempbuffer#6 )
+ screen#25 = phi( __start::__init1/screen#9 )
+ call main
+ to:__start::@2
+__start::@2: scope:[__start] from __start::@1
+ oldbuffer#16 = phi( __start::@1/oldbuffer#5 )
+ newbuffer#16 = phi( __start::@1/newbuffer#5 )
+ tempbuffer#15 = phi( __start::@1/tempbuffer#5 )
+ screen#21 = phi( __start::@1/screen#8 )
+ screen#10 = screen#21
+ tempbuffer#7 = tempbuffer#15
+ newbuffer#7 = newbuffer#16
+ oldbuffer#7 = oldbuffer#16
+ to:__start::@return
+__start::@return: scope:[__start] from __start::@2
+ screen#22 = phi( __start::@2/screen#10 )
+ tempbuffer#16 = phi( __start::@2/tempbuffer#7 )
+ oldbuffer#17 = phi( __start::@2/oldbuffer#7 )
+ newbuffer#17 = phi( __start::@2/newbuffer#7 )
+ newbuffer#8 = newbuffer#17
+ oldbuffer#8 = oldbuffer#17
+ tempbuffer#8 = tempbuffer#16
+ screen#11 = screen#22
+ return
+ to:@return
+
+SYMBOL TABLE SSA
+void __start()
+__constant char buffer1[$a] = { fill( $a, 0) }
+__constant char buffer2[$a] = { fill( $a, 0) }
+__constant char hextab[] = "0123456789abcdef"z
+void main()
+char *newbuffer
+char *newbuffer#0
+char *newbuffer#1
+char *newbuffer#10
+char *newbuffer#11
+char *newbuffer#12
+char *newbuffer#13
+char *newbuffer#14
+char *newbuffer#15
+char *newbuffer#16
+char *newbuffer#17
+char *newbuffer#18
+char *newbuffer#19
+char *newbuffer#2
+char *newbuffer#20
+char *newbuffer#21
+char *newbuffer#3
+char *newbuffer#4
+char *newbuffer#5
+char *newbuffer#6
+char *newbuffer#7
+char *newbuffer#8
+char *newbuffer#9
+char *oldbuffer
+char *oldbuffer#0
+char *oldbuffer#1
+char *oldbuffer#10
+char *oldbuffer#11
+char *oldbuffer#12
+char *oldbuffer#13
+char *oldbuffer#14
+char *oldbuffer#15
+char *oldbuffer#16
+char *oldbuffer#17
+char *oldbuffer#18
+char *oldbuffer#19
+char *oldbuffer#2
+char *oldbuffer#20
+char *oldbuffer#21
+char *oldbuffer#3
+char *oldbuffer#4
+char *oldbuffer#5
+char *oldbuffer#6
+char *oldbuffer#7
+char *oldbuffer#8
+char *oldbuffer#9
+void print()
+number print::$0
+number print::$1
+number print::$2
+char print::$3
+char print::$4
+char print::$5
+char *screen
+char *screen#0
+char *screen#1
+char *screen#10
+char *screen#11
+char *screen#12
+char *screen#13
+char *screen#14
+char *screen#15
+char *screen#16
+char *screen#17
+char *screen#18
+char *screen#19
+char *screen#2
+char *screen#20
+char *screen#21
+char *screen#22
+char *screen#23
+char *screen#24
+char *screen#25
+char *screen#3
+char *screen#4
+char *screen#5
+char *screen#6
+char *screen#7
+char *screen#8
+char *screen#9
+void swap()
+char *tempbuffer
+char *tempbuffer#0
+char *tempbuffer#1
+char *tempbuffer#10
+char *tempbuffer#11
+char *tempbuffer#12
+char *tempbuffer#13
+char *tempbuffer#14
+char *tempbuffer#15
+char *tempbuffer#16
+char *tempbuffer#17
+char *tempbuffer#18
+char *tempbuffer#19
+char *tempbuffer#2
+char *tempbuffer#20
+char *tempbuffer#3
+char *tempbuffer#4
+char *tempbuffer#5
+char *tempbuffer#6
+char *tempbuffer#7
+char *tempbuffer#8
+char *tempbuffer#9
+
+Adding number conversion cast (unumber) $f in print::$0 = print::$3 & $f
+Adding number conversion cast (unumber) print::$0 in print::$0 = print::$3 & (unumber)$f
+Adding number conversion cast (unumber) 0 in screen#12[0] = hextab[print::$0]
+Adding number conversion cast (unumber) $f in print::$1 = print::$4 & $f
+Adding number conversion cast (unumber) print::$1 in print::$1 = print::$4 & (unumber)$f
+Adding number conversion cast (unumber) 2 in screen#12[2] = hextab[print::$1]
+Adding number conversion cast (unumber) $f in print::$2 = print::$5 & $f
+Adding number conversion cast (unumber) print::$2 in print::$2 = print::$5 & (unumber)$f
+Adding number conversion cast (unumber) 4 in screen#12[4] = hextab[print::$2]
+Adding number conversion cast (unumber) $28 in screen#0 = screen#12 + $28
+Successful SSA optimization PassNAddNumberTypeConversions
+Simplifying constant integer cast $f
+Simplifying constant integer cast 0
+Simplifying constant integer cast $f
+Simplifying constant integer cast 2
+Simplifying constant integer cast $f
+Simplifying constant integer cast 4
+Simplifying constant integer cast $28
+Simplifying constant pointer cast (char *) 1024
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (char) $f
+Finalized unsigned number type (char) 0
+Finalized unsigned number type (char) $f
+Finalized unsigned number type (char) 2
+Finalized unsigned number type (char) $f
+Finalized unsigned number type (char) 4
+Finalized unsigned number type (char) $28
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inferred type updated to char in print::$0 = print::$3 & $f
+Inferred type updated to char in print::$1 = print::$4 & $f
+Inferred type updated to char in print::$2 = print::$5 & $f
+Alias screen#0 = screen#13 screen#1
+Alias tempbuffer#0 = newbuffer#10 oldbuffer#0 tempbuffer#18 oldbuffer#20 tempbuffer#10 oldbuffer#11 tempbuffer#1 oldbuffer#1
+Alias newbuffer#0 = oldbuffer#10 newbuffer#20 newbuffer#11 newbuffer#1
+Alias screen#14 = screen#2 screen#15 screen#3
+Alias newbuffer#18 = newbuffer#19
+Alias oldbuffer#18 = oldbuffer#19
+Alias tempbuffer#17 = tempbuffer#19
+Alias screen#16 = screen#4
+Alias tempbuffer#11 = tempbuffer#2
+Alias newbuffer#12 = newbuffer#2
+Alias oldbuffer#12 = oldbuffer#2
+Alias screen#17 = screen#5
+Alias tempbuffer#12 = tempbuffer#3
+Alias newbuffer#13 = newbuffer#3
+Alias oldbuffer#13 = oldbuffer#3
+Alias screen#18 = screen#6
+Alias tempbuffer#13 = tempbuffer#4 tempbuffer#14 tempbuffer#5
+Alias newbuffer#14 = newbuffer#4 newbuffer#15 newbuffer#5
+Alias oldbuffer#14 = oldbuffer#4 oldbuffer#15 oldbuffer#5
+Alias screen#19 = screen#7 screen#20 screen#8
+Alias screen#25 = screen#9
+Alias tempbuffer#20 = tempbuffer#6
+Alias newbuffer#21 = newbuffer#6
+Alias oldbuffer#21 = oldbuffer#6
+Alias screen#10 = screen#21 screen#22 screen#11
+Alias tempbuffer#15 = tempbuffer#7 tempbuffer#16 tempbuffer#8
+Alias newbuffer#16 = newbuffer#7 newbuffer#17 newbuffer#8
+Alias oldbuffer#16 = oldbuffer#7 oldbuffer#17 oldbuffer#8
+Successful SSA optimization Pass2AliasElimination
+Identical Phi Values screen#14 screen#0
+Identical Phi Values tempbuffer#17 tempbuffer#20
+Identical Phi Values screen#23 screen#25
+Identical Phi Values newbuffer#18 newbuffer#21
+Identical Phi Values oldbuffer#18 oldbuffer#21
+Identical Phi Values screen#16 screen#0
+Identical Phi Values tempbuffer#11 tempbuffer#0
+Identical Phi Values newbuffer#12 newbuffer#0
+Identical Phi Values oldbuffer#12 tempbuffer#0
+Identical Phi Values screen#17 screen#14
+Identical Phi Values tempbuffer#12 tempbuffer#0
+Identical Phi Values newbuffer#13 newbuffer#0
+Identical Phi Values oldbuffer#13 tempbuffer#0
+Identical Phi Values screen#18 screen#14
+Identical Phi Values tempbuffer#13 tempbuffer#0
+Identical Phi Values newbuffer#14 newbuffer#0
+Identical Phi Values oldbuffer#14 tempbuffer#0
+Identical Phi Values screen#19 screen#14
+Identical Phi Values screen#10 screen#19
+Identical Phi Values tempbuffer#15 tempbuffer#13
+Identical Phi Values newbuffer#16 newbuffer#14
+Identical Phi Values oldbuffer#16 oldbuffer#14
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identical Phi Values screen#24 screen#0
+Successful SSA optimization Pass2IdenticalPhiElimination
+Constant newbuffer#21 = buffer1
+Constant oldbuffer#21 = buffer2
+Constant tempbuffer#20 = (char *) 0
+Constant screen#25 = (char *) 1024
+Successful SSA optimization Pass2ConstantIdentification
+Simplifying expression containing zero screen#12 in [3] screen#12[0] = hextab[print::$0]
+Successful SSA optimization PassNSimplifyExpressionWithZero
+Removing unused procedure __start
+Removing unused procedure block __start
+Removing unused procedure block __start::__init1
+Removing unused procedure block __start::@1
+Removing unused procedure block __start::@2
+Removing unused procedure block __start::@return
+Successful SSA optimization PassNEliminateEmptyStart
+Inlining constant with var siblings newbuffer#21
+Inlining constant with var siblings oldbuffer#21
+Inlining constant with var siblings tempbuffer#20
+Inlining constant with var siblings screen#25
+Constant inlined oldbuffer#21 = buffer2
+Constant inlined screen#25 = (char *) 1024
+Constant inlined tempbuffer#20 = (char *) 0
+Constant inlined newbuffer#21 = buffer1
+Successful SSA optimization Pass2ConstantInlining
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Finalized unsigned number type (char) $a
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Adding NOP phi() at start of main
+Adding NOP phi() at start of main::@1
+Adding NOP phi() at start of main::@4
+Adding NOP phi() at start of swap::@1
+CALL GRAPH
+Calls in [main] to print:1 swap:3 swap:6 swap:9
+Calls in [swap] to print:29
+
+Created 6 initial phi equivalence classes
+Not coalescing [4] tempbuffer#22 = newbuffer#0
+Not coalescing [5] newbuffer#23 = tempbuffer#0
+Not coalescing [7] tempbuffer#23 = newbuffer#0
+Not coalescing [8] newbuffer#24 = tempbuffer#0
+Not coalescing [25] tempbuffer#21 = tempbuffer#0
+Coalesced [26] screen#26 = screen#0
+Not coalescing [27] newbuffer#22 = newbuffer#0
+Not coalescing [28] oldbuffer#22 = tempbuffer#0
+Coalesced down to 6 phi equivalence classes
+Culled Empty Block label main::@4
+Culled Empty Block label swap::@1
+Adding NOP phi() at start of main
+Adding NOP phi() at start of main::@1
+
+FINAL CONTROL FLOW GRAPH
+
+void main()
+main: scope:[main] from
+ [0] phi()
+ [1] call print
+ to:main::@1
+main::@1: scope:[main] from main
+ [2] phi()
+ [3] call swap
+ to:main::@2
+main::@2: scope:[main] from main::@1
+ [4] tempbuffer#22 = newbuffer#0
+ [5] newbuffer#23 = tempbuffer#0
+ [6] call swap
+ to:main::@3
+main::@3: scope:[main] from main::@2
+ [7] tempbuffer#23 = newbuffer#0
+ [8] newbuffer#24 = tempbuffer#0
+ [9] call swap
+ to:main::@return
+main::@return: scope:[main] from main::@3
+ [10] return
+ to:@return
+
+void print()
+print: scope:[print] from main swap
+ [11] oldbuffer#9 = phi( main/buffer2, swap/oldbuffer#22 )
+ [11] newbuffer#9 = phi( main/buffer1, swap/newbuffer#22 )
+ [11] screen#12 = phi( main/(char *) 1024, swap/screen#0 )
+ [11] tempbuffer#9 = phi( main/(char *) 0, swap/tempbuffer#21 )
+ [12] print::$3 = (char)tempbuffer#9
+ [13] print::$0 = print::$3 & $f
+ [14] *screen#12 = hextab[print::$0]
+ [15] print::$4 = (char)newbuffer#9
+ [16] print::$1 = print::$4 & $f
+ [17] screen#12[2] = hextab[print::$1]
+ [18] print::$5 = (char)oldbuffer#9
+ [19] print::$2 = print::$5 & $f
+ [20] screen#12[4] = hextab[print::$2]
+ [21] screen#0 = screen#12 + $28
+ to:print::@return
+print::@return: scope:[print] from print
+ [22] return
+ to:@return
+
+void swap()
+swap: scope:[swap] from main::@1 main::@2 main::@3
+ [23] newbuffer#0 = phi( main::@1/buffer2, main::@2/newbuffer#23, main::@3/newbuffer#24 )
+ [23] tempbuffer#0 = phi( main::@1/buffer1, main::@2/tempbuffer#22, main::@3/tempbuffer#23 )
+ [24] tempbuffer#21 = tempbuffer#0
+ [25] newbuffer#22 = newbuffer#0
+ [26] oldbuffer#22 = tempbuffer#0
+ [27] call print
+ to:swap::@return
+swap::@return: scope:[swap] from swap
+ [28] return
+ to:@return
+
+
+VARIABLE REGISTER WEIGHTS
+void main()
+char *newbuffer
+char *newbuffer#0 // 2.375
+char *newbuffer#22 // 11.0
+char *newbuffer#23 // 4.0
+char *newbuffer#24 // 4.0
+char *newbuffer#9 // 2.75
+char *oldbuffer
+char *oldbuffer#22 // 22.0
+char *oldbuffer#9 // 1.5714285714285714
+void print()
+char print::$0 // 202.0
+char print::$1 // 202.0
+char print::$2 // 202.0
+char print::$3 // 202.0
+char print::$4 // 202.0
+char print::$5 // 202.0
+char *screen
+char *screen#0 // 7.0
+char *screen#12 // 41.5
+void swap()
+char *tempbuffer
+char *tempbuffer#0 // 3.0
+char *tempbuffer#21 // 7.333333333333333
+char *tempbuffer#22 // 2.0
+char *tempbuffer#23 // 2.0
+char *tempbuffer#9 // 11.0
+
+Initial phi equivalence classes
+[ tempbuffer#9 tempbuffer#21 ]
+[ screen#12 screen#0 ]
+[ newbuffer#9 newbuffer#22 ]
+[ oldbuffer#9 oldbuffer#22 ]
+[ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+[ newbuffer#0 newbuffer#23 newbuffer#24 ]
+Added variable print::$3 to live range equivalence class [ print::$3 ]
+Added variable print::$0 to live range equivalence class [ print::$0 ]
+Added variable print::$4 to live range equivalence class [ print::$4 ]
+Added variable print::$1 to live range equivalence class [ print::$1 ]
+Added variable print::$5 to live range equivalence class [ print::$5 ]
+Added variable print::$2 to live range equivalence class [ print::$2 ]
+Complete equivalence classes
+[ tempbuffer#9 tempbuffer#21 ]
+[ screen#12 screen#0 ]
+[ newbuffer#9 newbuffer#22 ]
+[ oldbuffer#9 oldbuffer#22 ]
+[ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+[ newbuffer#0 newbuffer#23 newbuffer#24 ]
+[ print::$3 ]
+[ print::$0 ]
+[ print::$4 ]
+[ print::$1 ]
+[ print::$5 ]
+[ print::$2 ]
+Allocated zp[1]:2 [ print::$3 ]
+Allocated zp[1]:3 [ print::$0 ]
+Allocated zp[1]:4 [ print::$4 ]
+Allocated zp[1]:5 [ print::$1 ]
+Allocated zp[1]:6 [ print::$5 ]
+Allocated zp[1]:7 [ print::$2 ]
+Allocated zp[2]:8 [ screen#12 screen#0 ]
+Allocated zp[2]:10 [ oldbuffer#9 oldbuffer#22 ]
+Allocated zp[2]:12 [ tempbuffer#9 tempbuffer#21 ]
+Allocated zp[2]:14 [ newbuffer#9 newbuffer#22 ]
+Allocated zp[2]:16 [ newbuffer#0 newbuffer#23 newbuffer#24 ]
+Allocated zp[2]:18 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+REGISTER UPLIFT POTENTIAL REGISTERS
+Statement [4] tempbuffer#22 = newbuffer#0 [ tempbuffer#22 tempbuffer#0 screen#0 ] ( [ tempbuffer#22 tempbuffer#0 screen#0 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } } ) always clobbers reg byte a
+Statement [5] newbuffer#23 = tempbuffer#0 [ tempbuffer#22 newbuffer#23 screen#0 ] ( [ tempbuffer#22 newbuffer#23 screen#0 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } } ) always clobbers reg byte a
+Statement [7] tempbuffer#23 = newbuffer#0 [ tempbuffer#0 tempbuffer#23 screen#0 ] ( [ tempbuffer#0 tempbuffer#23 screen#0 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } } ) always clobbers reg byte a
+Statement [8] newbuffer#24 = tempbuffer#0 [ tempbuffer#23 newbuffer#24 screen#0 ] ( [ tempbuffer#23 newbuffer#24 screen#0 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } } ) always clobbers reg byte a
+Statement [14] *screen#12 = hextab[print::$0] [ screen#12 newbuffer#9 oldbuffer#9 ] ( print:1 [ screen#12 newbuffer#9 oldbuffer#9 ] { } swap:3::print:27 [ newbuffer#0 tempbuffer#0 screen#12 newbuffer#9 oldbuffer#9 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6::print:27 [ newbuffer#0 tempbuffer#0 screen#12 newbuffer#9 oldbuffer#9 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9::print:27 [ newbuffer#0 tempbuffer#0 screen#12 newbuffer#9 oldbuffer#9 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a reg byte y
+Statement [17] screen#12[2] = hextab[print::$1] [ screen#12 oldbuffer#9 ] ( print:1 [ screen#12 oldbuffer#9 ] { } swap:3::print:27 [ newbuffer#0 tempbuffer#0 screen#12 oldbuffer#9 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6::print:27 [ newbuffer#0 tempbuffer#0 screen#12 oldbuffer#9 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9::print:27 [ newbuffer#0 tempbuffer#0 screen#12 oldbuffer#9 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a reg byte y
+Statement [20] screen#12[4] = hextab[print::$2] [ screen#12 ] ( print:1 [ screen#12 ] { } swap:3::print:27 [ newbuffer#0 tempbuffer#0 screen#12 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6::print:27 [ newbuffer#0 tempbuffer#0 screen#12 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9::print:27 [ newbuffer#0 tempbuffer#0 screen#12 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a reg byte y
+Statement [21] screen#0 = screen#12 + $28 [ screen#0 ] ( print:1 [ screen#0 ] { } swap:3::print:27 [ newbuffer#0 tempbuffer#0 screen#0 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6::print:27 [ newbuffer#0 tempbuffer#0 screen#0 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9::print:27 [ newbuffer#0 tempbuffer#0 screen#0 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a
+Statement [24] tempbuffer#21 = tempbuffer#0 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 ] ( swap:3 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a
+Statement [25] newbuffer#22 = newbuffer#0 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 ] ( swap:3 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a
+Statement [26] oldbuffer#22 = tempbuffer#0 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 oldbuffer#22 ] ( swap:3 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 oldbuffer#22 ] { { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:6 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 oldbuffer#22 ] { { tempbuffer#0 = tempbuffer#22 } { newbuffer#0 = newbuffer#23 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } swap:9 [ newbuffer#0 tempbuffer#0 tempbuffer#21 screen#0 newbuffer#22 oldbuffer#22 ] { { tempbuffer#0 = tempbuffer#23 } { newbuffer#0 = newbuffer#24 } { tempbuffer#21 = tempbuffer#9 } { screen#0 = screen#12 } { newbuffer#22 = newbuffer#9 } { oldbuffer#22 = oldbuffer#9 } } ) always clobbers reg byte a
+Potential registers zp[2]:12 [ tempbuffer#9 tempbuffer#21 ] : zp[2]:12 ,
+Potential registers zp[2]:8 [ screen#12 screen#0 ] : zp[2]:8 ,
+Potential registers zp[2]:14 [ newbuffer#9 newbuffer#22 ] : zp[2]:14 ,
+Potential registers zp[2]:10 [ oldbuffer#9 oldbuffer#22 ] : zp[2]:10 ,
+Potential registers zp[2]:18 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ] : zp[2]:18 ,
+Potential registers zp[2]:16 [ newbuffer#0 newbuffer#23 newbuffer#24 ] : zp[2]:16 ,
+Potential registers zp[1]:2 [ print::$3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:3 [ print::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:4 [ print::$4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:5 [ print::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:6 [ print::$5 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp[1]:7 [ print::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
+
+REGISTER UPLIFT SCOPES
+Uplift Scope [print] 202: zp[1]:2 [ print::$3 ] 202: zp[1]:3 [ print::$0 ] 202: zp[1]:4 [ print::$4 ] 202: zp[1]:5 [ print::$1 ] 202: zp[1]:6 [ print::$5 ] 202: zp[1]:7 [ print::$2 ]
+Uplift Scope [] 48.5: zp[2]:8 [ screen#12 screen#0 ] 23.57: zp[2]:10 [ oldbuffer#9 oldbuffer#22 ] 18.33: zp[2]:12 [ tempbuffer#9 tempbuffer#21 ] 13.75: zp[2]:14 [ newbuffer#9 newbuffer#22 ] 10.38: zp[2]:16 [ newbuffer#0 newbuffer#23 newbuffer#24 ] 7: zp[2]:18 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+Uplift Scope [swap]
+Uplift Scope [main]
+
+Uplifting [print] best 294 combination reg byte a [ print::$3 ] reg byte a [ print::$0 ] reg byte a [ print::$4 ] reg byte a [ print::$1 ] zp[1]:6 [ print::$5 ] zp[1]:7 [ print::$2 ]
+Limited combination testing to 100 combinations of 4096 possible.
+Uplifting [] best 294 combination zp[2]:8 [ screen#12 screen#0 ] zp[2]:10 [ oldbuffer#9 oldbuffer#22 ] zp[2]:12 [ tempbuffer#9 tempbuffer#21 ] zp[2]:14 [ newbuffer#9 newbuffer#22 ] zp[2]:16 [ newbuffer#0 newbuffer#23 newbuffer#24 ] zp[2]:18 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+Uplifting [swap] best 294 combination
+Uplifting [main] best 294 combination
+Attempting to uplift remaining variables inzp[1]:6 [ print::$5 ]
+Uplifting [print] best 288 combination reg byte a [ print::$5 ]
+Attempting to uplift remaining variables inzp[1]:7 [ print::$2 ]
+Uplifting [print] best 284 combination reg byte a [ print::$2 ]
+Allocated (was zp[2]:8) zp[2]:2 [ screen#12 screen#0 ]
+Allocated (was zp[2]:10) zp[2]:4 [ oldbuffer#9 oldbuffer#22 ]
+Allocated (was zp[2]:12) zp[2]:6 [ tempbuffer#9 tempbuffer#21 ]
+Allocated (was zp[2]:14) zp[2]:8 [ newbuffer#9 newbuffer#22 ]
+Allocated (was zp[2]:16) zp[2]:10 [ newbuffer#0 newbuffer#23 newbuffer#24 ]
+Allocated (was zp[2]:18) zp[2]:12 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+
+ASSEMBLER BEFORE OPTIMIZATION
+ // File Comments
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="pointer-swap.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+ .label screen = 2
+ .label tempbuffer = $c
+ .label newbuffer = $a
+ .label tempbuffer_1 = 6
+ .label newbuffer_1 = 8
+ .label oldbuffer = 4
+.segment Code
+ // main
+main: {
+ // [1] call print
+ // [11] phi from main to print [phi:main->print]
+ print_from_main:
+ // [11] phi oldbuffer#9 = buffer2 [phi:main->print#0] -- pbuz1=pbuc1
+ lda #buffer2
+ sta.z oldbuffer+1
+ // [11] phi newbuffer#9 = buffer1 [phi:main->print#1] -- pbuz1=pbuc1
+ lda #buffer1
+ sta.z newbuffer_1+1
+ // [11] phi screen#12 = (char *) 1024 [phi:main->print#2] -- pbuz1=pbuc1
+ lda #<$400
+ sta.z screen
+ lda #>$400
+ sta.z screen+1
+ // [11] phi tempbuffer#9 = (char *) 0 [phi:main->print#3] -- pbuz1=pbuc1
+ lda #<0
+ sta.z tempbuffer_1
+ lda #>0
+ sta.z tempbuffer_1+1
+ jsr print
+ // [2] phi from main to main::@1 [phi:main->main::@1]
+ __b1_from_main:
+ jmp __b1
+ // main::@1
+ __b1:
+ // [3] call swap
+ // [23] phi from main::@1 to swap [phi:main::@1->swap]
+ swap_from___b1:
+ // [23] phi newbuffer#0 = buffer2 [phi:main::@1->swap#0] -- pbuz1=pbuc1
+ lda #buffer2
+ sta.z newbuffer+1
+ // [23] phi tempbuffer#0 = buffer1 [phi:main::@1->swap#1] -- pbuz1=pbuc1
+ lda #buffer1
+ sta.z tempbuffer+1
+ jsr swap
+ jmp __b2
+ // main::@2
+ __b2:
+ // [4] tempbuffer#22 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ // [5] newbuffer#23 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // [6] call swap
+ // [23] phi from main::@2 to swap [phi:main::@2->swap]
+ swap_from___b2:
+ // [23] phi newbuffer#0 = newbuffer#23 [phi:main::@2->swap#0] -- register_copy
+ // [23] phi tempbuffer#0 = tempbuffer#22 [phi:main::@2->swap#1] -- register_copy
+ jsr swap
+ jmp __b3
+ // main::@3
+ __b3:
+ // [7] tempbuffer#23 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ // [8] newbuffer#24 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // [9] call swap
+ // [23] phi from main::@3 to swap [phi:main::@3->swap]
+ swap_from___b3:
+ // [23] phi newbuffer#0 = newbuffer#24 [phi:main::@3->swap#0] -- register_copy
+ // [23] phi tempbuffer#0 = tempbuffer#23 [phi:main::@3->swap#1] -- register_copy
+ jsr swap
+ jmp __breturn
+ // main::@return
+ __breturn:
+ // [10] return
+ rts
+}
+ // print
+print: {
+ // [12] print::$3 = (char)tempbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z tempbuffer_1
+ // [13] print::$0 = print::$3 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // [14] *screen#12 = hextab[print::$0] -- _deref_pbuz1=pbuc1_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #0
+ sta (screen),y
+ // [15] print::$4 = (char)newbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z newbuffer_1
+ // [16] print::$1 = print::$4 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // [17] screen#12[2] = hextab[print::$1] -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #2
+ sta (screen),y
+ // [18] print::$5 = (char)oldbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z oldbuffer
+ // [19] print::$2 = print::$5 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // [20] screen#12[4] = hextab[print::$2] -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #4
+ sta (screen),y
+ // [21] screen#0 = screen#12 + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z screen
+ sta.z screen
+ bcc !+
+ inc.z screen+1
+ !:
+ jmp __breturn
+ // print::@return
+ __breturn:
+ // [22] return
+ rts
+}
+ // swap
+swap: {
+ // [24] tempbuffer#21 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z tempbuffer_1
+ lda.z tempbuffer+1
+ sta.z tempbuffer_1+1
+ // [25] newbuffer#22 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z newbuffer_1
+ lda.z newbuffer+1
+ sta.z newbuffer_1+1
+ // [26] oldbuffer#22 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z oldbuffer
+ lda.z tempbuffer+1
+ sta.z oldbuffer+1
+ // [27] call print
+ // [11] phi from swap to print [phi:swap->print]
+ print_from_swap:
+ // [11] phi oldbuffer#9 = oldbuffer#22 [phi:swap->print#0] -- register_copy
+ // [11] phi newbuffer#9 = newbuffer#22 [phi:swap->print#1] -- register_copy
+ // [11] phi screen#12 = screen#0 [phi:swap->print#2] -- register_copy
+ // [11] phi tempbuffer#9 = tempbuffer#21 [phi:swap->print#3] -- register_copy
+ jsr print
+ jmp __breturn
+ // swap::@return
+ __breturn:
+ // [28] return
+ rts
+}
+ // File Data
+.segment Data
+ buffer1: .fill $a, 0
+ buffer2: .fill $a, 0
+ hextab: .text "0123456789abcdef"
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp __b1
+Removing instruction jmp __b2
+Removing instruction jmp __b3
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Removing instruction jmp __breturn
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction lda #>0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Removing instruction __b1_from_main:
+Removing instruction swap_from___b1:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction print_from_main:
+Removing instruction __b1:
+Removing instruction __b2:
+Removing instruction swap_from___b2:
+Removing instruction __b3:
+Removing instruction swap_from___b3:
+Removing instruction __breturn:
+Removing instruction __breturn:
+Removing instruction print_from_swap:
+Removing instruction __breturn:
+Succesful ASM optimization Pass5UnusedLabelElimination
+
+FINAL SYMBOL TABLE
+__constant char buffer1[$a] = { fill( $a, 0) }
+__constant char buffer2[$a] = { fill( $a, 0) }
+__constant char hextab[] = "0123456789abcdef"z
+void main()
+char *newbuffer
+char *newbuffer#0 // newbuffer zp[2]:10 2.375
+char *newbuffer#22 // newbuffer_1 zp[2]:8 11.0
+char *newbuffer#23 // newbuffer zp[2]:10 4.0
+char *newbuffer#24 // newbuffer zp[2]:10 4.0
+char *newbuffer#9 // newbuffer_1 zp[2]:8 2.75
+char *oldbuffer
+char *oldbuffer#22 // oldbuffer zp[2]:4 22.0
+char *oldbuffer#9 // oldbuffer zp[2]:4 1.5714285714285714
+void print()
+char print::$0 // reg byte a 202.0
+char print::$1 // reg byte a 202.0
+char print::$2 // reg byte a 202.0
+char print::$3 // reg byte a 202.0
+char print::$4 // reg byte a 202.0
+char print::$5 // reg byte a 202.0
+char *screen
+char *screen#0 // screen zp[2]:2 7.0
+char *screen#12 // screen zp[2]:2 41.5
+void swap()
+char *tempbuffer
+char *tempbuffer#0 // tempbuffer zp[2]:12 3.0
+char *tempbuffer#21 // tempbuffer_1 zp[2]:6 7.333333333333333
+char *tempbuffer#22 // tempbuffer zp[2]:12 2.0
+char *tempbuffer#23 // tempbuffer zp[2]:12 2.0
+char *tempbuffer#9 // tempbuffer_1 zp[2]:6 11.0
+
+zp[2]:6 [ tempbuffer#9 tempbuffer#21 ]
+zp[2]:2 [ screen#12 screen#0 ]
+zp[2]:8 [ newbuffer#9 newbuffer#22 ]
+zp[2]:4 [ oldbuffer#9 oldbuffer#22 ]
+zp[2]:12 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+zp[2]:10 [ newbuffer#0 newbuffer#23 newbuffer#24 ]
+reg byte a [ print::$3 ]
+reg byte a [ print::$0 ]
+reg byte a [ print::$4 ]
+reg byte a [ print::$1 ]
+reg byte a [ print::$5 ]
+reg byte a [ print::$2 ]
+
+
+FINAL ASSEMBLER
+Score: 264
+
+ // File Comments
+ // Upstart
+ // Commodore 64 PRG executable file
+.file [name="pointer-swap.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+ // Global Constants & labels
+ .label screen = 2
+ .label tempbuffer = $c
+ .label newbuffer = $a
+ .label tempbuffer_1 = 6
+ .label newbuffer_1 = 8
+ .label oldbuffer = 4
+.segment Code
+ // main
+main: {
+ // print()
+ // [1] call print
+ // [11] phi from main to print [phi:main->print]
+ // [11] phi oldbuffer#9 = buffer2 [phi:main->print#0] -- pbuz1=pbuc1
+ lda #buffer2
+ sta.z oldbuffer+1
+ // [11] phi newbuffer#9 = buffer1 [phi:main->print#1] -- pbuz1=pbuc1
+ lda #buffer1
+ sta.z newbuffer_1+1
+ // [11] phi screen#12 = (char *) 1024 [phi:main->print#2] -- pbuz1=pbuc1
+ lda #<$400
+ sta.z screen
+ lda #>$400
+ sta.z screen+1
+ // [11] phi tempbuffer#9 = (char *) 0 [phi:main->print#3] -- pbuz1=pbuc1
+ lda #<0
+ sta.z tempbuffer_1
+ sta.z tempbuffer_1+1
+ jsr print
+ // [2] phi from main to main::@1 [phi:main->main::@1]
+ // main::@1
+ // swap()
+ // [3] call swap
+ // [23] phi from main::@1 to swap [phi:main::@1->swap]
+ // [23] phi newbuffer#0 = buffer2 [phi:main::@1->swap#0] -- pbuz1=pbuc1
+ lda #buffer2
+ sta.z newbuffer+1
+ // [23] phi tempbuffer#0 = buffer1 [phi:main::@1->swap#1] -- pbuz1=pbuc1
+ lda #buffer1
+ sta.z tempbuffer+1
+ jsr swap
+ // main::@2
+ // [4] tempbuffer#22 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ // [5] newbuffer#23 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // swap()
+ // [6] call swap
+ // [23] phi from main::@2 to swap [phi:main::@2->swap]
+ // [23] phi newbuffer#0 = newbuffer#23 [phi:main::@2->swap#0] -- register_copy
+ // [23] phi tempbuffer#0 = tempbuffer#22 [phi:main::@2->swap#1] -- register_copy
+ jsr swap
+ // main::@3
+ // [7] tempbuffer#23 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z tempbuffer
+ lda.z newbuffer+1
+ sta.z tempbuffer+1
+ // [8] newbuffer#24 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z newbuffer
+ lda.z tempbuffer+1
+ sta.z newbuffer+1
+ // swap()
+ // [9] call swap
+ // [23] phi from main::@3 to swap [phi:main::@3->swap]
+ // [23] phi newbuffer#0 = newbuffer#24 [phi:main::@3->swap#0] -- register_copy
+ // [23] phi tempbuffer#0 = tempbuffer#23 [phi:main::@3->swap#1] -- register_copy
+ jsr swap
+ // main::@return
+ // }
+ // [10] return
+ rts
+}
+ // print
+print: {
+ // (char)tempbuffer&0x0f
+ // [12] print::$3 = (char)tempbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z tempbuffer_1
+ // [13] print::$0 = print::$3 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // screen[0] = hextab[(char)tempbuffer&0x0f]
+ // [14] *screen#12 = hextab[print::$0] -- _deref_pbuz1=pbuc1_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #0
+ sta (screen),y
+ // (char)newbuffer&0x0f
+ // [15] print::$4 = (char)newbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z newbuffer_1
+ // [16] print::$1 = print::$4 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // screen[2] = hextab[(char)newbuffer&0x0f]
+ // [17] screen#12[2] = hextab[print::$1] -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #2
+ sta (screen),y
+ // (char)oldbuffer&0x0f
+ // [18] print::$5 = (char)oldbuffer#9 -- vbuaa=_byte_pbuz1
+ lda.z oldbuffer
+ // [19] print::$2 = print::$5 & $f -- vbuaa=vbuaa_band_vbuc1
+ and #$f
+ // screen[4] = hextab[(char)oldbuffer&0x0f]
+ // [20] screen#12[4] = hextab[print::$2] -- pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuaa
+ tay
+ lda hextab,y
+ ldy #4
+ sta (screen),y
+ // screen += 40
+ // [21] screen#0 = screen#12 + $28 -- pbuz1=pbuz1_plus_vbuc1
+ lda #$28
+ clc
+ adc.z screen
+ sta.z screen
+ bcc !+
+ inc.z screen+1
+ !:
+ // print::@return
+ // }
+ // [22] return
+ rts
+}
+ // swap
+swap: {
+ // [24] tempbuffer#21 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z tempbuffer_1
+ lda.z tempbuffer+1
+ sta.z tempbuffer_1+1
+ // [25] newbuffer#22 = newbuffer#0 -- pbuz1=pbuz2
+ lda.z newbuffer
+ sta.z newbuffer_1
+ lda.z newbuffer+1
+ sta.z newbuffer_1+1
+ // [26] oldbuffer#22 = tempbuffer#0 -- pbuz1=pbuz2
+ lda.z tempbuffer
+ sta.z oldbuffer
+ lda.z tempbuffer+1
+ sta.z oldbuffer+1
+ // print()
+ // [27] call print
+ // [11] phi from swap to print [phi:swap->print]
+ // [11] phi oldbuffer#9 = oldbuffer#22 [phi:swap->print#0] -- register_copy
+ // [11] phi newbuffer#9 = newbuffer#22 [phi:swap->print#1] -- register_copy
+ // [11] phi screen#12 = screen#0 [phi:swap->print#2] -- register_copy
+ // [11] phi tempbuffer#9 = tempbuffer#21 [phi:swap->print#3] -- register_copy
+ jsr print
+ // swap::@return
+ // }
+ // [28] return
+ rts
+}
+ // File Data
+.segment Data
+ buffer1: .fill $a, 0
+ buffer2: .fill $a, 0
+ hextab: .text "0123456789abcdef"
+
diff --git a/src/test/ref/pointer-swap.sym b/src/test/ref/pointer-swap.sym
new file mode 100644
index 000000000..43845fdd3
--- /dev/null
+++ b/src/test/ref/pointer-swap.sym
@@ -0,0 +1,43 @@
+__constant char buffer1[$a] = { fill( $a, 0) }
+__constant char buffer2[$a] = { fill( $a, 0) }
+__constant char hextab[] = "0123456789abcdef"z
+void main()
+char *newbuffer
+char *newbuffer#0 // newbuffer zp[2]:10 2.375
+char *newbuffer#22 // newbuffer_1 zp[2]:8 11.0
+char *newbuffer#23 // newbuffer zp[2]:10 4.0
+char *newbuffer#24 // newbuffer zp[2]:10 4.0
+char *newbuffer#9 // newbuffer_1 zp[2]:8 2.75
+char *oldbuffer
+char *oldbuffer#22 // oldbuffer zp[2]:4 22.0
+char *oldbuffer#9 // oldbuffer zp[2]:4 1.5714285714285714
+void print()
+char print::$0 // reg byte a 202.0
+char print::$1 // reg byte a 202.0
+char print::$2 // reg byte a 202.0
+char print::$3 // reg byte a 202.0
+char print::$4 // reg byte a 202.0
+char print::$5 // reg byte a 202.0
+char *screen
+char *screen#0 // screen zp[2]:2 7.0
+char *screen#12 // screen zp[2]:2 41.5
+void swap()
+char *tempbuffer
+char *tempbuffer#0 // tempbuffer zp[2]:12 3.0
+char *tempbuffer#21 // tempbuffer_1 zp[2]:6 7.333333333333333
+char *tempbuffer#22 // tempbuffer zp[2]:12 2.0
+char *tempbuffer#23 // tempbuffer zp[2]:12 2.0
+char *tempbuffer#9 // tempbuffer_1 zp[2]:6 11.0
+
+zp[2]:6 [ tempbuffer#9 tempbuffer#21 ]
+zp[2]:2 [ screen#12 screen#0 ]
+zp[2]:8 [ newbuffer#9 newbuffer#22 ]
+zp[2]:4 [ oldbuffer#9 oldbuffer#22 ]
+zp[2]:12 [ tempbuffer#0 tempbuffer#22 tempbuffer#23 ]
+zp[2]:10 [ newbuffer#0 newbuffer#23 newbuffer#24 ]
+reg byte a [ print::$3 ]
+reg byte a [ print::$0 ]
+reg byte a [ print::$4 ]
+reg byte a [ print::$1 ]
+reg byte a [ print::$5 ]
+reg byte a [ print::$2 ]