diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 3b6f07013..ebdde9e38 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -103,7 +103,7 @@ public class TestPrograms { } @Test - public void testPlasma2() throws IOException, URISyntaxException { + public void testPlasmaUnroll() throws IOException, URISyntaxException { compileAndCompare("examples/plasma/plasma-unroll"); } diff --git a/src/test/ref/examples/plasma/plasma-unroll.asm b/src/test/ref/examples/plasma/plasma-unroll.asm index d0b3f619a..0f05b7a92 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.asm +++ b/src/test/ref/examples/plasma/plasma-unroll.asm @@ -1,5 +1,6 @@ // A KickC version of the plasma routine from the CC65 samples -// This version has an unrolled inner loop to reach ~50FPS +// This version has an unrolled inner loop to reach 50+FPS +// This version also optimizes the inner loop by calculating the Y buffer as a set of differences // (w)2001 by groepaz/hitmen // Cleanup and porting to CC65 by Ullrich von Bassewitz. // Ported to KickC by Jesper Gravgaard. @@ -70,6 +71,7 @@ main: { doplasma: { .label c1a = 8 .label c1b = 9 + .label yval = $d .label i = $a .label c2a = 8 .label c2b = 9 @@ -78,35 +80,35 @@ doplasma: { sta c1a lda c1B sta c1b + lda #0 + sta i + tax + // Calculate ybuff as a bunch of differences + b1: ldy c1a lda SINTABLE,y ldy c1b clc adc SINTABLE,y - sta ybuf - lda #1 - sta i - // Calculate ybuff as a bunch of differences - b1: + sta yval + txa + eor #$ff + sec + adc yval + ldy i + sta ybuf,y lax c1a axs #-[4] stx c1a lax c1b axs #-[9] stx c1b - ldy c1a - lda SINTABLE,y - ldy c1b - clc - adc SINTABLE,y - ldy i - sec - sbc ybuf+-1,y - sta ybuf,y inc i lda i cmp #$19 - bcc b1 + bcs !b8+ + jmp b8 + !b8: lax c1A axs #-[3] stx c1A @@ -146,12 +148,13 @@ doplasma: { stx c2B ldx #0 b5: + // Find the first value on the row lda xbuf,x + // Calculate the next values as sums of diffs + // Use experimental loop unrolling to increase the speed clc adc ybuf sta SCREEN1,x - // Calculate the next values as sums of diffs - // Use experimental loop unrolling to increase the speed clc adc ybuf+1 sta SCREEN1+1*$28,x @@ -230,14 +233,17 @@ doplasma: { jmp b5 !b5: rts + b8: + ldx yval + jmp b1 xbuf: .fill $28, 0 ybuf: .fill $19, 0 } // Make a plasma-friendly charset where the chars are randomly filled makecharset: { .label _4 = 6 - .label _8 = $d - .label _9 = $d + .label _8 = $e + .label _9 = $e .label s = 5 .label i = 4 .label c = 2 diff --git a/src/test/ref/examples/plasma/plasma-unroll.cfg b/src/test/ref/examples/plasma/plasma-unroll.cfg index a4c7efc9b..1f2e615dc 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.cfg +++ b/src/test/ref/examples/plasma/plasma-unroll.cfg @@ -46,150 +46,155 @@ main::@4: scope:[main] from main::@3 doplasma: scope:[doplasma] from main::@4 [19] (byte) doplasma::c1a#0 ← (byte) c1A#1 [20] (byte) doplasma::c1b#0 ← (byte) c1B#1 - [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) - [22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0 to:doplasma::@1 -doplasma::@1: scope:[doplasma] from doplasma doplasma::@1 - [23] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 1 doplasma::@1/(byte) doplasma::i#1 ) - [23] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@1/(byte) doplasma::c1b#1 ) - [23] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@1/(byte) doplasma::c1a#1 ) - [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 - [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 - [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) - [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) - [28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 - [29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 - [30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 +doplasma::@1: scope:[doplasma] from doplasma doplasma::@8 + [21] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@8/(byte) doplasma::i#1 ) + [21] (byte) doplasma::yprev#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@8/(byte~) doplasma::yprev#3 ) + [21] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@8/(byte) doplasma::c1b#1 ) + [21] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@8/(byte) doplasma::c1a#1 ) + [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) + [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 + [24] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 + [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 + [27] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 + [28] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@8 to:doplasma::@2 doplasma::@2: scope:[doplasma] from doplasma::@1 - [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 - [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 - [33] (byte) doplasma::c2a#0 ← (byte) c2A#1 - [34] (byte) doplasma::c2b#0 ← (byte) c2B#1 + [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 + [31] (byte) doplasma::c2a#0 ← (byte) c2A#1 + [32] (byte) doplasma::c2b#0 ← (byte) c2B#1 to:doplasma::@3 doplasma::@3: scope:[doplasma] from doplasma::@2 doplasma::@3 - [35] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 ) - [35] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 ) - [35] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 ) - [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) - [37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 - [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 - [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 - [40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 - [41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 + [33] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 ) + [33] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 ) + [33] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 ) + [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) + [35] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 + [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 + [38] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 + [39] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 to:doplasma::@4 doplasma::@4: scope:[doplasma] from doplasma::@3 - [42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 + [40] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 to:doplasma::@5 doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 - [44] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) - [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) - [46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 + [42] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [43] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 - [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 + [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) + [45] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 to:doplasma::@6_1 doplasma::@6_1: scope:[doplasma] from doplasma::@6 - [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 + [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 to:doplasma::@6_2 doplasma::@6_2: scope:[doplasma] from doplasma::@6_1 - [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 + [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 to:doplasma::@6_3 doplasma::@6_3: scope:[doplasma] from doplasma::@6_2 - [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) - [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 + [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 to:doplasma::@6_4 doplasma::@6_4: scope:[doplasma] from doplasma::@6_3 - [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) - [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 + [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) + [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 to:doplasma::@6_5 doplasma::@6_5: scope:[doplasma] from doplasma::@6_4 - [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) - [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 + [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) + [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 to:doplasma::@6_6 doplasma::@6_6: scope:[doplasma] from doplasma::@6_5 - [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) - [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 + [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) + [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 to:doplasma::@6_7 doplasma::@6_7: scope:[doplasma] from doplasma::@6_6 - [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) - [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 + [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) + [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 to:doplasma::@6_8 doplasma::@6_8: scope:[doplasma] from doplasma::@6_7 - [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) - [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 + [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) + [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 to:doplasma::@6_9 doplasma::@6_9: scope:[doplasma] from doplasma::@6_8 - [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) - [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 + [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) + [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 to:doplasma::@6_10 doplasma::@6_10: scope:[doplasma] from doplasma::@6_9 - [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) - [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 + [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) + [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 to:doplasma::@6_11 doplasma::@6_11: scope:[doplasma] from doplasma::@6_10 - [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) - [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 + [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) + [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 to:doplasma::@6_12 doplasma::@6_12: scope:[doplasma] from doplasma::@6_11 - [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) - [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 + [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) + [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 to:doplasma::@6_13 doplasma::@6_13: scope:[doplasma] from doplasma::@6_12 - [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) - [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 + [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) + [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 to:doplasma::@6_14 doplasma::@6_14: scope:[doplasma] from doplasma::@6_13 - [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) - [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 + [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) + [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 to:doplasma::@6_15 doplasma::@6_15: scope:[doplasma] from doplasma::@6_14 - [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) - [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 + [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) + [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 to:doplasma::@6_16 doplasma::@6_16: scope:[doplasma] from doplasma::@6_15 - [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) - [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 + [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) + [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 to:doplasma::@6_17 doplasma::@6_17: scope:[doplasma] from doplasma::@6_16 - [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) - [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 + [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) + [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 to:doplasma::@6_18 doplasma::@6_18: scope:[doplasma] from doplasma::@6_17 - [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) - [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 + [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) + [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 to:doplasma::@6_19 doplasma::@6_19: scope:[doplasma] from doplasma::@6_18 - [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) - [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 + [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) + [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 to:doplasma::@6_20 doplasma::@6_20: scope:[doplasma] from doplasma::@6_19 - [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) - [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 + [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) + [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 to:doplasma::@6_21 doplasma::@6_21: scope:[doplasma] from doplasma::@6_20 - [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) - [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 + [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) + [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 to:doplasma::@6_22 doplasma::@6_22: scope:[doplasma] from doplasma::@6_21 - [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) - [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 + [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) + [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 to:doplasma::@6_23 doplasma::@6_23: scope:[doplasma] from doplasma::@6_22 - [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) - [94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 + [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) + [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 + to:doplasma::@6_24 +doplasma::@6_24: scope:[doplasma] from doplasma::@6_23 + [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) + [93] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50 to:doplasma::@7 -doplasma::@7: scope:[doplasma] from doplasma::@6_23 - [95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 - [96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 +doplasma::@7: scope:[doplasma] from doplasma::@6_24 + [94] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 + [95] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 to:doplasma::@return doplasma::@return: scope:[doplasma] from doplasma::@7 - [97] return + [96] return to:@return +doplasma::@8: scope:[doplasma] from doplasma::@1 + [97] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0 + to:doplasma::@1 makecharset: scope:[makecharset] from main::@2 [98] phi() [99] call sid_rnd_init diff --git a/src/test/ref/examples/plasma/plasma-unroll.log b/src/test/ref/examples/plasma/plasma-unroll.log index e3a1ed439..e7484bcc9 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.log +++ b/src/test/ref/examples/plasma/plasma-unroll.log @@ -331,9 +331,8 @@ doplasma: scope:[doplasma] from main::@4 (byte[$19]) doplasma::ybuf#0 ← { fill( $19, 0) } (byte) doplasma::c1a#0 ← (byte) c1A#8 (byte) doplasma::c1b#0 ← (byte) c1B#8 - (byte~) doplasma::$0 ← *((byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((byte*) SINTABLE#0 + (byte) doplasma::c1b#0) - *((byte[$19]) doplasma::ybuf#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) doplasma::$0 - (byte) doplasma::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::yprev#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) doplasma::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:doplasma::@1 doplasma::@1: scope:[doplasma] from doplasma doplasma::@1 (byte*) doplasma::screen#7 ← phi( doplasma/(byte*) doplasma::screen#8 doplasma::@1/(byte*) doplasma::screen#7 ) @@ -342,17 +341,19 @@ doplasma::@1: scope:[doplasma] from doplasma doplasma::@1 (byte) c1B#14 ← phi( doplasma/(byte) c1B#8 doplasma::@1/(byte) c1B#14 ) (byte) c1A#14 ← phi( doplasma/(byte) c1A#8 doplasma::@1/(byte) c1A#14 ) (byte) doplasma::i#2 ← phi( doplasma/(byte) doplasma::i#0 doplasma::@1/(byte) doplasma::i#1 ) + (byte) doplasma::yprev#2 ← phi( doplasma/(byte) doplasma::yprev#0 doplasma::@1/(byte) doplasma::yprev#1 ) (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@1/(byte) doplasma::c1b#1 ) (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@1/(byte) doplasma::c1a#1 ) + (byte~) doplasma::$0 ← *((byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((byte*) SINTABLE#0 + (byte) doplasma::c1b#2) + (byte) doplasma::yval#0 ← (byte~) doplasma::$0 + (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 + *((byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 + (byte) doplasma::yprev#1 ← (byte) doplasma::yval#0 (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 - (byte~) doplasma::$1 ← *((byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((byte*) SINTABLE#0 + (byte) doplasma::c1b#1) - (byte/signed word/word/dword/signed dword~) doplasma::$2 ← (byte) doplasma::i#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((byte[$19]) doplasma::ybuf#0 + (byte/signed word/word/dword/signed dword~) doplasma::$2) - *((byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 - (bool~) doplasma::$4 ← (byte) doplasma::i#1 < (byte/signed byte/word/signed word/dword/signed dword) $19 - if((bool~) doplasma::$4) goto doplasma::@1 + (bool~) doplasma::$2 ← (byte) doplasma::i#1 < (byte/signed byte/word/signed word/dword/signed dword) $19 + if((bool~) doplasma::$2) goto doplasma::@1 to:doplasma::@2 doplasma::@2: scope:[doplasma] from doplasma::@1 (byte*) doplasma::screen#6 ← phi( doplasma::@1/(byte*) doplasma::screen#7 ) @@ -375,13 +376,13 @@ doplasma::@3: scope:[doplasma] from doplasma::@2 doplasma::@3 (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte) doplasma::i1#0 doplasma::@3/(byte) doplasma::i1#1 ) (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 ) (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 ) - (byte~) doplasma::$5 ← *((byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((byte*) SINTABLE#0 + (byte) doplasma::c2b#2) - *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 + (byte~) doplasma::$3 ← *((byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((byte*) SINTABLE#0 + (byte) doplasma::c2b#2) + *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 - (bool~) doplasma::$6 ← (byte) doplasma::i1#1 < (byte/signed byte/word/signed word/dword/signed dword) $28 - if((bool~) doplasma::$6) goto doplasma::@3 + (bool~) doplasma::$4 ← (byte) doplasma::i1#1 < (byte/signed byte/word/signed word/dword/signed dword) $28 + if((bool~) doplasma::$4) goto doplasma::@3 to:doplasma::@4 doplasma::@4: scope:[doplasma] from doplasma::@3 (byte) c1B#22 ← phi( doplasma::@3/(byte) c1B#24 ) @@ -398,14 +399,10 @@ doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 (byte) c2A#22 ← phi( doplasma::@4/(byte) c2A#3 doplasma::@7/(byte) c2A#16 ) (byte) c1B#20 ← phi( doplasma::@4/(byte) c1B#22 doplasma::@7/(byte) c1B#15 ) (byte) c1A#20 ← phi( doplasma::@4/(byte) c1A#22 doplasma::@7/(byte) c1A#15 ) - (byte*) doplasma::screen#1 ← phi( doplasma::@4/(byte*) doplasma::screen#3 doplasma::@7/(byte*) doplasma::screen#4 ) + (byte*) doplasma::screen#2 ← phi( doplasma::@4/(byte*) doplasma::screen#3 doplasma::@7/(byte*) doplasma::screen#4 ) (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte) doplasma::i2#0 doplasma::@7/(byte) doplasma::i2#1 ) - (byte~) doplasma::$7 ← *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((byte[$19]) doplasma::ybuf#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) - (byte) doplasma::val#0 ← (byte~) doplasma::$7 - (byte/signed byte/word/signed word/dword/signed dword~) doplasma::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 0 * (byte/signed byte/word/signed word/dword/signed dword) $28 - (byte*~) doplasma::$9 ← (byte*) doplasma::screen#1 + (byte/signed byte/word/signed word/dword/signed dword~) doplasma::$8 - *((byte*~) doplasma::$9 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 - (byte) doplasma::ii#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::val#0 ← *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + (byte) doplasma::ii#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 doplasma::@6 (byte) c2B#20 ← phi( doplasma::@5/(byte) c2B#22 doplasma::@6/(byte) c2B#20 ) @@ -413,27 +410,27 @@ doplasma::@6: scope:[doplasma] from doplasma::@5 doplasma::@6 (byte) c1B#18 ← phi( doplasma::@5/(byte) c1B#20 doplasma::@6/(byte) c1B#18 ) (byte) c1A#18 ← phi( doplasma::@5/(byte) c1A#20 doplasma::@6/(byte) c1A#18 ) (byte) doplasma::i2#3 ← phi( doplasma::@5/(byte) doplasma::i2#2 doplasma::@6/(byte) doplasma::i2#3 ) - (byte*) doplasma::screen#2 ← phi( doplasma::@5/(byte*) doplasma::screen#1 doplasma::@6/(byte*) doplasma::screen#2 ) + (byte*) doplasma::screen#1 ← phi( doplasma::@5/(byte*) doplasma::screen#2 doplasma::@6/(byte*) doplasma::screen#1 ) (byte) doplasma::ii#2 ← phi( doplasma::@5/(byte) doplasma::ii#0 doplasma::@6/(byte) doplasma::ii#1 ) (byte) doplasma::val#2 ← phi( doplasma::@5/(byte) doplasma::val#0 doplasma::@6/(byte) doplasma::val#1 ) (byte) doplasma::val#1 ← (byte) doplasma::val#2 + *((byte[$19]) doplasma::ybuf#0 + (byte) doplasma::ii#2) - (byte/signed word/word/dword/signed dword~) doplasma::$10 ← (byte) doplasma::ii#2 * (byte/signed byte/word/signed word/dword/signed dword) $28 - (byte*~) doplasma::$11 ← (byte*) doplasma::screen#2 + (byte/signed word/word/dword/signed dword~) doplasma::$10 - *((byte*~) doplasma::$11 + (byte) doplasma::i2#3) ← (byte) doplasma::val#1 + (byte/signed word/word/dword/signed dword~) doplasma::$5 ← (byte) doplasma::ii#2 * (byte/signed byte/word/signed word/dword/signed dword) $28 + (byte*~) doplasma::$6 ← (byte*) doplasma::screen#1 + (byte/signed word/word/dword/signed dword~) doplasma::$5 + *((byte*~) doplasma::$6 + (byte) doplasma::i2#3) ← (byte) doplasma::val#1 (byte) doplasma::ii#1 ← ++ (byte) doplasma::ii#2 - (bool~) doplasma::$12 ← (byte) doplasma::ii#1 < (byte/signed byte/word/signed word/dword/signed dword) $19 - unroll if((bool~) doplasma::$12) goto doplasma::@6 + (bool~) doplasma::$7 ← (byte) doplasma::ii#1 < (byte/signed byte/word/signed word/dword/signed dword) $19 + unroll if((bool~) doplasma::$7) goto doplasma::@6 to:doplasma::@7 doplasma::@7: scope:[doplasma] from doplasma::@6 + (byte*) doplasma::screen#4 ← phi( doplasma::@6/(byte*) doplasma::screen#1 ) (byte) c2B#16 ← phi( doplasma::@6/(byte) c2B#20 ) (byte) c2A#16 ← phi( doplasma::@6/(byte) c2A#20 ) (byte) c1B#15 ← phi( doplasma::@6/(byte) c1B#18 ) (byte) c1A#15 ← phi( doplasma::@6/(byte) c1A#18 ) - (byte*) doplasma::screen#4 ← phi( doplasma::@6/(byte*) doplasma::screen#2 ) (byte) doplasma::i2#4 ← phi( doplasma::@6/(byte) doplasma::i2#3 ) (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 - (bool~) doplasma::$13 ← (byte) doplasma::i2#1 < (byte/signed byte/word/signed word/dword/signed dword) $28 - if((bool~) doplasma::$13) goto doplasma::@5 + (bool~) doplasma::$8 ← (byte) doplasma::i2#1 < (byte/signed byte/word/signed word/dword/signed dword) $28 + if((bool~) doplasma::$8) goto doplasma::@5 to:doplasma::@return doplasma::@return: scope:[doplasma] from doplasma::@7 (byte) c2B#10 ← phi( doplasma::@7/(byte) c2B#16 ) @@ -942,18 +939,13 @@ SYMBOL TABLE SSA (void()) doplasma((byte*) doplasma::screen) (byte~) doplasma::$0 (byte~) doplasma::$1 -(byte/signed word/word/dword/signed dword~) doplasma::$10 -(byte*~) doplasma::$11 -(bool~) doplasma::$12 -(bool~) doplasma::$13 -(byte/signed word/word/dword/signed dword~) doplasma::$2 +(bool~) doplasma::$2 (byte~) doplasma::$3 (bool~) doplasma::$4 -(byte~) doplasma::$5 -(bool~) doplasma::$6 -(byte~) doplasma::$7 -(byte/signed byte/word/signed word/dword/signed dword~) doplasma::$8 -(byte*~) doplasma::$9 +(byte/signed word/word/dword/signed dword~) doplasma::$5 +(byte*~) doplasma::$6 +(bool~) doplasma::$7 +(bool~) doplasma::$8 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 @@ -1014,6 +1006,12 @@ SYMBOL TABLE SSA (byte[$28]) doplasma::xbuf#0 (byte[$19]) doplasma::ybuf (byte[$19]) doplasma::ybuf#0 +(byte) doplasma::yprev +(byte) doplasma::yprev#0 +(byte) doplasma::yprev#1 +(byte) doplasma::yprev#2 +(byte) doplasma::yval +(byte) doplasma::yval#0 (void()) main() (byte~) main::$1 (byte*~) main::$2 @@ -1285,8 +1283,8 @@ SYMBOL TABLE SSA (void()) sid_rnd_init() (label) sid_rnd_init::@return -Inversing boolean not [273] (bool~) makecharset::$6 ← (byte~) makecharset::$4 <= (byte) makecharset::s#1 from [272] (bool~) makecharset::$5 ← (byte~) makecharset::$4 > (byte) makecharset::s#1 -Inversing boolean not [291] (bool~) makecharset::$13 ← (byte/word~) makecharset::$11 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [290] (bool~) makecharset::$12 ← (byte/word~) makecharset::$11 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [269] (bool~) makecharset::$6 ← (byte~) makecharset::$4 <= (byte) makecharset::s#1 from [268] (bool~) makecharset::$5 ← (byte~) makecharset::$4 > (byte) makecharset::s#1 +Inversing boolean not [287] (bool~) makecharset::$13 ← (byte/word~) makecharset::$11 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [286] (bool~) makecharset::$12 ← (byte/word~) makecharset::$11 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#35 (byte*) print_char_cursor#40 (byte*) print_screen#13 (byte*) print_line_cursor#32 (byte*) print_char_cursor#37 (byte*) print_screen#12 (byte*) print_line_cursor#29 (byte*) print_char_cursor#35 (byte*) print_screen#11 (byte*) print_line_cursor#25 (byte*) print_char_cursor#31 (byte*) print_screen#10 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#9 Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 @@ -1314,6 +1312,7 @@ Alias (byte) c1A#0 = (byte) c1A#6 Alias (byte) c1B#0 = (byte) c1B#6 Alias (byte) c2A#0 = (byte) c2A#6 Alias (byte) c2B#0 = (byte) c2B#6 +Alias (byte) doplasma::yval#0 = (byte~) doplasma::$0 (byte) doplasma::yprev#1 Alias (byte) c1A#14 = (byte) c1A#9 Alias (byte) c1B#14 = (byte) c1B#9 Alias (byte) c2A#14 = (byte) c2A#8 @@ -1324,13 +1323,12 @@ Alias (byte) c2B#15 = (byte) c2B#9 Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#5 Alias (byte) c1A#22 = (byte) c1A#24 Alias (byte) c1B#22 = (byte) c1B#24 -Alias (byte) doplasma::val#0 = (byte~) doplasma::$7 Alias (byte) doplasma::i2#3 = (byte) doplasma::i2#4 -Alias (byte*) doplasma::screen#2 = (byte*) doplasma::screen#4 Alias (byte) c1A#10 = (byte) c1A#15 (byte) c1A#18 (byte) c1A#4 Alias (byte) c1B#10 = (byte) c1B#15 (byte) c1B#18 (byte) c1B#4 Alias (byte) c2A#10 = (byte) c2A#16 (byte) c2A#20 (byte) c2A#4 Alias (byte) c2B#10 = (byte) c2B#16 (byte) c2B#20 (byte) c2B#4 +Alias (byte*) doplasma::screen#1 = (byte*) doplasma::screen#4 Alias (byte*) print_screen#4 = (byte*) print_screen#5 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#22 Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#29 @@ -1395,7 +1393,7 @@ Self Phi Eliminated (byte) c2B#15 Self Phi Eliminated (byte*) doplasma::screen#3 Self Phi Eliminated (byte) c1A#22 Self Phi Eliminated (byte) c1B#22 -Self Phi Eliminated (byte*) doplasma::screen#2 +Self Phi Eliminated (byte*) doplasma::screen#1 Self Phi Eliminated (byte) doplasma::i2#3 Self Phi Eliminated (byte) c1A#10 Self Phi Eliminated (byte) c1B#10 @@ -1449,7 +1447,7 @@ Redundant Phi (byte) c2B#15 (byte) c2B#14 Redundant Phi (byte*) doplasma::screen#3 (byte*) doplasma::screen#6 Redundant Phi (byte) c1A#22 (byte) c1A#3 Redundant Phi (byte) c1B#22 (byte) c1B#3 -Redundant Phi (byte*) doplasma::screen#2 (byte*) doplasma::screen#1 +Redundant Phi (byte*) doplasma::screen#1 (byte*) doplasma::screen#2 Redundant Phi (byte) doplasma::i2#3 (byte) doplasma::i2#2 Redundant Phi (byte) c1A#10 (byte) c1A#20 Redundant Phi (byte) c1B#10 (byte) c1B#20 @@ -1477,15 +1475,15 @@ Redundant Phi (byte) c2B#11 (byte) c2B#1 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) print_cls::$1 [97] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 Simple Condition (bool~) main::$3 [141] if((byte*) main::col#1!=rangelast(COLS#0,main::$2)) goto main::@1 -Simple Condition (bool~) doplasma::$4 [206] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 -Simple Condition (bool~) doplasma::$6 [220] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -Simple Condition (bool~) doplasma::$12 [239] unroll if((byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6 -Simple Condition (bool~) doplasma::$13 [243] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -Simple Condition (bool~) makecharset::$6 [274] if((byte~) makecharset::$4<=(byte) makecharset::s#3) goto makecharset::@4 -Simple Condition (bool~) makecharset::$7 [278] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -Simple Condition (bool~) makecharset::$10 [287] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -Simple Condition (bool~) makecharset::$13 [292] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -Simple Condition (bool~) makecharset::$15 [296] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 +Simple Condition (bool~) doplasma::$2 [206] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 +Simple Condition (bool~) doplasma::$4 [220] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 +Simple Condition (bool~) doplasma::$7 [235] unroll if((byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6 +Simple Condition (bool~) doplasma::$8 [239] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 +Simple Condition (bool~) makecharset::$6 [270] if((byte~) makecharset::$4<=(byte) makecharset::s#3) goto makecharset::@4 +Simple Condition (bool~) makecharset::$7 [274] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 +Simple Condition (bool~) makecharset::$10 [283] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 +Simple Condition (bool~) makecharset::$13 [288] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 +Simple Condition (bool~) makecharset::$15 [292] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -1590,11 +1588,11 @@ Constant (const byte) c2A#17 = 0 Constant (const byte) c2B#17 = 0 Constant (const byte[$28]) doplasma::xbuf#0 = { fill( $28, 0) } Constant (const byte[$19]) doplasma::ybuf#0 = { fill( $19, 0) } -Constant (const byte) doplasma::i#0 = 1 +Constant (const byte) doplasma::yprev#0 = 0 +Constant (const byte) doplasma::i#0 = 0 Constant (const byte) doplasma::i1#0 = 0 Constant (const byte) doplasma::i2#0 = 0 -Constant (const byte/signed byte/word/signed word/dword/signed dword) doplasma::$8 = 0*$28 -Constant (const byte) doplasma::ii#0 = 1 +Constant (const byte) doplasma::ii#0 = 0 Constant (const byte[8]) makecharset::bittab#0 = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const word) makecharset::c#0 = 0 Constant (const byte) makecharset::i#0 = 0 @@ -1625,14 +1623,8 @@ Constant (const byte/word/dword) main::toD0181_$7#0 = main::toD0181_$6#0&$f Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification -Consolidated array index constant in *(doplasma::ybuf#0+0) -Consolidated array index constant in assignment *(doplasma::ybuf#0+-1 + doplasma::$2) -Consolidated array index constant in *(doplasma::ybuf#0+0) -Removed zero-constant in assignment doplasma::$9 -Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination [24] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs -Inferred type updated to byte in [35] (byte/signed word/word/dword/signed dword~) doplasma::$2 ← (byte) doplasma::i#2 Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -1653,10 +1645,7 @@ Culled Empty Block (label) makecharset::@12 Culled Empty Block (label) makecharset::@14 Culled Empty Block (label) @29 Successful SSA optimization Pass2CullEmptyBlocks -Alias (byte) doplasma::i#2 = (byte~) doplasma::$2 -Alias (byte*) doplasma::screen#1 = (byte*~) doplasma::$9 -Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) doplasma::screen#1 +Self Phi Eliminated (byte*) doplasma::screen#2 Self Phi Eliminated (byte) c1A#20 Self Phi Eliminated (byte) c1B#20 Self Phi Eliminated (byte) c2A#22 @@ -1667,7 +1656,7 @@ Self Phi Eliminated (byte*) makecharset::charset#6 Self Phi Eliminated (byte*) print_line_cursor#39 Self Phi Eliminated (byte*) print_char_cursor#44 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) doplasma::screen#1 (const byte*) doplasma::screen#0 +Redundant Phi (byte*) doplasma::screen#2 (const byte*) doplasma::screen#0 Redundant Phi (byte) c1A#20 (byte) c1A#3 Redundant Phi (byte) c1B#20 (byte) c1B#3 Redundant Phi (byte) c2A#22 (byte) c2A#3 @@ -1678,8 +1667,8 @@ Redundant Phi (byte*) makecharset::charset#6 (byte*) makecharset::charset#7 Redundant Phi (byte*) print_line_cursor#39 (byte*) print_line_cursor#40 Redundant Phi (byte*) print_char_cursor#44 (byte*) print_char_cursor#45 Successful SSA optimization Pass2RedundantPhiElimination -Inferred type updated to word in [79] (word/signed dword/dword~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -Inferred type updated to word in [80] (word/signed dword/dword~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 +Inferred type updated to word in [76] (word/signed dword/dword~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 +Inferred type updated to word in [77] (word/signed dword/dword~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 Successful SSA optimization PassNEliminateUnusedVars Self Phi Eliminated (byte*) makecharset::charset#7 Successful SSA optimization Pass2SelfPhiElimination @@ -1691,14 +1680,14 @@ Alias (byte) doplasma::val#0 = (byte) doplasma::val#2 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#2 (const byte) doplasma::ii#0 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$10 = doplasma::ii#0*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$5 = doplasma::ii#0*$28 Constant (const byte) doplasma::ii#1 = ++doplasma::ii#0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$11 = doplasma::screen#0+doplasma::$10 +Constant (const byte*) doplasma::$6 = doplasma::screen#0+doplasma::$5 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#0) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [55] if((const byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_1 +if() condition always true - replacing block destination [52] if((const byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_1 tails: doplasma::@6_1 blocks: doplasma::@6_1 Successful SSA optimization Pass2LoopUnroll @@ -1706,14 +1695,14 @@ Alias (byte) doplasma::val#1 = (byte) doplasma::val#3 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#3 (const byte) doplasma::ii#1 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$14 = doplasma::ii#1*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$9 = doplasma::ii#1*$28 Constant (const byte) doplasma::ii#4 = ++doplasma::ii#1 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$15 = doplasma::screen#0+doplasma::$14 +Constant (const byte*) doplasma::$10 = doplasma::screen#0+doplasma::$9 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#1) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [45] if((const byte) doplasma::ii#4<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_2 +if() condition always true - replacing block destination [42] if((const byte) doplasma::ii#4<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_2 tails: doplasma::@6_2 blocks: doplasma::@6_2 Successful SSA optimization Pass2LoopUnroll @@ -1721,14 +1710,14 @@ Alias (byte) doplasma::val#4 = (byte) doplasma::val#5 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#5 (const byte) doplasma::ii#4 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$16 = doplasma::ii#4*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$11 = doplasma::ii#4*$28 Constant (const byte) doplasma::ii#6 = ++doplasma::ii#4 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$17 = doplasma::screen#0+doplasma::$16 +Constant (const byte*) doplasma::$12 = doplasma::screen#0+doplasma::$11 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#4) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [47] if((const byte) doplasma::ii#6<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_3 +if() condition always true - replacing block destination [44] if((const byte) doplasma::ii#6<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_3 tails: doplasma::@6_3 blocks: doplasma::@6_3 Successful SSA optimization Pass2LoopUnroll @@ -1736,14 +1725,14 @@ Alias (byte) doplasma::val#6 = (byte) doplasma::val#7 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#7 (const byte) doplasma::ii#6 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$18 = doplasma::ii#6*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$13 = doplasma::ii#6*$28 Constant (const byte) doplasma::ii#8 = ++doplasma::ii#6 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$19 = doplasma::screen#0+doplasma::$18 +Constant (const byte*) doplasma::$14 = doplasma::screen#0+doplasma::$13 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#6) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [49] if((const byte) doplasma::ii#8<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_4 +if() condition always true - replacing block destination [46] if((const byte) doplasma::ii#8<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_4 tails: doplasma::@6_4 blocks: doplasma::@6_4 Successful SSA optimization Pass2LoopUnroll @@ -1751,14 +1740,14 @@ Alias (byte) doplasma::val#8 = (byte) doplasma::val#9 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#9 (const byte) doplasma::ii#8 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$20 = doplasma::ii#8*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$15 = doplasma::ii#8*$28 Constant (const byte) doplasma::ii#10 = ++doplasma::ii#8 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$21 = doplasma::screen#0+doplasma::$20 +Constant (const byte*) doplasma::$16 = doplasma::screen#0+doplasma::$15 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#8) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [51] if((const byte) doplasma::ii#10<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_5 +if() condition always true - replacing block destination [48] if((const byte) doplasma::ii#10<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_5 tails: doplasma::@6_5 blocks: doplasma::@6_5 Successful SSA optimization Pass2LoopUnroll @@ -1766,14 +1755,14 @@ Alias (byte) doplasma::val#10 = (byte) doplasma::val#11 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#11 (const byte) doplasma::ii#10 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const byte/signed word/word/dword/signed dword) doplasma::$22 = doplasma::ii#10*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$17 = doplasma::ii#10*$28 Constant (const byte) doplasma::ii#12 = ++doplasma::ii#10 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$23 = doplasma::screen#0+doplasma::$22 +Constant (const byte*) doplasma::$18 = doplasma::screen#0+doplasma::$17 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#10) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [53] if((const byte) doplasma::ii#12<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_6 +if() condition always true - replacing block destination [50] if((const byte) doplasma::ii#12<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_6 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_6 tails: doplasma::@6_6 blocks: doplasma::@6_6 Successful SSA optimization Pass2LoopUnroll @@ -1781,14 +1770,14 @@ Alias (byte) doplasma::val#12 = (byte) doplasma::val#13 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#13 (const byte) doplasma::ii#12 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$24 = doplasma::ii#12*$28 +Constant (const byte/signed word/word/dword/signed dword) doplasma::$19 = doplasma::ii#12*$28 Constant (const byte) doplasma::ii#14 = ++doplasma::ii#12 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$25 = doplasma::screen#0+doplasma::$24 +Constant (const byte*) doplasma::$20 = doplasma::screen#0+doplasma::$19 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#12) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [55] if((const byte) doplasma::ii#14<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_7 +if() condition always true - replacing block destination [52] if((const byte) doplasma::ii#14<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_7 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_7 tails: doplasma::@6_7 blocks: doplasma::@6_7 Successful SSA optimization Pass2LoopUnroll @@ -1796,14 +1785,14 @@ Alias (byte) doplasma::val#14 = (byte) doplasma::val#15 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#15 (const byte) doplasma::ii#14 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$26 = doplasma::ii#14*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$21 = doplasma::ii#14*$28 Constant (const byte) doplasma::ii#16 = ++doplasma::ii#14 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$27 = doplasma::screen#0+doplasma::$26 +Constant (const byte*) doplasma::$22 = doplasma::screen#0+doplasma::$21 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#14) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [57] if((const byte) doplasma::ii#16<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_8 +if() condition always true - replacing block destination [54] if((const byte) doplasma::ii#16<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_8 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_8 tails: doplasma::@6_8 blocks: doplasma::@6_8 Successful SSA optimization Pass2LoopUnroll @@ -1811,14 +1800,14 @@ Alias (byte) doplasma::val#16 = (byte) doplasma::val#17 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#17 (const byte) doplasma::ii#16 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$28 = doplasma::ii#16*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$23 = doplasma::ii#16*$28 Constant (const byte) doplasma::ii#18 = ++doplasma::ii#16 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$29 = doplasma::screen#0+doplasma::$28 +Constant (const byte*) doplasma::$24 = doplasma::screen#0+doplasma::$23 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#16) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [59] if((const byte) doplasma::ii#18<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_9 +if() condition always true - replacing block destination [56] if((const byte) doplasma::ii#18<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_9 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_9 tails: doplasma::@6_9 blocks: doplasma::@6_9 Successful SSA optimization Pass2LoopUnroll @@ -1826,14 +1815,14 @@ Alias (byte) doplasma::val#18 = (byte) doplasma::val#19 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#19 (const byte) doplasma::ii#18 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$30 = doplasma::ii#18*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$25 = doplasma::ii#18*$28 Constant (const byte) doplasma::ii#20 = ++doplasma::ii#18 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$31 = doplasma::screen#0+doplasma::$30 +Constant (const byte*) doplasma::$26 = doplasma::screen#0+doplasma::$25 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#18) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [61] if((const byte) doplasma::ii#20<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_10 +if() condition always true - replacing block destination [58] if((const byte) doplasma::ii#20<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_10 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_10 tails: doplasma::@6_10 blocks: doplasma::@6_10 Successful SSA optimization Pass2LoopUnroll @@ -1841,14 +1830,14 @@ Alias (byte) doplasma::val#20 = (byte) doplasma::val#21 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#21 (const byte) doplasma::ii#20 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$32 = doplasma::ii#20*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$27 = doplasma::ii#20*$28 Constant (const byte) doplasma::ii#22 = ++doplasma::ii#20 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$33 = doplasma::screen#0+doplasma::$32 +Constant (const byte*) doplasma::$28 = doplasma::screen#0+doplasma::$27 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#20) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [63] if((const byte) doplasma::ii#22<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_11 +if() condition always true - replacing block destination [60] if((const byte) doplasma::ii#22<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_11 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_11 tails: doplasma::@6_11 blocks: doplasma::@6_11 Successful SSA optimization Pass2LoopUnroll @@ -1856,14 +1845,14 @@ Alias (byte) doplasma::val#22 = (byte) doplasma::val#23 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#23 (const byte) doplasma::ii#22 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$34 = doplasma::ii#22*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$29 = doplasma::ii#22*$28 Constant (const byte) doplasma::ii#24 = ++doplasma::ii#22 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$35 = doplasma::screen#0+doplasma::$34 +Constant (const byte*) doplasma::$30 = doplasma::screen#0+doplasma::$29 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#22) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [65] if((const byte) doplasma::ii#24<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_12 +if() condition always true - replacing block destination [62] if((const byte) doplasma::ii#24<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_12 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_12 tails: doplasma::@6_12 blocks: doplasma::@6_12 Successful SSA optimization Pass2LoopUnroll @@ -1871,14 +1860,14 @@ Alias (byte) doplasma::val#24 = (byte) doplasma::val#25 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#25 (const byte) doplasma::ii#24 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$36 = doplasma::ii#24*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$31 = doplasma::ii#24*$28 Constant (const byte) doplasma::ii#26 = ++doplasma::ii#24 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$37 = doplasma::screen#0+doplasma::$36 +Constant (const byte*) doplasma::$32 = doplasma::screen#0+doplasma::$31 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#24) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [67] if((const byte) doplasma::ii#26<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_13 +if() condition always true - replacing block destination [64] if((const byte) doplasma::ii#26<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_13 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_13 tails: doplasma::@6_13 blocks: doplasma::@6_13 Successful SSA optimization Pass2LoopUnroll @@ -1886,14 +1875,14 @@ Alias (byte) doplasma::val#26 = (byte) doplasma::val#27 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#27 (const byte) doplasma::ii#26 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$38 = doplasma::ii#26*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$33 = doplasma::ii#26*$28 Constant (const byte) doplasma::ii#28 = ++doplasma::ii#26 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$39 = doplasma::screen#0+doplasma::$38 +Constant (const byte*) doplasma::$34 = doplasma::screen#0+doplasma::$33 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#26) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [69] if((const byte) doplasma::ii#28<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_14 +if() condition always true - replacing block destination [66] if((const byte) doplasma::ii#28<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_14 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_14 tails: doplasma::@6_14 blocks: doplasma::@6_14 Successful SSA optimization Pass2LoopUnroll @@ -1901,14 +1890,14 @@ Alias (byte) doplasma::val#28 = (byte) doplasma::val#29 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#29 (const byte) doplasma::ii#28 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$40 = doplasma::ii#28*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$35 = doplasma::ii#28*$28 Constant (const byte) doplasma::ii#30 = ++doplasma::ii#28 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$41 = doplasma::screen#0+doplasma::$40 +Constant (const byte*) doplasma::$36 = doplasma::screen#0+doplasma::$35 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#28) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [71] if((const byte) doplasma::ii#30<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_15 +if() condition always true - replacing block destination [68] if((const byte) doplasma::ii#30<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_15 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_15 tails: doplasma::@6_15 blocks: doplasma::@6_15 Successful SSA optimization Pass2LoopUnroll @@ -1916,14 +1905,14 @@ Alias (byte) doplasma::val#30 = (byte) doplasma::val#31 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#31 (const byte) doplasma::ii#30 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$42 = doplasma::ii#30*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$37 = doplasma::ii#30*$28 Constant (const byte) doplasma::ii#32 = ++doplasma::ii#30 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$43 = doplasma::screen#0+doplasma::$42 +Constant (const byte*) doplasma::$38 = doplasma::screen#0+doplasma::$37 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#30) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [73] if((const byte) doplasma::ii#32<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_16 +if() condition always true - replacing block destination [70] if((const byte) doplasma::ii#32<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_16 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_16 tails: doplasma::@6_16 blocks: doplasma::@6_16 Successful SSA optimization Pass2LoopUnroll @@ -1931,14 +1920,14 @@ Alias (byte) doplasma::val#32 = (byte) doplasma::val#33 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#33 (const byte) doplasma::ii#32 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$44 = doplasma::ii#32*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$39 = doplasma::ii#32*$28 Constant (const byte) doplasma::ii#34 = ++doplasma::ii#32 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$45 = doplasma::screen#0+doplasma::$44 +Constant (const byte*) doplasma::$40 = doplasma::screen#0+doplasma::$39 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#32) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [75] if((const byte) doplasma::ii#34<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_17 +if() condition always true - replacing block destination [72] if((const byte) doplasma::ii#34<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_17 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_17 tails: doplasma::@6_17 blocks: doplasma::@6_17 Successful SSA optimization Pass2LoopUnroll @@ -1946,14 +1935,14 @@ Alias (byte) doplasma::val#34 = (byte) doplasma::val#35 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#35 (const byte) doplasma::ii#34 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$46 = doplasma::ii#34*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$41 = doplasma::ii#34*$28 Constant (const byte) doplasma::ii#36 = ++doplasma::ii#34 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$47 = doplasma::screen#0+doplasma::$46 +Constant (const byte*) doplasma::$42 = doplasma::screen#0+doplasma::$41 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#34) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [77] if((const byte) doplasma::ii#36<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_18 +if() condition always true - replacing block destination [74] if((const byte) doplasma::ii#36<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_18 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_18 tails: doplasma::@6_18 blocks: doplasma::@6_18 Successful SSA optimization Pass2LoopUnroll @@ -1961,14 +1950,14 @@ Alias (byte) doplasma::val#36 = (byte) doplasma::val#37 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#37 (const byte) doplasma::ii#36 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$48 = doplasma::ii#36*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$43 = doplasma::ii#36*$28 Constant (const byte) doplasma::ii#38 = ++doplasma::ii#36 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$49 = doplasma::screen#0+doplasma::$48 +Constant (const byte*) doplasma::$44 = doplasma::screen#0+doplasma::$43 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#36) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [79] if((const byte) doplasma::ii#38<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_19 +if() condition always true - replacing block destination [76] if((const byte) doplasma::ii#38<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_19 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_19 tails: doplasma::@6_19 blocks: doplasma::@6_19 Successful SSA optimization Pass2LoopUnroll @@ -1976,14 +1965,14 @@ Alias (byte) doplasma::val#38 = (byte) doplasma::val#39 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#39 (const byte) doplasma::ii#38 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$50 = doplasma::ii#38*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$45 = doplasma::ii#38*$28 Constant (const byte) doplasma::ii#40 = ++doplasma::ii#38 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$51 = doplasma::screen#0+doplasma::$50 +Constant (const byte*) doplasma::$46 = doplasma::screen#0+doplasma::$45 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#38) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [81] if((const byte) doplasma::ii#40<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_20 +if() condition always true - replacing block destination [78] if((const byte) doplasma::ii#40<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_20 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_20 tails: doplasma::@6_20 blocks: doplasma::@6_20 Successful SSA optimization Pass2LoopUnroll @@ -1991,14 +1980,14 @@ Alias (byte) doplasma::val#40 = (byte) doplasma::val#41 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#41 (const byte) doplasma::ii#40 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$52 = doplasma::ii#40*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$47 = doplasma::ii#40*$28 Constant (const byte) doplasma::ii#42 = ++doplasma::ii#40 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$53 = doplasma::screen#0+doplasma::$52 +Constant (const byte*) doplasma::$48 = doplasma::screen#0+doplasma::$47 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#40) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [83] if((const byte) doplasma::ii#42<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_21 +if() condition always true - replacing block destination [80] if((const byte) doplasma::ii#42<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_21 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_21 tails: doplasma::@6_21 blocks: doplasma::@6_21 Successful SSA optimization Pass2LoopUnroll @@ -2006,14 +1995,14 @@ Alias (byte) doplasma::val#42 = (byte) doplasma::val#43 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#43 (const byte) doplasma::ii#42 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$54 = doplasma::ii#42*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$49 = doplasma::ii#42*$28 Constant (const byte) doplasma::ii#44 = ++doplasma::ii#42 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$55 = doplasma::screen#0+doplasma::$54 +Constant (const byte*) doplasma::$50 = doplasma::screen#0+doplasma::$49 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#42) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [85] if((const byte) doplasma::ii#44<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_22 +if() condition always true - replacing block destination [82] if((const byte) doplasma::ii#44<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_22 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_22 tails: doplasma::@6_22 blocks: doplasma::@6_22 Successful SSA optimization Pass2LoopUnroll @@ -2021,14 +2010,14 @@ Alias (byte) doplasma::val#44 = (byte) doplasma::val#45 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#45 (const byte) doplasma::ii#44 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$56 = doplasma::ii#44*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$51 = doplasma::ii#44*$28 Constant (const byte) doplasma::ii#46 = ++doplasma::ii#44 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$57 = doplasma::screen#0+doplasma::$56 +Constant (const byte*) doplasma::$52 = doplasma::screen#0+doplasma::$51 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#44) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [87] if((const byte) doplasma::ii#46<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_23 +if() condition always true - replacing block destination [84] if((const byte) doplasma::ii#46<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_23 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_23 tails: doplasma::@6_23 blocks: doplasma::@6_23 Successful SSA optimization Pass2LoopUnroll @@ -2036,28 +2025,44 @@ Alias (byte) doplasma::val#46 = (byte) doplasma::val#47 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) doplasma::ii#47 (const byte) doplasma::ii#46 Successful SSA optimization Pass2RedundantPhiElimination -Constant (const word/signed word/dword/signed dword) doplasma::$58 = doplasma::ii#46*$28 +Constant (const word/signed word/dword/signed dword) doplasma::$53 = doplasma::ii#46*$28 Constant (const byte) doplasma::ii#48 = ++doplasma::ii#46 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) doplasma::$59 = doplasma::screen#0+doplasma::$58 +Constant (const byte*) doplasma::$54 = doplasma::screen#0+doplasma::$53 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#46) Successful SSA optimization Pass2ConstantAdditionElimination -Removing PHI-reference to removed block (doplasma::@6_23) in block doplasma::@6_24 -Removing PHI-reference to removed block (doplasma::@6_23) in block doplasma::@6_24 -if() condition always false - eliminating [89] if((const byte) doplasma::ii#48<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_24 +if() condition always true - replacing block destination [86] if((const byte) doplasma::ii#48<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_24 +Successful SSA optimization Pass2ConstantIfs +Unrolling loop Loop head: doplasma::@6_24 tails: doplasma::@6_24 blocks: doplasma::@6_24 +Successful SSA optimization Pass2LoopUnroll +Alias (byte) doplasma::val#48 = (byte) doplasma::val#49 +Successful SSA optimization Pass2AliasElimination +Redundant Phi (byte) doplasma::ii#49 (const byte) doplasma::ii#48 +Successful SSA optimization Pass2RedundantPhiElimination +Constant (const word/signed word/dword/signed dword) doplasma::$55 = doplasma::ii#48*$28 +Constant (const byte) doplasma::ii#50 = ++doplasma::ii#48 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) doplasma::$56 = doplasma::screen#0+doplasma::$55 +Successful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#48) +Successful SSA optimization Pass2ConstantAdditionElimination +Removing PHI-reference to removed block (doplasma::@6_24) in block doplasma::@6_25 +Removing PHI-reference to removed block (doplasma::@6_24) in block doplasma::@6_25 +if() condition always false - eliminating [88] if((const byte) doplasma::ii#50<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_25 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars -Eliminating variable (byte) doplasma::val#49 from unused block doplasma::@6_24 -Eliminating variable (byte) doplasma::ii#49 from unused block doplasma::@6_24 -Eliminating variable (byte) doplasma::val#50 from unused block doplasma::@6_24 -Eliminating variable (byte/signed word/word/dword/signed dword~) doplasma::$60 from unused block doplasma::@6_24 -Eliminating variable (byte*~) doplasma::$61 from unused block doplasma::@6_24 -Eliminating variable (byte) doplasma::ii#50 from unused block doplasma::@6_24 -Removing unused block doplasma::@6_24 +Eliminating variable (byte) doplasma::val#51 from unused block doplasma::@6_25 +Eliminating variable (byte) doplasma::ii#51 from unused block doplasma::@6_25 +Eliminating variable (byte) doplasma::val#52 from unused block doplasma::@6_25 +Eliminating variable (byte/signed word/word/dword/signed dword~) doplasma::$57 from unused block doplasma::@6_25 +Eliminating variable (byte*~) doplasma::$58 from unused block doplasma::@6_25 +Eliminating variable (byte) doplasma::ii#52 from unused block doplasma::@6_25 +Removing unused block doplasma::@6_25 Successful SSA optimization Pass2EliminateUnusedBlocks Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) main::col#0 +Inlining constant with var siblings (const byte) doplasma::yprev#0 Inlining constant with var siblings (const byte) doplasma::i#0 Inlining constant with var siblings (const byte) doplasma::i1#0 Inlining constant with var siblings (const byte) doplasma::i2#0 @@ -2085,6 +2090,7 @@ Inlining constant with different constant siblings (const byte) doplasma::ii#40 Inlining constant with different constant siblings (const byte) doplasma::ii#42 Inlining constant with different constant siblings (const byte) doplasma::ii#44 Inlining constant with different constant siblings (const byte) doplasma::ii#46 +Inlining constant with different constant siblings (const byte) doplasma::ii#48 Inlining constant with var siblings (const word) makecharset::c#0 Inlining constant with var siblings (const byte) makecharset::i#0 Inlining constant with var siblings (const byte) makecharset::b#0 @@ -2093,109 +2099,115 @@ Inlining constant with var siblings (const byte) c1A#16 Inlining constant with var siblings (const byte) c1B#16 Inlining constant with var siblings (const byte) c2A#17 Inlining constant with var siblings (const byte) c2B#17 -Constant inlined doplasma::ii#46 = ++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#46 = ++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#48 = ++++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::col#0 = (const byte*) COLS#0 -Constant inlined doplasma::ii#40 = ++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#42 = ++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#44 = ++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#6 = ++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#8 = ++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#40 = ++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#42 = ++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#44 = ++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#6 = ++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#8 = ++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined c1A#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::ii#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#4 = ++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#4 = ++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$7#0 = >((word))(const byte*) CHARSET#0/(byte/signed byte/word/signed word/dword/signed dword) 4&(byte/signed byte/word/signed word/dword/signed dword) $f -Constant inlined doplasma::$57 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_$3#0 = >((word))(const byte*) SCREEN1#0&(word/signed word/dword/signed dword) $3fff*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined doplasma::$56 = ++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$59 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$58 = ++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$53 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$52 = ++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$55 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$56 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$53 = ++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$52 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$55 = ++++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined makecharset::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$54 = ++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$51 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$50 = ++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$54 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$51 = ++++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$50 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN1#0 -Constant inlined doplasma::ii#24 = ++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#26 = ++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#24 = ++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#26 = ++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8 -Constant inlined doplasma::ii#28 = ++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#20 = ++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#22 = ++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#36 = ++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#38 = ++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#28 = ++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#20 = ++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#22 = ++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::$9 = ++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$6 = (const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::ii#36 = ++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::$5 = (byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::ii#38 = ++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN1#0 -Constant inlined doplasma::ii#30 = ++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#30 = ++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::sc#0 = (const byte*) print_line_cursor#0 -Constant inlined doplasma::ii#32 = ++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#34 = ++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#32 = ++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#34 = ++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::$2 = (const byte*) COLS#0+(word/signed word/dword/signed dword) $3e8 Constant inlined main::toD0181_$4#0 = ((word))(const byte*) CHARSET#0 Constant inlined c2B#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined doplasma::i2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$28 = ++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$27 = (const byte*) SCREEN1#0+++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$29 = (const byte*) SCREEN1#0+++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$24 = ++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$23 = (const byte*) SCREEN1#0+++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$26 = ++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$25 = (const byte*) SCREEN1#0+++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$20 = ++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$28 = (const byte*) SCREEN1#0+++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$27 = ++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$29 = ++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$24 = (const byte*) SCREEN1#0+++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$23 = ++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$26 = (const byte*) SCREEN1#0+++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$25 = ++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$20 = (const byte*) SCREEN1#0+++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined c2A#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$22 = ++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$21 = (const byte*) SCREEN1#0+++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::ii#14 = ++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#16 = ++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#18 = ++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::$22 = (const byte*) SCREEN1#0+++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$21 = ++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::ii#14 = ++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#16 = ++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#18 = ++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN1#0&(word/signed word/dword/signed dword) $3fff -Constant inlined doplasma::ii#10 = ++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined doplasma::ii#12 = ++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::ii#10 = ++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::ii#12 = ++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined makecharset::ii#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$17 = (const byte*) SCREEN1#0+++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$17 = ++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined makecharset::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$16 = ++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$16 = (const byte*) SCREEN1#0+++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined makecharset::charset#0 = (const byte*) CHARSET#0 -Constant inlined doplasma::$19 = (const byte*) SCREEN1#0+++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$18 = ++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$19 = ++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$18 = (const byte*) SCREEN1#0+++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$13 = ++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined doplasma::screen#0 = (const byte*) SCREEN1#0 -Constant inlined doplasma::$15 = (const byte*) SCREEN1#0+++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$12 = (const byte*) SCREEN1#0+++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$15 = ++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_$5#0 = >((word))(const byte*) CHARSET#0 -Constant inlined doplasma::$14 = ++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$11 = (const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$10 = (byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$14 = (const byte*) SCREEN1#0+++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$11 = ++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$10 = (const byte*) SCREEN1#0+++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_gfx#0 = (const byte*) CHARSET#0 -Constant inlined doplasma::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined doplasma::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined doplasma::i1#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$49 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$46 = ++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$45 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$48 = ++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$47 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$42 = ++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$41 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$44 = ++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$43 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$40 = ++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::yprev#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined doplasma::$49 = ++++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$46 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$45 = ++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$48 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$47 = ++++++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$42 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$41 = ++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$44 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$43 = ++++++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$40 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_$6#0 = >((word))(const byte*) CHARSET#0/(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined doplasma::$39 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$38 = ++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$39 = ++++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$38 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN1#0&(word/signed word/dword/signed dword) $3fff*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined doplasma::$35 = (const byte*) SCREEN1#0+++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$35 = ++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined c1B#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$34 = ++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$37 = (const byte*) SCREEN1#0+++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$36 = ++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$31 = (const byte*) SCREEN1#0+++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$30 = ++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$34 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$37 = ++++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$36 = (const byte*) SCREEN1#0+++++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$31 = ++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$30 = (const byte*) SCREEN1#0+++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Constant inlined makecharset::b#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined doplasma::$33 = (const byte*) SCREEN1#0+++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 -Constant inlined doplasma::$32 = ++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$33 = ++++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 +Constant inlined doplasma::$32 = (const byte*) SCREEN1#0+++++++++++++++++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero doplasma::ybuf#0+0 -Simplifying constant plus zero doplasma::ybuf#0+0 -Simplifying constant integer increment ++1 +Simplifying constant multiply by zero 0*$28 +Simplifying constant integer increment ++0 +Simplifying constant integer increment ++0 +Simplifying constant integer increment ++0 Simplifying constant integer increment ++1 Simplifying constant integer increment ++1 Simplifying constant integer increment ++2 @@ -2242,6 +2254,8 @@ Simplifying constant integer increment ++$16 Simplifying constant integer increment ++$16 Simplifying constant integer increment ++$17 Successful SSA optimization Pass2ConstantSimplification +Simplifying constant plus zero SCREEN1#0+0 +Simplifying constant integer increment ++1 Simplifying constant integer increment ++2 Simplifying constant integer increment ++3 Simplifying constant integer increment ++4 @@ -2290,22 +2304,23 @@ Calls in [] to main:3 Calls in [main] to makecharset:13 doplasma:18 Calls in [makecharset] to sid_rnd_init:115 print_cls:117 sid_rnd:123 print_char:141 -Created 20 initial phi equivalence classes +Created 21 initial phi equivalence classes Coalesced [19] c1A#28 ← c1A#3 Coalesced [20] c1B#28 ← c1B#3 Coalesced [21] c2A#28 ← c2A#3 Coalesced [22] c2B#28 ← c2B#3 Coalesced [23] main::col#3 ← main::col#1 -Coalesced [28] doplasma::c1a#3 ← doplasma::c1a#0 -Coalesced [29] doplasma::c1b#3 ← doplasma::c1b#0 -Coalesced [42] doplasma::c2a#3 ← doplasma::c2a#0 -Coalesced [43] doplasma::c2b#3 ← doplasma::c2b#0 -Coalesced [107] doplasma::i2#5 ← doplasma::i2#1 -Coalesced [108] doplasma::c2a#4 ← doplasma::c2a#1 -Coalesced [109] doplasma::c2b#4 ← doplasma::c2b#1 -Coalesced [110] doplasma::i1#3 ← doplasma::i1#1 -Coalesced [111] doplasma::c1a#4 ← doplasma::c1a#1 -Coalesced [112] doplasma::c1b#4 ← doplasma::c1b#1 +Coalesced [26] doplasma::c1a#3 ← doplasma::c1a#0 +Coalesced [27] doplasma::c1b#3 ← doplasma::c1b#0 +Coalesced [40] doplasma::c2a#3 ← doplasma::c2a#0 +Coalesced [41] doplasma::c2b#3 ← doplasma::c2b#0 +Coalesced [106] doplasma::i2#5 ← doplasma::i2#1 +Coalesced [107] doplasma::c2a#4 ← doplasma::c2a#1 +Coalesced [108] doplasma::c2b#4 ← doplasma::c2b#1 +Coalesced [109] doplasma::i1#3 ← doplasma::i1#1 +Coalesced [110] doplasma::c1a#4 ← doplasma::c1a#1 +Coalesced [111] doplasma::c1b#4 ← doplasma::c1b#1 +Not coalescing [112] doplasma::yprev#3 ← doplasma::yval#0 Coalesced [113] doplasma::i#3 ← doplasma::i#1 Coalesced [129] makecharset::b#9 ← makecharset::b#1 Coalesced [142] print_char_cursor#47 ← print_char_cursor#1 @@ -2317,11 +2332,10 @@ Coalesced [151] makecharset::ii#6 ← makecharset::ii#1 Coalesced [152] makecharset::b#7 ← makecharset::b#3 Coalesced (already) [153] makecharset::b#8 ← makecharset::b#2 Coalesced [165] print_cls::sc#3 ← print_cls::sc#1 -Coalesced down to 18 phi equivalence classes +Coalesced down to 20 phi equivalence classes Culled Empty Block (label) main::@12 Culled Empty Block (label) doplasma::@11 Culled Empty Block (label) doplasma::@10 -Culled Empty Block (label) doplasma::@9 Culled Empty Block (label) makecharset::@15 Culled Empty Block (label) makecharset::@19 Culled Empty Block (label) makecharset::@16 @@ -2331,6 +2345,7 @@ Culled Empty Block (label) print_cls::@3 Renumbering block @25 to @1 Renumbering block @28 to @2 Renumbering block main::@9 to main::@5 +Renumbering block doplasma::@9 to doplasma::@8 Renumbering block makecharset::@11 to makecharset::@10 Renumbering block makecharset::@13 to makecharset::@11 Adding NOP phi() at start of @begin @@ -2393,150 +2408,155 @@ main::@4: scope:[main] from main::@3 doplasma: scope:[doplasma] from main::@4 [19] (byte) doplasma::c1a#0 ← (byte) c1A#1 [20] (byte) doplasma::c1b#0 ← (byte) c1B#1 - [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) - [22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0 to:doplasma::@1 -doplasma::@1: scope:[doplasma] from doplasma doplasma::@1 - [23] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 1 doplasma::@1/(byte) doplasma::i#1 ) - [23] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@1/(byte) doplasma::c1b#1 ) - [23] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@1/(byte) doplasma::c1a#1 ) - [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 - [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 - [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) - [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) - [28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 - [29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 - [30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 +doplasma::@1: scope:[doplasma] from doplasma doplasma::@8 + [21] (byte) doplasma::i#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@8/(byte) doplasma::i#1 ) + [21] (byte) doplasma::yprev#2 ← phi( doplasma/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@8/(byte~) doplasma::yprev#3 ) + [21] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@8/(byte) doplasma::c1b#1 ) + [21] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@8/(byte) doplasma::c1a#1 ) + [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) + [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 + [24] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 + [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 + [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 + [27] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 + [28] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@8 to:doplasma::@2 doplasma::@2: scope:[doplasma] from doplasma::@1 - [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 - [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 - [33] (byte) doplasma::c2a#0 ← (byte) c2A#1 - [34] (byte) doplasma::c2b#0 ← (byte) c2B#1 + [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 + [31] (byte) doplasma::c2a#0 ← (byte) c2A#1 + [32] (byte) doplasma::c2b#0 ← (byte) c2B#1 to:doplasma::@3 doplasma::@3: scope:[doplasma] from doplasma::@2 doplasma::@3 - [35] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 ) - [35] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 ) - [35] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 ) - [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) - [37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 - [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 - [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 - [40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 - [41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 + [33] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@3/(byte) doplasma::i1#1 ) + [33] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 ) + [33] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 ) + [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) + [35] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 + [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 + [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 + [38] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 + [39] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 to:doplasma::@4 doplasma::@4: scope:[doplasma] from doplasma::@3 - [42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 + [40] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 to:doplasma::@5 doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 - [44] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) - [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) - [46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 + [42] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [43] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 - [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 + [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) + [45] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 to:doplasma::@6_1 doplasma::@6_1: scope:[doplasma] from doplasma::@6 - [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 + [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 to:doplasma::@6_2 doplasma::@6_2: scope:[doplasma] from doplasma::@6_1 - [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 + [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 to:doplasma::@6_3 doplasma::@6_3: scope:[doplasma] from doplasma::@6_2 - [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) - [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 + [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 to:doplasma::@6_4 doplasma::@6_4: scope:[doplasma] from doplasma::@6_3 - [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) - [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 + [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) + [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 to:doplasma::@6_5 doplasma::@6_5: scope:[doplasma] from doplasma::@6_4 - [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) - [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 + [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) + [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 to:doplasma::@6_6 doplasma::@6_6: scope:[doplasma] from doplasma::@6_5 - [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) - [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 + [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) + [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 to:doplasma::@6_7 doplasma::@6_7: scope:[doplasma] from doplasma::@6_6 - [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) - [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 + [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) + [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 to:doplasma::@6_8 doplasma::@6_8: scope:[doplasma] from doplasma::@6_7 - [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) - [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 + [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) + [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 to:doplasma::@6_9 doplasma::@6_9: scope:[doplasma] from doplasma::@6_8 - [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) - [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 + [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) + [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 to:doplasma::@6_10 doplasma::@6_10: scope:[doplasma] from doplasma::@6_9 - [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) - [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 + [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) + [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 to:doplasma::@6_11 doplasma::@6_11: scope:[doplasma] from doplasma::@6_10 - [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) - [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 + [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) + [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 to:doplasma::@6_12 doplasma::@6_12: scope:[doplasma] from doplasma::@6_11 - [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) - [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 + [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) + [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 to:doplasma::@6_13 doplasma::@6_13: scope:[doplasma] from doplasma::@6_12 - [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) - [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 + [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) + [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 to:doplasma::@6_14 doplasma::@6_14: scope:[doplasma] from doplasma::@6_13 - [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) - [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 + [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) + [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 to:doplasma::@6_15 doplasma::@6_15: scope:[doplasma] from doplasma::@6_14 - [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) - [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 + [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) + [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 to:doplasma::@6_16 doplasma::@6_16: scope:[doplasma] from doplasma::@6_15 - [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) - [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 + [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) + [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 to:doplasma::@6_17 doplasma::@6_17: scope:[doplasma] from doplasma::@6_16 - [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) - [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 + [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) + [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 to:doplasma::@6_18 doplasma::@6_18: scope:[doplasma] from doplasma::@6_17 - [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) - [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 + [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) + [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 to:doplasma::@6_19 doplasma::@6_19: scope:[doplasma] from doplasma::@6_18 - [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) - [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 + [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) + [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 to:doplasma::@6_20 doplasma::@6_20: scope:[doplasma] from doplasma::@6_19 - [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) - [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 + [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) + [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 to:doplasma::@6_21 doplasma::@6_21: scope:[doplasma] from doplasma::@6_20 - [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) - [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 + [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) + [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 to:doplasma::@6_22 doplasma::@6_22: scope:[doplasma] from doplasma::@6_21 - [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) - [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 + [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) + [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 to:doplasma::@6_23 doplasma::@6_23: scope:[doplasma] from doplasma::@6_22 - [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) - [94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 + [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) + [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 + to:doplasma::@6_24 +doplasma::@6_24: scope:[doplasma] from doplasma::@6_23 + [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) + [93] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50 to:doplasma::@7 -doplasma::@7: scope:[doplasma] from doplasma::@6_23 - [95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 - [96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 +doplasma::@7: scope:[doplasma] from doplasma::@6_24 + [94] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 + [95] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 to:doplasma::@return doplasma::@return: scope:[doplasma] from doplasma::@7 - [97] return + [96] return to:@return +doplasma::@8: scope:[doplasma] from doplasma::@1 + [97] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0 + to:doplasma::@1 makecharset: scope:[makecharset] from main::@2 [98] phi() [99] call sid_rnd_init @@ -2727,30 +2747,28 @@ VARIABLE REGISTER WEIGHTS (byte) WHITE (byte) YELLOW (byte) c1A -(byte) c1A#1 1.0714285714285714 -(byte) c1A#3 0.1911764705882353 +(byte) c1A#1 1.1538461538461537 +(byte) c1A#3 0.18840579710144925 (byte) c1B -(byte) c1B#1 0.9999999999999999 -(byte) c1B#3 0.19402985074626866 +(byte) c1B#1 1.0714285714285714 +(byte) c1B#3 0.1911764705882353 (byte) c2A -(byte) c2A#1 0.6 -(byte) c2A#3 0.22807017543859648 +(byte) c2A#1 0.625 +(byte) c2A#3 0.22413793103448276 (byte) c2B -(byte) c2B#1 0.5769230769230769 -(byte) c2B#3 0.23214285714285715 +(byte) c2B#1 0.6 +(byte) c2B#3 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$0 4.0 (byte~) doplasma::$1 202.0 (byte~) doplasma::$3 202.0 -(byte~) doplasma::$5 202.0 (byte) doplasma::c1a -(byte) doplasma::c1a#0 1.5 -(byte) doplasma::c1a#1 43.285714285714285 -(byte) doplasma::c1a#2 204.0 +(byte) doplasma::c1a#0 2.0 +(byte) doplasma::c1a#1 40.4 +(byte) doplasma::c1a#2 76.25 (byte) doplasma::c1b -(byte) doplasma::c1b#0 2.0 +(byte) doplasma::c1b#0 4.0 (byte) doplasma::c1b#1 50.5 -(byte) doplasma::c1b#2 102.0 +(byte) doplasma::c1b#2 61.0 (byte) doplasma::c2a (byte) doplasma::c2a#0 2.0 (byte) doplasma::c2a#1 50.5 @@ -2760,18 +2778,18 @@ VARIABLE REGISTER WEIGHTS (byte) doplasma::c2b#1 67.33333333333333 (byte) doplasma::c2b#2 76.25 (byte) doplasma::i -(byte) doplasma::i#1 151.5 -(byte) doplasma::i#2 67.33333333333333 +(byte) doplasma::i#1 101.0 +(byte) doplasma::i#2 50.5 (byte) doplasma::i1 (byte) doplasma::i1#1 151.5 (byte) doplasma::i1#2 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 151.5 -(byte) doplasma::i2#2 55.45098039215691 +(byte) doplasma::i2#2 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 151.5 +(byte) doplasma::val#0 202.0 (byte) doplasma::val#1 151.5 (byte) doplasma::val#10 151.5 (byte) doplasma::val#12 151.5 @@ -2793,11 +2811,17 @@ VARIABLE REGISTER WEIGHTS (byte) doplasma::val#42 151.5 (byte) doplasma::val#44 151.5 (byte) doplasma::val#46 151.5 -(byte) doplasma::val#48 202.0 +(byte) doplasma::val#48 151.5 +(byte) doplasma::val#50 202.0 (byte) doplasma::val#6 151.5 (byte) doplasma::val#8 151.5 (byte[$28]) doplasma::xbuf (byte[$19]) doplasma::ybuf +(byte) doplasma::yprev +(byte) doplasma::yprev#2 101.0 +(byte~) doplasma::yprev#3 202.0 +(byte) doplasma::yval +(byte) doplasma::yval#0 43.285714285714285 (void()) main() (byte*) main::col (byte*) main::col#1 16.5 @@ -2865,6 +2889,7 @@ Initial phi equivalence classes [ c2B#1 c2B#3 ] [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] +[ doplasma::yprev#2 doplasma::yprev#3 ] [ doplasma::i#2 doplasma::i#1 ] [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] @@ -2876,10 +2901,9 @@ Initial phi equivalence classes [ makecharset::ii#2 makecharset::ii#1 ] [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -Added variable doplasma::$0 to zero page equivalence class [ doplasma::$0 ] +Added variable doplasma::yval#0 to zero page equivalence class [ doplasma::yval#0 ] Added variable doplasma::$1 to zero page equivalence class [ doplasma::$1 ] Added variable doplasma::$3 to zero page equivalence class [ doplasma::$3 ] -Added variable doplasma::$5 to zero page equivalence class [ doplasma::$5 ] Added variable doplasma::val#0 to zero page equivalence class [ doplasma::val#0 ] Added variable doplasma::val#1 to zero page equivalence class [ doplasma::val#1 ] Added variable doplasma::val#4 to zero page equivalence class [ doplasma::val#4 ] @@ -2905,6 +2929,7 @@ Added variable doplasma::val#42 to zero page equivalence class [ doplasma::val#4 Added variable doplasma::val#44 to zero page equivalence class [ doplasma::val#44 ] Added variable doplasma::val#46 to zero page equivalence class [ doplasma::val#46 ] Added variable doplasma::val#48 to zero page equivalence class [ doplasma::val#48 ] +Added variable doplasma::val#50 to zero page equivalence class [ doplasma::val#50 ] Added variable makecharset::$2 to zero page equivalence class [ makecharset::$2 ] Added variable makecharset::s#0 to zero page equivalence class [ makecharset::s#0 ] Added variable sid_rnd::return#2 to zero page equivalence class [ sid_rnd::return#2 ] @@ -2922,6 +2947,7 @@ Complete equivalence classes [ c2B#1 c2B#3 ] [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] +[ doplasma::yprev#2 doplasma::yprev#3 ] [ doplasma::i#2 doplasma::i#1 ] [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] @@ -2933,10 +2959,9 @@ Complete equivalence classes [ makecharset::ii#2 makecharset::ii#1 ] [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -[ doplasma::$0 ] +[ doplasma::yval#0 ] [ doplasma::$1 ] [ doplasma::$3 ] -[ doplasma::$5 ] [ doplasma::val#0 ] [ doplasma::val#1 ] [ doplasma::val#4 ] @@ -2962,6 +2987,7 @@ Complete equivalence classes [ doplasma::val#44 ] [ doplasma::val#46 ] [ doplasma::val#48 ] +[ doplasma::val#50 ] [ makecharset::$2 ] [ makecharset::s#0 ] [ sid_rnd::return#2 ] @@ -2978,21 +3004,21 @@ Allocated zp ZP_BYTE:6 [ c2A#1 c2A#3 ] Allocated zp ZP_BYTE:7 [ c2B#1 c2B#3 ] Allocated zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Allocated zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Allocated zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] -Allocated zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] -Allocated zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Allocated zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Allocated zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] -Allocated zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] -Allocated zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] -Allocated zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] -Allocated zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] -Allocated zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] -Allocated zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_BYTE:24 [ doplasma::$0 ] -Allocated zp ZP_BYTE:25 [ doplasma::$1 ] -Allocated zp ZP_BYTE:26 [ doplasma::$3 ] -Allocated zp ZP_BYTE:27 [ doplasma::$5 ] +Allocated zp ZP_BYTE:10 [ doplasma::yprev#2 doplasma::yprev#3 ] +Allocated zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] +Allocated zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Allocated zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +Allocated zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] +Allocated zp ZP_BYTE:15 [ doplasma::i2#2 doplasma::i2#1 ] +Allocated zp ZP_WORD:16 [ makecharset::c#2 makecharset::c#1 ] +Allocated zp ZP_WORD:18 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] +Allocated zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] +Allocated zp ZP_BYTE:21 [ makecharset::ii#2 makecharset::ii#1 ] +Allocated zp ZP_BYTE:22 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] +Allocated zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_BYTE:25 [ doplasma::yval#0 ] +Allocated zp ZP_BYTE:26 [ doplasma::$1 ] +Allocated zp ZP_BYTE:27 [ doplasma::$3 ] Allocated zp ZP_BYTE:28 [ doplasma::val#0 ] Allocated zp ZP_BYTE:29 [ doplasma::val#1 ] Allocated zp ZP_BYTE:30 [ doplasma::val#4 ] @@ -3018,20 +3044,22 @@ Allocated zp ZP_BYTE:49 [ doplasma::val#42 ] Allocated zp ZP_BYTE:50 [ doplasma::val#44 ] Allocated zp ZP_BYTE:51 [ doplasma::val#46 ] Allocated zp ZP_BYTE:52 [ doplasma::val#48 ] -Allocated zp ZP_BYTE:53 [ makecharset::$2 ] -Allocated zp ZP_BYTE:54 [ makecharset::s#0 ] -Allocated zp ZP_BYTE:55 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:56 [ makecharset::$3 ] -Allocated zp ZP_BYTE:57 [ makecharset::$4 ] -Allocated zp ZP_WORD:58 [ makecharset::$8 ] -Allocated zp ZP_WORD:60 [ makecharset::$9 ] -Allocated zp ZP_BYTE:62 [ makecharset::$11 ] -Allocated zp ZP_BYTE:63 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:53 [ doplasma::val#50 ] +Allocated zp ZP_BYTE:54 [ makecharset::$2 ] +Allocated zp ZP_BYTE:55 [ makecharset::s#0 ] +Allocated zp ZP_BYTE:56 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:57 [ makecharset::$3 ] +Allocated zp ZP_BYTE:58 [ makecharset::$4 ] +Allocated zp ZP_WORD:59 [ makecharset::$8 ] +Allocated zp ZP_WORD:61 [ makecharset::$9 ] +Allocated zp ZP_BYTE:63 [ makecharset::$11 ] +Allocated zp ZP_BYTE:64 [ sid_rnd::return#0 ] INITIAL ASM //SEG0 File Comments // A KickC version of the plasma routine from the CC65 samples -// This version has an unrolled inner loop to reach ~50FPS +// This version has an unrolled inner loop to reach 50+FPS +// This version also optimizes the inner loop by calculating the Y buffer as a set of differences // (w)2001 by groepaz/hitmen // Cleanup and porting to CC65 by Ullrich von Bassewitz. // Ported to KickC by Jesper Gravgaard. @@ -3058,7 +3086,7 @@ INITIAL ASM .label SCREEN1 = $2800 .label CHARSET = $2000 .label SINTABLE = $1f00 - .label print_char_cursor = $11 + .label print_char_cursor = $12 .label c1A = 4 .label c1B = 5 .label c2A = 6 @@ -3178,19 +3206,19 @@ main: { //SEG45 doplasma // Render plasma to the passed screen doplasma: { - .label _0 = $18 - .label _1 = $19 - .label _3 = $1a - .label _5 = $1b + .label _1 = $1a + .label _3 = $1b .label c1a = 8 .label c1b = 9 - .label i = $a - .label c2a = $b - .label c2b = $c - .label i1 = $d + .label yval = $19 + .label i = $b + .label c2a = $c + .label c2b = $d + .label i1 = $e .label val = $1c .label val_1 = $1d - .label i2 = $e + .label i2 = $f + .label yprev = $a .label val_4 = $1e .label val_6 = $1f .label val_8 = $20 @@ -3214,593 +3242,599 @@ doplasma: { .label val_44 = $32 .label val_46 = $33 .label val_48 = $34 + .label val_50 = $35 //SEG46 [19] (byte) doplasma::c1a#0 ← (byte) c1A#1 -- vbuz1=vbuz2 lda c1A sta c1a //SEG47 [20] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 lda c1B sta c1b - //SEG48 [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 + //SEG48 [21] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] + b1_from_doplasma: + //SEG49 [21] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG50 [21] phi (byte) doplasma::yprev#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#1] -- vbuz1=vbuc1 + lda #0 + sta yprev + //SEG51 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#2] -- register_copy + //SEG52 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#3] -- register_copy + jmp b1 + // Calculate ybuff as a bunch of differences + //SEG53 doplasma::@1 + b1: + //SEG54 [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 ldy c1a lda SINTABLE,y ldy c1b clc adc SINTABLE,y - sta _0 - //SEG49 [22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0 -- _deref_pbuc1=vbuz1 - lda _0 - sta ybuf - //SEG50 [23] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] - b1_from_doplasma: - //SEG51 [23] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 - lda #1 - sta i - //SEG52 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy - //SEG53 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy - jmp b1 - // Calculate ybuff as a bunch of differences - //SEG54 [23] phi from doplasma::@1 to doplasma::@1 [phi:doplasma::@1->doplasma::@1] - b1_from_b1: - //SEG55 [23] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@1->doplasma::@1#0] -- register_copy - //SEG56 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@1->doplasma::@1#1] -- register_copy - //SEG57 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@1->doplasma::@1#2] -- register_copy - jmp b1 - //SEG58 doplasma::@1 - b1: - //SEG59 [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + sta yval + //SEG55 [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuz1=vbuz2_minus_vbuz3 + lda yval + sec + sbc yprev + sta _1 + //SEG56 [24] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _1 + ldy i + sta ybuf,y + //SEG57 [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c1a axs #-[4] stx c1a - //SEG60 [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 + //SEG58 [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 lax c1b axs #-[9] stx c1b - //SEG61 [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 - ldy c1a - lda SINTABLE,y - ldy c1b - clc - adc SINTABLE,y - sta _1 - //SEG62 [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) -- vbuz1=vbuz2_minus_pbuc1_derefidx_vbuz3 - lda _1 - ldy i - sec - sbc ybuf+-1,y - sta _3 - //SEG63 [28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _3 - ldy i - sta ybuf,y - //SEG64 [29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 + //SEG59 [27] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG65 [30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@8 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$19 - bcc b1_from_b1 + bcc b8 jmp b2 - //SEG66 doplasma::@2 + //SEG61 doplasma::@2 b2: - //SEG67 [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG62 [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c1A axs #-[3] stx c1A - //SEG68 [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 + //SEG63 [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 lax c1B axs #5 stx c1B - //SEG69 [33] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 + //SEG64 [31] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 lda c2A sta c2a - //SEG70 [34] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 + //SEG65 [32] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 lda c2B sta c2b - //SEG71 [35] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] + //SEG66 [33] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] b3_from_b2: - //SEG72 [35] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 + //SEG67 [33] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG73 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy - //SEG74 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy + //SEG68 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy + //SEG69 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy jmp b3 - //SEG75 [35] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] + //SEG70 [33] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] b3_from_b3: - //SEG76 [35] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy - //SEG77 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy - //SEG78 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy + //SEG71 [33] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy + //SEG72 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy + //SEG73 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy jmp b3 - //SEG79 doplasma::@3 + //SEG74 doplasma::@3 b3: - //SEG80 [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 + //SEG75 [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 ldy c2a lda SINTABLE,y ldy c2b clc adc SINTABLE,y - sta _5 - //SEG81 [37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 -- pbuc1_derefidx_vbuz1=vbuz2 - lda _5 + sta _3 + //SEG76 [35] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _3 ldy i1 sta xbuf,y - //SEG82 [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG77 [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c2a axs #-[3] stx c2a - //SEG83 [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 + //SEG78 [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 lax c2b axs #-[7] stx c2b - //SEG84 [40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 + //SEG79 [38] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG85 [41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG80 [39] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 lda i1 cmp #$28 bcc b3_from_b3 jmp b4 - //SEG86 doplasma::@4 + //SEG81 doplasma::@4 b4: - //SEG87 [42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG82 [40] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c2A clc adc #2 sta c2A - //SEG88 [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 + //SEG83 [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 lax c2B axs #3 stx c2B - //SEG89 [44] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] + //SEG84 [42] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] b5_from_b4: - //SEG90 [44] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuz1=vbuc1 + //SEG85 [42] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuz1=vbuc1 lda #0 sta i2 jmp b5 - //SEG91 [44] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] + //SEG86 [42] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] b5_from_b7: - //SEG92 [44] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG87 [42] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy jmp b5 - //SEG93 doplasma::@5 + //SEG88 doplasma::@5 b5: - //SEG94 [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 + //SEG89 [43] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuz1=pbuc1_derefidx_vbuz2 + // Find the first value on the row ldy i2 lda xbuf,y - clc - adc ybuf sta val - //SEG95 [46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 - lda val - ldy i2 - sta SCREEN1,y jmp b6 // Calculate the next values as sums of diffs // Use experimental loop unrolling to increase the speed - //SEG96 doplasma::@6 + //SEG90 doplasma::@6 b6: - //SEG97 [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+1 + //SEG91 [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf clc adc val sta val_1 - //SEG98 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG92 [45] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_1 ldy i2 - sta SCREEN1+1*$28,y + sta SCREEN1,y jmp b6_1 - //SEG99 doplasma::@6_1 + //SEG93 doplasma::@6_1 b6_1: - //SEG100 [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+2 + //SEG94 [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+1 clc adc val_1 sta val_4 - //SEG101 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG95 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_4 ldy i2 - sta SCREEN1+2*$28,y + sta SCREEN1+1*$28,y jmp b6_2 - //SEG102 doplasma::@6_2 + //SEG96 doplasma::@6_2 b6_2: - //SEG103 [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+3 + //SEG97 [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+2 clc adc val_4 sta val_6 - //SEG104 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG98 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_6 ldy i2 - sta SCREEN1+3*$28,y + sta SCREEN1+2*$28,y jmp b6_3 - //SEG105 doplasma::@6_3 + //SEG99 doplasma::@6_3 b6_3: - //SEG106 [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+4 + //SEG100 [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+3 clc adc val_6 sta val_8 - //SEG107 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG101 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_8 ldy i2 - sta SCREEN1+4*$28,y + sta SCREEN1+3*$28,y jmp b6_4 - //SEG108 doplasma::@6_4 + //SEG102 doplasma::@6_4 b6_4: - //SEG109 [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+5 + //SEG103 [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+4 clc adc val_8 sta val_10 - //SEG110 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG104 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_10 ldy i2 - sta SCREEN1+5*$28,y + sta SCREEN1+4*$28,y jmp b6_5 - //SEG111 doplasma::@6_5 + //SEG105 doplasma::@6_5 b6_5: - //SEG112 [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+6 + //SEG106 [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+5 clc adc val_10 sta val_12 - //SEG113 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG107 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_12 ldy i2 - sta SCREEN1+6*$28,y + sta SCREEN1+5*$28,y jmp b6_6 - //SEG114 doplasma::@6_6 + //SEG108 doplasma::@6_6 b6_6: - //SEG115 [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+7 + //SEG109 [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+6 clc adc val_12 sta val_14 - //SEG116 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG110 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_14 ldy i2 - sta SCREEN1+7*$28,y + sta SCREEN1+6*$28,y jmp b6_7 - //SEG117 doplasma::@6_7 + //SEG111 doplasma::@6_7 b6_7: - //SEG118 [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+8 + //SEG112 [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+7 clc adc val_14 sta val_16 - //SEG119 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG113 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_16 ldy i2 - sta SCREEN1+8*$28,y + sta SCREEN1+7*$28,y jmp b6_8 - //SEG120 doplasma::@6_8 + //SEG114 doplasma::@6_8 b6_8: - //SEG121 [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+9 + //SEG115 [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+8 clc adc val_16 sta val_18 - //SEG122 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG116 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_18 ldy i2 - sta SCREEN1+9*$28,y + sta SCREEN1+8*$28,y jmp b6_9 - //SEG123 doplasma::@6_9 + //SEG117 doplasma::@6_9 b6_9: - //SEG124 [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$a + //SEG118 [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+9 clc adc val_18 sta val_20 - //SEG125 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG119 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_20 ldy i2 - sta SCREEN1+$a*$28,y + sta SCREEN1+9*$28,y jmp b6_10 - //SEG126 doplasma::@6_10 + //SEG120 doplasma::@6_10 b6_10: - //SEG127 [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$b + //SEG121 [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$a clc adc val_20 sta val_22 - //SEG128 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG122 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_22 ldy i2 - sta SCREEN1+$b*$28,y + sta SCREEN1+$a*$28,y jmp b6_11 - //SEG129 doplasma::@6_11 + //SEG123 doplasma::@6_11 b6_11: - //SEG130 [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$c + //SEG124 [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$b clc adc val_22 sta val_24 - //SEG131 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG125 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_24 ldy i2 - sta SCREEN1+$c*$28,y + sta SCREEN1+$b*$28,y jmp b6_12 - //SEG132 doplasma::@6_12 + //SEG126 doplasma::@6_12 b6_12: - //SEG133 [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$d + //SEG127 [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$c clc adc val_24 sta val_26 - //SEG134 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG128 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_26 ldy i2 - sta SCREEN1+$d*$28,y + sta SCREEN1+$c*$28,y jmp b6_13 - //SEG135 doplasma::@6_13 + //SEG129 doplasma::@6_13 b6_13: - //SEG136 [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$e + //SEG130 [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$d clc adc val_26 sta val_28 - //SEG137 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG131 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_28 ldy i2 - sta SCREEN1+$e*$28,y + sta SCREEN1+$d*$28,y jmp b6_14 - //SEG138 doplasma::@6_14 + //SEG132 doplasma::@6_14 b6_14: - //SEG139 [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$f + //SEG133 [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$e clc adc val_28 sta val_30 - //SEG140 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG134 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_30 ldy i2 - sta SCREEN1+$f*$28,y + sta SCREEN1+$e*$28,y jmp b6_15 - //SEG141 doplasma::@6_15 + //SEG135 doplasma::@6_15 b6_15: - //SEG142 [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$10 + //SEG136 [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$f clc adc val_30 sta val_32 - //SEG143 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG137 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_32 ldy i2 - sta SCREEN1+$10*$28,y + sta SCREEN1+$f*$28,y jmp b6_16 - //SEG144 doplasma::@6_16 + //SEG138 doplasma::@6_16 b6_16: - //SEG145 [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$11 + //SEG139 [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$10 clc adc val_32 sta val_34 - //SEG146 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG140 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_34 ldy i2 - sta SCREEN1+$11*$28,y + sta SCREEN1+$10*$28,y jmp b6_17 - //SEG147 doplasma::@6_17 + //SEG141 doplasma::@6_17 b6_17: - //SEG148 [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$12 + //SEG142 [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$11 clc adc val_34 sta val_36 - //SEG149 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG143 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_36 ldy i2 - sta SCREEN1+$12*$28,y + sta SCREEN1+$11*$28,y jmp b6_18 - //SEG150 doplasma::@6_18 + //SEG144 doplasma::@6_18 b6_18: - //SEG151 [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$13 + //SEG145 [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$12 clc adc val_36 sta val_38 - //SEG152 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG146 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_38 ldy i2 - sta SCREEN1+$13*$28,y + sta SCREEN1+$12*$28,y jmp b6_19 - //SEG153 doplasma::@6_19 + //SEG147 doplasma::@6_19 b6_19: - //SEG154 [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$14 + //SEG148 [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$13 clc adc val_38 sta val_40 - //SEG155 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG149 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_40 ldy i2 - sta SCREEN1+$14*$28,y + sta SCREEN1+$13*$28,y jmp b6_20 - //SEG156 doplasma::@6_20 + //SEG150 doplasma::@6_20 b6_20: - //SEG157 [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$15 + //SEG151 [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$14 clc adc val_40 sta val_42 - //SEG158 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG152 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_42 ldy i2 - sta SCREEN1+$15*$28,y + sta SCREEN1+$14*$28,y jmp b6_21 - //SEG159 doplasma::@6_21 + //SEG153 doplasma::@6_21 b6_21: - //SEG160 [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$16 + //SEG154 [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$15 clc adc val_42 sta val_44 - //SEG161 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG155 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_44 ldy i2 - sta SCREEN1+$16*$28,y + sta SCREEN1+$15*$28,y jmp b6_22 - //SEG162 doplasma::@6_22 + //SEG156 doplasma::@6_22 b6_22: - //SEG163 [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$17 + //SEG157 [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$16 clc adc val_44 sta val_46 - //SEG164 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG158 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_46 ldy i2 - sta SCREEN1+$17*$28,y + sta SCREEN1+$16*$28,y jmp b6_23 - //SEG165 doplasma::@6_23 + //SEG159 doplasma::@6_23 b6_23: - //SEG166 [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuz1=vbuz2_plus__deref_pbuc1 - lda ybuf+$18 + //SEG160 [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$17 clc adc val_46 sta val_48 - //SEG167 [94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG161 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuz1=vbuz2 lda val_48 ldy i2 + sta SCREEN1+$17*$28,y + jmp b6_24 + //SEG162 doplasma::@6_24 + b6_24: + //SEG163 [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$18 + clc + adc val_48 + sta val_50 + //SEG164 [93] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50 -- pbuc1_derefidx_vbuz1=vbuz2 + lda val_50 + ldy i2 sta SCREEN1+$18*$28,y jmp b7 - //SEG168 doplasma::@7 + //SEG165 doplasma::@7 b7: - //SEG169 [95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuz1=_inc_vbuz1 + //SEG166 [94] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuz1=_inc_vbuz1 inc i2 - //SEG170 [96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 + //SEG167 [95] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 lda i2 cmp #$28 bcc b5_from_b7 jmp breturn - //SEG171 doplasma::@return + //SEG168 doplasma::@return breturn: - //SEG172 [97] return + //SEG169 [96] return rts + //SEG170 doplasma::@8 + b8: + //SEG171 [97] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0 -- vbuz1=vbuz2 + lda yval + sta yprev + //SEG172 [21] phi from doplasma::@8 to doplasma::@1 [phi:doplasma::@8->doplasma::@1] + b1_from_b8: + //SEG173 [21] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@8->doplasma::@1#0] -- register_copy + //SEG174 [21] phi (byte) doplasma::yprev#2 = (byte~) doplasma::yprev#3 [phi:doplasma::@8->doplasma::@1#1] -- register_copy + //SEG175 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@8->doplasma::@1#2] -- register_copy + //SEG176 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@8->doplasma::@1#3] -- register_copy + jmp b1 xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG173 makecharset +//SEG177 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { - .label _2 = $35 - .label _3 = $38 - .label _4 = $39 - .label _8 = $3a - .label _9 = $3c - .label _11 = $3e - .label s = $36 - .label ii = $14 - .label b = $15 - .label i = $13 - .label c = $f - //SEG174 [99] call sid_rnd_init + .label _2 = $36 + .label _3 = $39 + .label _4 = $3a + .label _8 = $3b + .label _9 = $3d + .label _11 = $3f + .label s = $37 + .label ii = $15 + .label b = $16 + .label i = $14 + .label c = $10 + //SEG178 [99] call sid_rnd_init jsr sid_rnd_init - //SEG175 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG179 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] b10_from_makecharset: jmp b10 - //SEG176 makecharset::@10 + //SEG180 makecharset::@10 b10: - //SEG177 [101] call print_cls - //SEG178 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG181 [101] call print_cls + //SEG182 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] print_cls_from_b10: jsr print_cls - //SEG179 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG183 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] b1_from_b10: - //SEG180 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG184 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta print_char_cursor lda #>print_line_cursor sta print_char_cursor+1 - //SEG181 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG185 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c lda #0 sta c+1 jmp b1 - //SEG182 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG186 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] b1_from_b9: - //SEG183 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG184 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG187 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG188 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy jmp b1 - //SEG185 makecharset::@1 + //SEG189 makecharset::@1 b1: - //SEG186 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuz1=_lo_vwuz2 + //SEG190 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuz1=_lo_vwuz2 lda c sta _2 - //SEG187 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG191 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda SINTABLE,y sta s - //SEG188 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG192 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] b2_from_b1: - //SEG189 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG193 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG190 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG194 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] b2_from_b6: - //SEG191 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG195 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy jmp b2 - //SEG192 makecharset::@2 + //SEG196 makecharset::@2 b2: - //SEG193 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG197 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] b3_from_b2: - //SEG194 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 + //SEG198 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG195 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuz1=vbuc1 + //SEG199 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuz1=vbuc1 lda #0 sta ii jmp b3 - //SEG196 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG200 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] b3_from_b4: - //SEG197 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG198 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG201 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG202 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy jmp b3 - //SEG199 makecharset::@3 + //SEG203 makecharset::@3 b3: - //SEG200 [107] call sid_rnd + //SEG204 [107] call sid_rnd jsr sid_rnd - //SEG201 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG205 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b11 - //SEG202 makecharset::@11 + //SEG206 makecharset::@11 b11: - //SEG203 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG207 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _3 - //SEG204 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_band_vbuc1 + //SEG208 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_band_vbuc1 lda #$ff and _3 sta _4 - //SEG205 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG209 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4_from_b11 jmp b5 - //SEG206 makecharset::@5 + //SEG210 makecharset::@5 b5: - //SEG207 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG211 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 lda b ldy ii ora bittab,y sta b - //SEG208 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG212 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] b4_from_b11: b4_from_b5: - //SEG209 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG213 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy jmp b4 - //SEG210 makecharset::@4 + //SEG214 makecharset::@4 b4: - //SEG211 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuz1=_inc_vbuz1 + //SEG215 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuz1=_inc_vbuz1 inc ii - //SEG212 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG216 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuz1_lt_vbuc1_then_la1 lda ii cmp #8 bcc b3_from_b4 jmp b6 - //SEG213 makecharset::@6 + //SEG217 makecharset::@6 b6: - //SEG214 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG218 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -3811,7 +3845,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG215 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz2_plus_vbuz3 + //SEG219 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz2_plus_vbuz3 lda i clc adc _8 @@ -3819,7 +3853,7 @@ makecharset: { lda #0 adc _8+1 sta _9+1 - //SEG216 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuz2 + //SEG220 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuz2 lda b sta !v++1 lda #<CHARSET @@ -3833,43 +3867,43 @@ makecharset: { lda #0 !a: sta CHARSET - //SEG217 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 + //SEG221 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 inc i - //SEG218 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG222 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #8 bcc b2_from_b6 jmp b7 - //SEG219 makecharset::@7 + //SEG223 makecharset::@7 b7: - //SEG220 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vwuz2_band_vbuc1 + //SEG224 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vwuz2_band_vbuc1 lda c and #7 sta _11 - //SEG221 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuz1_neq_0_then_la1 + //SEG225 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuz1_neq_0_then_la1 lda _11 cmp #0 bne b9_from_b7 - //SEG222 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] + //SEG226 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] b8_from_b7: jmp b8 - //SEG223 makecharset::@8 + //SEG227 makecharset::@8 b8: - //SEG224 [124] call print_char + //SEG228 [124] call print_char jsr print_char - //SEG225 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG229 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] b9_from_b7: b9_from_b8: - //SEG226 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG230 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy jmp b9 - //SEG227 makecharset::@9 + //SEG231 makecharset::@9 b9: - //SEG228 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG232 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG229 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG233 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1_from_b9 @@ -3879,74 +3913,74 @@ makecharset: { bcc b1_from_b9 !: jmp breturn - //SEG230 makecharset::@return + //SEG234 makecharset::@return breturn: - //SEG231 [128] return + //SEG235 [128] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG232 print_char +//SEG236 print_char // Print a single char print_char: { .const ch = '.' - //SEG233 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG237 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG234 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG238 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG235 print_char::@return + //SEG239 print_char::@return breturn: - //SEG236 [131] return + //SEG240 [131] return rts } -//SEG237 sid_rnd +//SEG241 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - .label return = $3f - .label return_2 = $37 - //SEG238 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + .label return = $40 + .label return_2 = $38 + //SEG242 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG239 sid_rnd::@return + //SEG243 sid_rnd::@return breturn: - //SEG240 [133] return + //SEG244 [133] return rts } -//SEG241 print_cls +//SEG245 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { - .label sc = $16 - //SEG242 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + .label sc = $17 + //SEG246 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG243 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG247 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta sc lda #>print_line_cursor sta sc+1 jmp b1 - //SEG244 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG248 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG245 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG249 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG246 print_cls::@1 + //SEG250 print_cls::@1 b1: - //SEG247 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG251 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG248 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG252 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG249 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG253 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -3954,26 +3988,26 @@ print_cls: { cmp #<print_line_cursor+$3e8 bne b1_from_b1 jmp breturn - //SEG250 print_cls::@return + //SEG254 print_cls::@return breturn: - //SEG251 [139] return + //SEG255 [139] return rts } -//SEG252 sid_rnd_init +//SEG256 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG253 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG257 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG254 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG255 sid_rnd_init::@return + //SEG259 sid_rnd_init::@return breturn: - //SEG256 [142] return + //SEG260 [142] return rts } .pc = SINTABLE "SINTABLE" @@ -3987,60 +4021,61 @@ Statement [7] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( main:3 [ ] Statement [9] *((byte*) main::col#2) ← (const byte) BLACK#0 [ main::col#2 ] ( main:3 [ main::col#2 ] ) always clobbers reg byte a reg byte y Statement [11] if((byte*) main::col#1!=(byte*)(const byte*) COLS#0+(word/signed word/dword/signed dword) $3e8+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::col#1 ] ( main:3 [ main::col#1 ] ) always clobbers reg byte a Statement [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#0 doplasma::c1b#0 doplasma::$0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#0 doplasma::c1b#0 doplasma::$0 ] ) always clobbers reg byte a +Statement [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::i#2 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::i#2 doplasma::yval#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ c1A#1 c1A#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ c1B#1 c1B#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ c2A#1 c2A#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ c2B#1 c2B#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Statement [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] -Statement [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ) always clobbers reg byte a -Statement [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$1 ] ) always clobbers reg byte a -Statement [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$3 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$3 ] ) always clobbers reg byte a -Statement [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:3::doplasma:18 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a -Statement [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a -Statement [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$5 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Statement [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#0 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] -Statement [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a -Statement [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ) always clobbers reg byte a -Statement [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ) always clobbers reg byte a -Statement [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ) always clobbers reg byte a -Statement [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a -Statement [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ) always clobbers reg byte a -Statement [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ) always clobbers reg byte a -Statement [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ) always clobbers reg byte a -Statement [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ) always clobbers reg byte a -Statement [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ) always clobbers reg byte a -Statement [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ) always clobbers reg byte a -Statement [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ) always clobbers reg byte a -Statement [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ) always clobbers reg byte a -Statement [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ) always clobbers reg byte a -Statement [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ) always clobbers reg byte a -Statement [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ) always clobbers reg byte a -Statement [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ) always clobbers reg byte a -Statement [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ) always clobbers reg byte a -Statement [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ) always clobbers reg byte a -Statement [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ) always clobbers reg byte a -Statement [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ) always clobbers reg byte a -Statement [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ) always clobbers reg byte a -Statement [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ) always clobbers reg byte a -Statement [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ doplasma::yprev#2 doplasma::yprev#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] +Statement [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::i#2 doplasma::yval#0 doplasma::$1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::i#2 doplasma::yval#0 doplasma::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ doplasma::yval#0 ] +Statement [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:3::doplasma:18 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a +Statement [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a +Statement [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] +Statement [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a +Statement [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a +Statement [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a +Statement [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ doplasma::i2#2 doplasma::i2#1 ] +Statement [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ) always clobbers reg byte a +Statement [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ) always clobbers reg byte a +Statement [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ) always clobbers reg byte a +Statement [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a +Statement [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ) always clobbers reg byte a +Statement [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ) always clobbers reg byte a +Statement [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ) always clobbers reg byte a +Statement [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ) always clobbers reg byte a +Statement [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ) always clobbers reg byte a +Statement [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ) always clobbers reg byte a +Statement [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ) always clobbers reg byte a +Statement [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ) always clobbers reg byte a +Statement [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ) always clobbers reg byte a +Statement [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ) always clobbers reg byte a +Statement [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ) always clobbers reg byte a +Statement [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ) always clobbers reg byte a +Statement [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ) always clobbers reg byte a +Statement [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ) always clobbers reg byte a +Statement [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ) always clobbers reg byte a +Statement [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ) always clobbers reg byte a +Statement [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ) always clobbers reg byte a +Statement [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ) always clobbers reg byte a +Statement [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ) always clobbers reg byte a +Statement [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#50 ] ) always clobbers reg byte a Statement [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a Statement [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ makecharset::s#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ makecharset::s#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ makecharset::ii#2 makecharset::ii#1 ] Statement [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] Statement [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ) always clobbers reg byte a Statement [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ) always clobbers reg byte a Statement [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ) always clobbers reg byte a @@ -4055,42 +4090,41 @@ Statement [7] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( main:3 [ ] Statement [9] *((byte*) main::col#2) ← (const byte) BLACK#0 [ main::col#2 ] ( main:3 [ main::col#2 ] ) always clobbers reg byte a reg byte y Statement [11] if((byte*) main::col#1!=(byte*)(const byte*) COLS#0+(word/signed word/dword/signed dword) $3e8+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::col#1 ] ( main:3 [ main::col#1 ] ) always clobbers reg byte a Statement [15] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#0 doplasma::c1b#0 doplasma::$0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#0 doplasma::c1b#0 doplasma::$0 ] ) always clobbers reg byte a -Statement [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 ] ) always clobbers reg byte a -Statement [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 ] ) always clobbers reg byte a -Statement [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$1 ] ) always clobbers reg byte a -Statement [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$3 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::$3 ] ) always clobbers reg byte a -Statement [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:3::doplasma:18 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a -Statement [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a -Statement [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$5 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$5 ] ) always clobbers reg byte a -Statement [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a -Statement [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a -Statement [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#0 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#0 ] ) always clobbers reg byte a -Statement [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a -Statement [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ) always clobbers reg byte a -Statement [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ) always clobbers reg byte a -Statement [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ) always clobbers reg byte a -Statement [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a -Statement [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ) always clobbers reg byte a -Statement [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ) always clobbers reg byte a -Statement [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ) always clobbers reg byte a -Statement [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ) always clobbers reg byte a -Statement [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ) always clobbers reg byte a -Statement [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ) always clobbers reg byte a -Statement [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ) always clobbers reg byte a -Statement [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ) always clobbers reg byte a -Statement [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ) always clobbers reg byte a -Statement [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ) always clobbers reg byte a -Statement [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ) always clobbers reg byte a -Statement [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ) always clobbers reg byte a -Statement [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ) always clobbers reg byte a -Statement [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ) always clobbers reg byte a -Statement [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ) always clobbers reg byte a -Statement [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ) always clobbers reg byte a -Statement [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ) always clobbers reg byte a -Statement [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ) always clobbers reg byte a -Statement [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ) always clobbers reg byte a +Statement [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::i#2 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::i#2 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::i#2 doplasma::yval#0 doplasma::$1 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1a#2 doplasma::c1b#2 doplasma::i#2 doplasma::yval#0 doplasma::$1 ] ) always clobbers reg byte a +Statement [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::c1b#2 doplasma::i#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:3::doplasma:18 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a +Statement [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:3::doplasma:18 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a +Statement [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a +Statement [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$3 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2a#2 doplasma::c2b#2 doplasma::i1#2 doplasma::$3 ] ) always clobbers reg byte a +Statement [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a +Statement [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a +Statement [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a +Statement [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a +Statement [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#4 ] ) always clobbers reg byte a +Statement [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#6 ] ) always clobbers reg byte a +Statement [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#8 ] ) always clobbers reg byte a +Statement [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a +Statement [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#12 ] ) always clobbers reg byte a +Statement [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#14 ] ) always clobbers reg byte a +Statement [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#16 ] ) always clobbers reg byte a +Statement [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#18 ] ) always clobbers reg byte a +Statement [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#20 ] ) always clobbers reg byte a +Statement [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#22 ] ) always clobbers reg byte a +Statement [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#24 ] ) always clobbers reg byte a +Statement [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#26 ] ) always clobbers reg byte a +Statement [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#28 ] ) always clobbers reg byte a +Statement [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#30 ] ) always clobbers reg byte a +Statement [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#32 ] ) always clobbers reg byte a +Statement [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#34 ] ) always clobbers reg byte a +Statement [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#36 ] ) always clobbers reg byte a +Statement [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#38 ] ) always clobbers reg byte a +Statement [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#40 ] ) always clobbers reg byte a +Statement [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#42 ] ) always clobbers reg byte a +Statement [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#44 ] ) always clobbers reg byte a +Statement [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#46 ] ) always clobbers reg byte a +Statement [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#48 ] ) always clobbers reg byte a +Statement [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#50 ] ) always clobbers reg byte a Statement [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a Statement [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a Statement [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a @@ -4110,21 +4144,21 @@ Potential registers zp ZP_BYTE:6 [ c2A#1 c2A#3 ] : zp ZP_BYTE:6 , reg byte x , r Potential registers zp ZP_BYTE:7 [ c2B#1 c2B#3 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] : zp ZP_WORD:17 , -Potential registers zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:22 , -Potential registers zp ZP_BYTE:24 [ doplasma::$0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ doplasma::$1 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ doplasma::$3 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ doplasma::$5 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ doplasma::yprev#2 doplasma::yprev#3 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ doplasma::i2#2 doplasma::i2#1 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:16 [ makecharset::c#2 makecharset::c#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:18 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] : zp ZP_WORD:18 , +Potential registers zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ makecharset::ii#2 makecharset::ii#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:23 , +Potential registers zp ZP_BYTE:25 [ doplasma::yval#0 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ doplasma::$1 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ doplasma::$3 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:28 [ doplasma::val#0 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:29 [ doplasma::val#1 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:30 [ doplasma::val#4 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , @@ -4150,140 +4184,146 @@ Potential registers zp ZP_BYTE:49 [ doplasma::val#42 ] : zp ZP_BYTE:49 , reg byt Potential registers zp ZP_BYTE:50 [ doplasma::val#44 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:51 [ doplasma::val#46 ] : zp ZP_BYTE:51 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:52 [ doplasma::val#48 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:53 [ makecharset::$2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ makecharset::s#0 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ sid_rnd::return#2 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ makecharset::$3 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ makecharset::$4 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:58 [ makecharset::$8 ] : zp ZP_WORD:58 , -Potential registers zp ZP_WORD:60 [ makecharset::$9 ] : zp ZP_WORD:60 , -Potential registers zp ZP_BYTE:62 [ makecharset::$11 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ sid_rnd::return#0 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ doplasma::val#50 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:54 [ makecharset::$2 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ makecharset::s#0 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ sid_rnd::return#2 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ makecharset::$3 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ makecharset::$4 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:59 [ makecharset::$8 ] : zp ZP_WORD:59 , +Potential registers zp ZP_WORD:61 [ makecharset::$9 ] : zp ZP_WORD:61 , +Potential registers zp ZP_BYTE:63 [ makecharset::$11 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ sid_rnd::return#0 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makecharset] 3,123.3: zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] 2,002: zp ZP_BYTE:56 [ makecharset::$3 ] 2,002: zp ZP_BYTE:57 [ makecharset::$4 ] 1,876.88: zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] 202: zp ZP_WORD:58 [ makecharset::$8 ] 202: zp ZP_WORD:60 [ makecharset::$9 ] 173.14: zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] 59.53: zp ZP_BYTE:54 [ makecharset::s#0 ] 22.54: zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] 22: zp ZP_BYTE:53 [ makecharset::$2 ] 22: zp ZP_BYTE:62 [ makecharset::$11 ] -Uplift Scope [doplasma] 248.79: zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 218.83: zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] 212.1: zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] 206.95: zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] 202: zp ZP_BYTE:25 [ doplasma::$1 ] 202: zp ZP_BYTE:26 [ doplasma::$3 ] 202: zp ZP_BYTE:27 [ doplasma::$5 ] 202: zp ZP_BYTE:52 [ doplasma::val#48 ] 154.5: zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 154.17: zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 151.5: zp ZP_BYTE:28 [ doplasma::val#0 ] 151.5: zp ZP_BYTE:29 [ doplasma::val#1 ] 151.5: zp ZP_BYTE:30 [ doplasma::val#4 ] 151.5: zp ZP_BYTE:31 [ doplasma::val#6 ] 151.5: zp ZP_BYTE:32 [ doplasma::val#8 ] 151.5: zp ZP_BYTE:33 [ doplasma::val#10 ] 151.5: zp ZP_BYTE:34 [ doplasma::val#12 ] 151.5: zp ZP_BYTE:35 [ doplasma::val#14 ] 151.5: zp ZP_BYTE:36 [ doplasma::val#16 ] 151.5: zp ZP_BYTE:37 [ doplasma::val#18 ] 151.5: zp ZP_BYTE:38 [ doplasma::val#20 ] 151.5: zp ZP_BYTE:39 [ doplasma::val#22 ] 151.5: zp ZP_BYTE:40 [ doplasma::val#24 ] 151.5: zp ZP_BYTE:41 [ doplasma::val#26 ] 151.5: zp ZP_BYTE:42 [ doplasma::val#28 ] 151.5: zp ZP_BYTE:43 [ doplasma::val#30 ] 151.5: zp ZP_BYTE:44 [ doplasma::val#32 ] 151.5: zp ZP_BYTE:45 [ doplasma::val#34 ] 151.5: zp ZP_BYTE:46 [ doplasma::val#36 ] 151.5: zp ZP_BYTE:47 [ doplasma::val#38 ] 151.5: zp ZP_BYTE:48 [ doplasma::val#40 ] 151.5: zp ZP_BYTE:49 [ doplasma::val#42 ] 151.5: zp ZP_BYTE:50 [ doplasma::val#44 ] 151.5: zp ZP_BYTE:51 [ doplasma::val#46 ] 147.58: zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 4: zp ZP_BYTE:24 [ doplasma::$0 ] -Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:55 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:63 [ sid_rnd::return#0 ] -Uplift Scope [print_cls] 33: zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [makecharset] 3,123.3: zp ZP_BYTE:22 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] 2,002: zp ZP_BYTE:57 [ makecharset::$3 ] 2,002: zp ZP_BYTE:58 [ makecharset::$4 ] 1,876.88: zp ZP_BYTE:21 [ makecharset::ii#2 makecharset::ii#1 ] 202: zp ZP_WORD:59 [ makecharset::$8 ] 202: zp ZP_WORD:61 [ makecharset::$9 ] 173.14: zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] 59.53: zp ZP_BYTE:55 [ makecharset::s#0 ] 22.54: zp ZP_WORD:16 [ makecharset::c#2 makecharset::c#1 ] 22: zp ZP_BYTE:54 [ makecharset::$2 ] 22: zp ZP_BYTE:63 [ makecharset::$11 ] +Uplift Scope [doplasma] 303: zp ZP_BYTE:10 [ doplasma::yprev#2 doplasma::yprev#3 ] 212.1: zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] 205.88: zp ZP_BYTE:15 [ doplasma::i2#2 doplasma::i2#1 ] 202: zp ZP_BYTE:26 [ doplasma::$1 ] 202: zp ZP_BYTE:27 [ doplasma::$3 ] 202: zp ZP_BYTE:28 [ doplasma::val#0 ] 202: zp ZP_BYTE:53 [ doplasma::val#50 ] 154.17: zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 151.5: zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] 151.5: zp ZP_BYTE:29 [ doplasma::val#1 ] 151.5: zp ZP_BYTE:30 [ doplasma::val#4 ] 151.5: zp ZP_BYTE:31 [ doplasma::val#6 ] 151.5: zp ZP_BYTE:32 [ doplasma::val#8 ] 151.5: zp ZP_BYTE:33 [ doplasma::val#10 ] 151.5: zp ZP_BYTE:34 [ doplasma::val#12 ] 151.5: zp ZP_BYTE:35 [ doplasma::val#14 ] 151.5: zp ZP_BYTE:36 [ doplasma::val#16 ] 151.5: zp ZP_BYTE:37 [ doplasma::val#18 ] 151.5: zp ZP_BYTE:38 [ doplasma::val#20 ] 151.5: zp ZP_BYTE:39 [ doplasma::val#22 ] 151.5: zp ZP_BYTE:40 [ doplasma::val#24 ] 151.5: zp ZP_BYTE:41 [ doplasma::val#26 ] 151.5: zp ZP_BYTE:42 [ doplasma::val#28 ] 151.5: zp ZP_BYTE:43 [ doplasma::val#30 ] 151.5: zp ZP_BYTE:44 [ doplasma::val#32 ] 151.5: zp ZP_BYTE:45 [ doplasma::val#34 ] 151.5: zp ZP_BYTE:46 [ doplasma::val#36 ] 151.5: zp ZP_BYTE:47 [ doplasma::val#38 ] 151.5: zp ZP_BYTE:48 [ doplasma::val#40 ] 151.5: zp ZP_BYTE:49 [ doplasma::val#42 ] 151.5: zp ZP_BYTE:50 [ doplasma::val#44 ] 151.5: zp ZP_BYTE:51 [ doplasma::val#46 ] 151.5: zp ZP_BYTE:52 [ doplasma::val#48 ] 147.58: zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 118.65: zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 115.5: zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 43.29: zp ZP_BYTE:25 [ doplasma::yval#0 ] +Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:56 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:64 [ sid_rnd::return#0 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [main] 33: zp ZP_WORD:2 [ main::col#2 main::col#1 ] -Uplift Scope [] 16.46: zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] 1.26: zp ZP_BYTE:4 [ c1A#1 c1A#3 ] 1.19: zp ZP_BYTE:5 [ c1B#1 c1B#3 ] 0.83: zp ZP_BYTE:6 [ c2A#1 c2A#3 ] 0.81: zp ZP_BYTE:7 [ c2B#1 c2B#3 ] +Uplift Scope [] 16.46: zp ZP_WORD:18 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] 1.34: zp ZP_BYTE:4 [ c1A#1 c1A#3 ] 1.26: zp ZP_BYTE:5 [ c1B#1 c1B#3 ] 0.85: zp ZP_BYTE:6 [ c2A#1 c2A#3 ] 0.83: zp ZP_BYTE:7 [ c2B#1 c2B#3 ] Uplift Scope [print_char] Uplift Scope [sid_rnd_init] -Uplifting [makecharset] best 164232 combination reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ makecharset::$3 ] zp ZP_BYTE:57 [ makecharset::$4 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] zp ZP_WORD:58 [ makecharset::$8 ] zp ZP_WORD:60 [ makecharset::$9 ] zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] zp ZP_BYTE:54 [ makecharset::s#0 ] zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] zp ZP_BYTE:53 [ makecharset::$2 ] zp ZP_BYTE:62 [ makecharset::$11 ] +Uplifting [makecharset] best 165755 combination reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ makecharset::$3 ] zp ZP_BYTE:58 [ makecharset::$4 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] zp ZP_WORD:59 [ makecharset::$8 ] zp ZP_WORD:61 [ makecharset::$9 ] zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] zp ZP_BYTE:55 [ makecharset::s#0 ] zp ZP_WORD:16 [ makecharset::c#2 makecharset::c#1 ] zp ZP_BYTE:54 [ makecharset::$2 ] zp ZP_BYTE:63 [ makecharset::$11 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [sid_rnd] best 155229 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [print_cls] best 155229 combination zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 155229 combination zp ZP_WORD:2 [ main::col#2 main::col#1 ] -Uplifting [] best 155229 combination zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] zp ZP_BYTE:4 [ c1A#1 c1A#3 ] zp ZP_BYTE:5 [ c1B#1 c1B#3 ] zp ZP_BYTE:6 [ c2A#1 c2A#3 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Uplifting [print_char] best 155229 combination -Uplifting [sid_rnd_init] best 155229 combination -Attempting to uplift remaining variables inzp ZP_BYTE:57 [ makecharset::$4 ] -Uplifting [makecharset] best 155229 combination zp ZP_BYTE:57 [ makecharset::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] -Uplifting [doplasma] best 155229 combination zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] -Uplifting [doplasma] best 155229 combination zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Uplifting [doplasma] best 155229 combination zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] -Uplifting [doplasma] best 146529 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:25 [ doplasma::$1 ] -Uplifting [doplasma] best 145929 combination reg byte a [ doplasma::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ doplasma::$3 ] -Uplifting [doplasma] best 145329 combination reg byte a [ doplasma::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ doplasma::$5 ] -Uplifting [doplasma] best 144729 combination reg byte a [ doplasma::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ doplasma::val#48 ] -Uplifting [doplasma] best 144129 combination reg byte a [ doplasma::val#48 ] -Attempting to uplift remaining variables inzp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] -Uplifting [makecharset] best 144129 combination zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Uplifting [doplasma] best 144129 combination zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] -Uplifting [doplasma] best 144129 combination zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Uplifting [sid_rnd] best 156752 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [print_cls] best 156752 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 156752 combination zp ZP_WORD:2 [ main::col#2 main::col#1 ] +Uplifting [] best 156752 combination zp ZP_WORD:18 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] zp ZP_BYTE:4 [ c1A#1 c1A#3 ] zp ZP_BYTE:5 [ c1B#1 c1B#3 ] zp ZP_BYTE:6 [ c2A#1 c2A#3 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] +Uplifting [print_char] best 156752 combination +Uplifting [sid_rnd_init] best 156752 combination +Attempting to uplift remaining variables inzp ZP_BYTE:58 [ makecharset::$4 ] +Uplifting [makecharset] best 156752 combination zp ZP_BYTE:58 [ makecharset::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:10 [ doplasma::yprev#2 doplasma::yprev#3 ] +Uplifting [doplasma] best 156252 combination reg byte x [ doplasma::yprev#2 doplasma::yprev#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] +Uplifting [doplasma] best 156252 combination zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ doplasma::i2#2 doplasma::i2#1 ] +Uplifting [doplasma] best 147552 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ doplasma::$1 ] +Uplifting [doplasma] best 146952 combination reg byte a [ doplasma::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ doplasma::$3 ] +Uplifting [doplasma] best 146352 combination reg byte a [ doplasma::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ doplasma::val#0 ] -Uplifting [doplasma] best 143229 combination reg byte a [ doplasma::val#0 ] +Uplifting [doplasma] best 145752 combination reg byte a [ doplasma::val#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ doplasma::val#50 ] +Uplifting [doplasma] best 145152 combination reg byte a [ doplasma::val#50 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] +Uplifting [makecharset] best 145152 combination zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Uplifting [doplasma] best 145152 combination zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] +Uplifting [doplasma] best 145152 combination zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ doplasma::val#1 ] -Uplifting [doplasma] best 142329 combination reg byte a [ doplasma::val#1 ] +Uplifting [doplasma] best 144252 combination reg byte a [ doplasma::val#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ doplasma::val#4 ] -Uplifting [doplasma] best 141429 combination reg byte a [ doplasma::val#4 ] +Uplifting [doplasma] best 143352 combination reg byte a [ doplasma::val#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ doplasma::val#6 ] -Uplifting [doplasma] best 140529 combination reg byte a [ doplasma::val#6 ] +Uplifting [doplasma] best 142452 combination reg byte a [ doplasma::val#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ doplasma::val#8 ] -Uplifting [doplasma] best 139629 combination reg byte a [ doplasma::val#8 ] +Uplifting [doplasma] best 141552 combination reg byte a [ doplasma::val#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ doplasma::val#10 ] -Uplifting [doplasma] best 138729 combination reg byte a [ doplasma::val#10 ] +Uplifting [doplasma] best 140652 combination reg byte a [ doplasma::val#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ doplasma::val#12 ] -Uplifting [doplasma] best 137829 combination reg byte a [ doplasma::val#12 ] +Uplifting [doplasma] best 139752 combination reg byte a [ doplasma::val#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ doplasma::val#14 ] -Uplifting [doplasma] best 136929 combination reg byte a [ doplasma::val#14 ] +Uplifting [doplasma] best 138852 combination reg byte a [ doplasma::val#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ doplasma::val#16 ] -Uplifting [doplasma] best 136029 combination reg byte a [ doplasma::val#16 ] +Uplifting [doplasma] best 137952 combination reg byte a [ doplasma::val#16 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ doplasma::val#18 ] -Uplifting [doplasma] best 135129 combination reg byte a [ doplasma::val#18 ] +Uplifting [doplasma] best 137052 combination reg byte a [ doplasma::val#18 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ doplasma::val#20 ] -Uplifting [doplasma] best 134229 combination reg byte a [ doplasma::val#20 ] +Uplifting [doplasma] best 136152 combination reg byte a [ doplasma::val#20 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ doplasma::val#22 ] -Uplifting [doplasma] best 133329 combination reg byte a [ doplasma::val#22 ] +Uplifting [doplasma] best 135252 combination reg byte a [ doplasma::val#22 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ doplasma::val#24 ] -Uplifting [doplasma] best 132429 combination reg byte a [ doplasma::val#24 ] +Uplifting [doplasma] best 134352 combination reg byte a [ doplasma::val#24 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ doplasma::val#26 ] -Uplifting [doplasma] best 131529 combination reg byte a [ doplasma::val#26 ] +Uplifting [doplasma] best 133452 combination reg byte a [ doplasma::val#26 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ doplasma::val#28 ] -Uplifting [doplasma] best 130629 combination reg byte a [ doplasma::val#28 ] +Uplifting [doplasma] best 132552 combination reg byte a [ doplasma::val#28 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ doplasma::val#30 ] -Uplifting [doplasma] best 129729 combination reg byte a [ doplasma::val#30 ] +Uplifting [doplasma] best 131652 combination reg byte a [ doplasma::val#30 ] Attempting to uplift remaining variables inzp ZP_BYTE:44 [ doplasma::val#32 ] -Uplifting [doplasma] best 128829 combination reg byte a [ doplasma::val#32 ] +Uplifting [doplasma] best 130752 combination reg byte a [ doplasma::val#32 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ doplasma::val#34 ] -Uplifting [doplasma] best 127929 combination reg byte a [ doplasma::val#34 ] +Uplifting [doplasma] best 129852 combination reg byte a [ doplasma::val#34 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ doplasma::val#36 ] -Uplifting [doplasma] best 127029 combination reg byte a [ doplasma::val#36 ] +Uplifting [doplasma] best 128952 combination reg byte a [ doplasma::val#36 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ doplasma::val#38 ] -Uplifting [doplasma] best 126129 combination reg byte a [ doplasma::val#38 ] +Uplifting [doplasma] best 128052 combination reg byte a [ doplasma::val#38 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ doplasma::val#40 ] -Uplifting [doplasma] best 125229 combination reg byte a [ doplasma::val#40 ] +Uplifting [doplasma] best 127152 combination reg byte a [ doplasma::val#40 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ doplasma::val#42 ] -Uplifting [doplasma] best 124329 combination reg byte a [ doplasma::val#42 ] +Uplifting [doplasma] best 126252 combination reg byte a [ doplasma::val#42 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ doplasma::val#44 ] -Uplifting [doplasma] best 123429 combination reg byte a [ doplasma::val#44 ] +Uplifting [doplasma] best 125352 combination reg byte a [ doplasma::val#44 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ doplasma::val#46 ] -Uplifting [doplasma] best 122529 combination reg byte a [ doplasma::val#46 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Uplifting [doplasma] best 122529 combination zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:54 [ makecharset::s#0 ] -Uplifting [makecharset] best 122529 combination zp ZP_BYTE:54 [ makecharset::s#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ makecharset::$2 ] -Uplifting [makecharset] best 122489 combination reg byte a [ makecharset::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ makecharset::$11 ] -Uplifting [makecharset] best 122429 combination reg byte a [ makecharset::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:24 [ doplasma::$0 ] -Uplifting [doplasma] best 122423 combination reg byte a [ doplasma::$0 ] +Uplifting [doplasma] best 124452 combination reg byte a [ doplasma::val#46 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ doplasma::val#48 ] +Uplifting [doplasma] best 123552 combination reg byte a [ doplasma::val#48 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +Uplifting [doplasma] best 123552 combination zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] +Uplifting [doplasma] best 123552 combination zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] +Uplifting [doplasma] best 123552 combination zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:55 [ makecharset::s#0 ] +Uplifting [makecharset] best 123552 combination zp ZP_BYTE:55 [ makecharset::s#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ doplasma::yval#0 ] +Uplifting [doplasma] best 123552 combination zp ZP_BYTE:25 [ doplasma::yval#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:54 [ makecharset::$2 ] +Uplifting [makecharset] best 123512 combination reg byte a [ makecharset::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ makecharset::$11 ] +Uplifting [makecharset] best 123452 combination reg byte a [ makecharset::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ c1A#1 c1A#3 ] -Uplifting [] best 122423 combination zp ZP_BYTE:4 [ c1A#1 c1A#3 ] +Uplifting [] best 123452 combination zp ZP_BYTE:4 [ c1A#1 c1A#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ c1B#1 c1B#3 ] -Uplifting [] best 122423 combination zp ZP_BYTE:5 [ c1B#1 c1B#3 ] +Uplifting [] best 123452 combination zp ZP_BYTE:5 [ c1B#1 c1B#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ c2A#1 c2A#3 ] -Uplifting [] best 122423 combination zp ZP_BYTE:6 [ c2A#1 c2A#3 ] +Uplifting [] best 123452 combination zp ZP_BYTE:6 [ c2A#1 c2A#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Uplifting [] best 122423 combination zp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:58 [ makecharset::$8 ] ] with [ zp ZP_WORD:60 [ makecharset::$9 ] ] - score: 1 -Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 ] ] with [ zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 makecharset::c#2 makecharset::c#1 ] ] with [ zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ c1A#1 c1A#3 ] ] with [ zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ c1B#1 c1B#3 ] ] with [ zp ZP_BYTE:54 [ makecharset::s#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ c2A#1 c2A#3 ] ] with [ zp ZP_BYTE:57 [ makecharset::$4 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] ] with [ zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] ] with [ zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] ] with [ zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] -Allocated (was zp ZP_WORD:58) zp ZP_WORD:13 [ makecharset::$8 makecharset::$9 ] +Uplifting [] best 123452 combination zp ZP_BYTE:7 [ c2B#1 c2B#3 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ makecharset::$8 ] ] with [ zp ZP_WORD:61 [ makecharset::$9 ] ] - score: 1 +Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 ] ] with [ zp ZP_WORD:16 [ makecharset::c#2 makecharset::c#1 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 makecharset::c#2 makecharset::c#1 ] ] with [ zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ c1A#1 c1A#3 ] ] with [ zp ZP_BYTE:20 [ makecharset::i#7 makecharset::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ c1B#1 c1B#3 ] ] with [ zp ZP_BYTE:55 [ makecharset::s#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ c2A#1 c2A#3 ] ] with [ zp ZP_BYTE:58 [ makecharset::$4 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] ] with [ zp ZP_BYTE:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] ] with [ zp ZP_BYTE:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ doplasma::i#2 doplasma::i#1 ] ] with [ zp ZP_BYTE:14 [ doplasma::i1#2 doplasma::i1#1 ] ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ] +Allocated (was zp ZP_WORD:18) zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] +Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:13 [ doplasma::yval#0 ] +Allocated (was zp ZP_WORD:59) zp ZP_WORD:14 [ makecharset::$8 makecharset::$9 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments // A KickC version of the plasma routine from the CC65 samples -// This version has an unrolled inner loop to reach ~50FPS +// This version has an unrolled inner loop to reach 50+FPS +// This version also optimizes the inner loop by calculating the Y buffer as a set of differences // (w)2001 by groepaz/hitmen // Cleanup and porting to CC65 by Ullrich von Bassewitz. // Ported to KickC by Jesper Gravgaard. @@ -4432,6 +4472,7 @@ main: { doplasma: { .label c1a = 8 .label c1b = 9 + .label yval = $d .label i = $a .label c2a = 8 .label c2b = 9 @@ -4442,462 +4483,468 @@ doplasma: { //SEG47 [20] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 lda c1B sta c1b - //SEG48 [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 + //SEG48 [21] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] + b1_from_doplasma: + //SEG49 [21] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG50 [21] phi (byte) doplasma::yprev#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#1] -- vbuxx=vbuc1 + ldx #0 + //SEG51 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#2] -- register_copy + //SEG52 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#3] -- register_copy + jmp b1 + // Calculate ybuff as a bunch of differences + //SEG53 doplasma::@1 + b1: + //SEG54 [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 ldy c1a lda SINTABLE,y ldy c1b clc adc SINTABLE,y - //SEG49 [22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0 -- _deref_pbuc1=vbuaa - sta ybuf - //SEG50 [23] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] - b1_from_doplasma: - //SEG51 [23] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 - lda #1 - sta i - //SEG52 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy - //SEG53 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy - jmp b1 - // Calculate ybuff as a bunch of differences - //SEG54 [23] phi from doplasma::@1 to doplasma::@1 [phi:doplasma::@1->doplasma::@1] - b1_from_b1: - //SEG55 [23] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@1->doplasma::@1#0] -- register_copy - //SEG56 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@1->doplasma::@1#1] -- register_copy - //SEG57 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@1->doplasma::@1#2] -- register_copy - jmp b1 - //SEG58 doplasma::@1 - b1: - //SEG59 [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + sta yval + //SEG55 [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx + txa + eor #$ff + sec + adc yval + //SEG56 [24] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuaa + ldy i + sta ybuf,y + //SEG57 [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c1a axs #-[4] stx c1a - //SEG60 [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 + //SEG58 [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 lax c1b axs #-[9] stx c1b - //SEG61 [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 - ldy c1a - lda SINTABLE,y - ldy c1b - clc - adc SINTABLE,y - //SEG62 [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) -- vbuaa=vbuaa_minus_pbuc1_derefidx_vbuz1 - ldy i - sec - sbc ybuf+-1,y - //SEG63 [28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa - ldy i - sta ybuf,y - //SEG64 [29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 + //SEG59 [27] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG65 [30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@8 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$19 - bcc b1_from_b1 + bcc b8 jmp b2 - //SEG66 doplasma::@2 + //SEG61 doplasma::@2 b2: - //SEG67 [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG62 [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c1A axs #-[3] stx c1A - //SEG68 [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 + //SEG63 [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 lax c1B axs #5 stx c1B - //SEG69 [33] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 + //SEG64 [31] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 lda c2A sta c2a - //SEG70 [34] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 + //SEG65 [32] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 lda c2B sta c2b - //SEG71 [35] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] + //SEG66 [33] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] b3_from_b2: - //SEG72 [35] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 + //SEG67 [33] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG73 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy - //SEG74 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy + //SEG68 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy + //SEG69 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy jmp b3 - //SEG75 [35] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] + //SEG70 [33] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] b3_from_b3: - //SEG76 [35] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy - //SEG77 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy - //SEG78 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy + //SEG71 [33] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy + //SEG72 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy + //SEG73 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy jmp b3 - //SEG79 doplasma::@3 + //SEG74 doplasma::@3 b3: - //SEG80 [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 + //SEG75 [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 ldy c2a lda SINTABLE,y ldy c2b clc adc SINTABLE,y - //SEG81 [37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG76 [35] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy i1 sta xbuf,y - //SEG82 [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG77 [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c2a axs #-[3] stx c2a - //SEG83 [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 + //SEG78 [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 lax c2b axs #-[7] stx c2b - //SEG84 [40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 + //SEG79 [38] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG85 [41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG80 [39] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 lda i1 cmp #$28 bcc b3_from_b3 jmp b4 - //SEG86 doplasma::@4 + //SEG81 doplasma::@4 b4: - //SEG87 [42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG82 [40] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c2A clc adc #2 sta c2A - //SEG88 [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 + //SEG83 [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 lax c2B axs #3 stx c2B - //SEG89 [44] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] + //SEG84 [42] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] b5_from_b4: - //SEG90 [44] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 + //SEG85 [42] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 ldx #0 jmp b5 - //SEG91 [44] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] + //SEG86 [42] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] b5_from_b7: - //SEG92 [44] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG87 [42] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy jmp b5 - //SEG93 doplasma::@5 + //SEG88 doplasma::@5 b5: - //SEG94 [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 + //SEG89 [43] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuaa=pbuc1_derefidx_vbuxx + // Find the first value on the row lda xbuf,x - clc - adc ybuf - //SEG95 [46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN1,x jmp b6 // Calculate the next values as sums of diffs // Use experimental loop unrolling to increase the speed - //SEG96 doplasma::@6 + //SEG90 doplasma::@6 b6: - //SEG97 [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG91 [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=vbuaa_plus__deref_pbuc1 + clc + adc ybuf + //SEG92 [45] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN1,x + jmp b6_1 + //SEG93 doplasma::@6_1 + b6_1: + //SEG94 [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+1 - //SEG98 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG95 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+1*$28,x - jmp b6_1 - //SEG99 doplasma::@6_1 - b6_1: - //SEG100 [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_2 + //SEG96 doplasma::@6_2 + b6_2: + //SEG97 [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+2 - //SEG101 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG98 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+2*$28,x - jmp b6_2 - //SEG102 doplasma::@6_2 - b6_2: - //SEG103 [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_3 + //SEG99 doplasma::@6_3 + b6_3: + //SEG100 [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+3 - //SEG104 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG101 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+3*$28,x - jmp b6_3 - //SEG105 doplasma::@6_3 - b6_3: - //SEG106 [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_4 + //SEG102 doplasma::@6_4 + b6_4: + //SEG103 [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+4 - //SEG107 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG104 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+4*$28,x - jmp b6_4 - //SEG108 doplasma::@6_4 - b6_4: - //SEG109 [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_5 + //SEG105 doplasma::@6_5 + b6_5: + //SEG106 [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+5 - //SEG110 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG107 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+5*$28,x - jmp b6_5 - //SEG111 doplasma::@6_5 - b6_5: - //SEG112 [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_6 + //SEG108 doplasma::@6_6 + b6_6: + //SEG109 [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+6 - //SEG113 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG110 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+6*$28,x - jmp b6_6 - //SEG114 doplasma::@6_6 - b6_6: - //SEG115 [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_7 + //SEG111 doplasma::@6_7 + b6_7: + //SEG112 [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+7 - //SEG116 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG113 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+7*$28,x - jmp b6_7 - //SEG117 doplasma::@6_7 - b6_7: - //SEG118 [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_8 + //SEG114 doplasma::@6_8 + b6_8: + //SEG115 [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+8 - //SEG119 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG116 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+8*$28,x - jmp b6_8 - //SEG120 doplasma::@6_8 - b6_8: - //SEG121 [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_9 + //SEG117 doplasma::@6_9 + b6_9: + //SEG118 [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+9 - //SEG122 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG119 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+9*$28,x - jmp b6_9 - //SEG123 doplasma::@6_9 - b6_9: - //SEG124 [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_10 + //SEG120 doplasma::@6_10 + b6_10: + //SEG121 [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$a - //SEG125 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG122 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$a*$28,x - jmp b6_10 - //SEG126 doplasma::@6_10 - b6_10: - //SEG127 [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_11 + //SEG123 doplasma::@6_11 + b6_11: + //SEG124 [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$b - //SEG128 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG125 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$b*$28,x - jmp b6_11 - //SEG129 doplasma::@6_11 - b6_11: - //SEG130 [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_12 + //SEG126 doplasma::@6_12 + b6_12: + //SEG127 [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$c - //SEG131 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG128 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$c*$28,x - jmp b6_12 - //SEG132 doplasma::@6_12 - b6_12: - //SEG133 [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_13 + //SEG129 doplasma::@6_13 + b6_13: + //SEG130 [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$d - //SEG134 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG131 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$d*$28,x - jmp b6_13 - //SEG135 doplasma::@6_13 - b6_13: - //SEG136 [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_14 + //SEG132 doplasma::@6_14 + b6_14: + //SEG133 [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$e - //SEG137 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG134 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$e*$28,x - jmp b6_14 - //SEG138 doplasma::@6_14 - b6_14: - //SEG139 [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_15 + //SEG135 doplasma::@6_15 + b6_15: + //SEG136 [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$f - //SEG140 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG137 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$f*$28,x - jmp b6_15 - //SEG141 doplasma::@6_15 - b6_15: - //SEG142 [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_16 + //SEG138 doplasma::@6_16 + b6_16: + //SEG139 [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$10 - //SEG143 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG140 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$10*$28,x - jmp b6_16 - //SEG144 doplasma::@6_16 - b6_16: - //SEG145 [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_17 + //SEG141 doplasma::@6_17 + b6_17: + //SEG142 [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$11 - //SEG146 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG143 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$11*$28,x - jmp b6_17 - //SEG147 doplasma::@6_17 - b6_17: - //SEG148 [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_18 + //SEG144 doplasma::@6_18 + b6_18: + //SEG145 [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$12 - //SEG149 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG146 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$12*$28,x - jmp b6_18 - //SEG150 doplasma::@6_18 - b6_18: - //SEG151 [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_19 + //SEG147 doplasma::@6_19 + b6_19: + //SEG148 [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$13 - //SEG152 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG149 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$13*$28,x - jmp b6_19 - //SEG153 doplasma::@6_19 - b6_19: - //SEG154 [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_20 + //SEG150 doplasma::@6_20 + b6_20: + //SEG151 [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$14 - //SEG155 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG152 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$14*$28,x - jmp b6_20 - //SEG156 doplasma::@6_20 - b6_20: - //SEG157 [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_21 + //SEG153 doplasma::@6_21 + b6_21: + //SEG154 [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$15 - //SEG158 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG155 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$15*$28,x - jmp b6_21 - //SEG159 doplasma::@6_21 - b6_21: - //SEG160 [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_22 + //SEG156 doplasma::@6_22 + b6_22: + //SEG157 [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$16 - //SEG161 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG158 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$16*$28,x - jmp b6_22 - //SEG162 doplasma::@6_22 - b6_22: - //SEG163 [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_23 + //SEG159 doplasma::@6_23 + b6_23: + //SEG160 [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$17 - //SEG164 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG161 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$17*$28,x - jmp b6_23 - //SEG165 doplasma::@6_23 - b6_23: - //SEG166 [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 + jmp b6_24 + //SEG162 doplasma::@6_24 + b6_24: + //SEG163 [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$18 - //SEG167 [94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG164 [93] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$18*$28,x jmp b7 - //SEG168 doplasma::@7 + //SEG165 doplasma::@7 b7: - //SEG169 [95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx + //SEG166 [94] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx inx - //SEG170 [96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 + //SEG167 [95] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 cpx #$28 bcc b5_from_b7 jmp breturn - //SEG171 doplasma::@return + //SEG168 doplasma::@return breturn: - //SEG172 [97] return + //SEG169 [96] return rts + //SEG170 doplasma::@8 + b8: + //SEG171 [97] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0 -- vbuxx=vbuz1 + ldx yval + //SEG172 [21] phi from doplasma::@8 to doplasma::@1 [phi:doplasma::@8->doplasma::@1] + b1_from_b8: + //SEG173 [21] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@8->doplasma::@1#0] -- register_copy + //SEG174 [21] phi (byte) doplasma::yprev#2 = (byte~) doplasma::yprev#3 [phi:doplasma::@8->doplasma::@1#1] -- register_copy + //SEG175 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@8->doplasma::@1#2] -- register_copy + //SEG176 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@8->doplasma::@1#3] -- register_copy + jmp b1 xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG173 makecharset +//SEG177 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { .label _4 = 6 - .label _8 = $d - .label _9 = $d + .label _8 = $e + .label _9 = $e .label s = 5 .label i = 4 .label c = 2 - //SEG174 [99] call sid_rnd_init + //SEG178 [99] call sid_rnd_init jsr sid_rnd_init - //SEG175 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG179 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] b10_from_makecharset: jmp b10 - //SEG176 makecharset::@10 + //SEG180 makecharset::@10 b10: - //SEG177 [101] call print_cls - //SEG178 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG181 [101] call print_cls + //SEG182 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] print_cls_from_b10: jsr print_cls - //SEG179 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG183 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] b1_from_b10: - //SEG180 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG184 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta print_char_cursor lda #>print_line_cursor sta print_char_cursor+1 - //SEG181 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG185 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c lda #0 sta c+1 jmp b1 - //SEG182 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG186 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] b1_from_b9: - //SEG183 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG184 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG187 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG188 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy jmp b1 - //SEG185 makecharset::@1 + //SEG189 makecharset::@1 b1: - //SEG186 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 + //SEG190 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 lda c - //SEG187 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG191 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa tay lda SINTABLE,y sta s - //SEG188 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG192 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] b2_from_b1: - //SEG189 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG193 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG190 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG194 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] b2_from_b6: - //SEG191 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG195 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy jmp b2 - //SEG192 makecharset::@2 + //SEG196 makecharset::@2 b2: - //SEG193 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG197 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] b3_from_b2: - //SEG194 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 + //SEG198 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 ldy #0 - //SEG195 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 + //SEG199 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG196 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG200 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] b3_from_b4: - //SEG197 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG198 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG201 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG202 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy jmp b3 - //SEG199 makecharset::@3 + //SEG203 makecharset::@3 b3: - //SEG200 [107] call sid_rnd + //SEG204 [107] call sid_rnd jsr sid_rnd - //SEG201 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG205 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 jmp b11 - //SEG202 makecharset::@11 + //SEG206 makecharset::@11 b11: - //SEG203 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - //SEG204 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 + //SEG207 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + //SEG208 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 and #$ff sta _4 - //SEG205 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG209 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4_from_b11 jmp b5 - //SEG206 makecharset::@5 + //SEG210 makecharset::@5 b5: - //SEG207 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx + //SEG211 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx tya ora bittab,x tay - //SEG208 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG212 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] b4_from_b11: b4_from_b5: - //SEG209 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG213 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy jmp b4 - //SEG210 makecharset::@4 + //SEG214 makecharset::@4 b4: - //SEG211 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx + //SEG215 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx inx - //SEG212 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG216 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #8 bcc b3_from_b4 jmp b6 - //SEG213 makecharset::@6 + //SEG217 makecharset::@6 b6: - //SEG214 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG218 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -4908,7 +4955,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG215 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 + //SEG219 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 lda i clc adc _9 @@ -4916,7 +4963,7 @@ makecharset: { bcc !+ inc _9+1 !: - //SEG216 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy + //SEG220 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy tya sta !v++1 lda #<CHARSET @@ -4930,41 +4977,41 @@ makecharset: { lda #0 !a: sta CHARSET - //SEG217 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 + //SEG221 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 inc i - //SEG218 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG222 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #8 bcc b2_from_b6 jmp b7 - //SEG219 makecharset::@7 + //SEG223 makecharset::@7 b7: - //SEG220 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vwuz1_band_vbuc1 + //SEG224 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vwuz1_band_vbuc1 lda c and #7 - //SEG221 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuaa_neq_0_then_la1 + //SEG225 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuaa_neq_0_then_la1 cmp #0 bne b9_from_b7 - //SEG222 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] + //SEG226 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] b8_from_b7: jmp b8 - //SEG223 makecharset::@8 + //SEG227 makecharset::@8 b8: - //SEG224 [124] call print_char + //SEG228 [124] call print_char jsr print_char - //SEG225 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG229 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] b9_from_b7: b9_from_b8: - //SEG226 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG230 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy jmp b9 - //SEG227 makecharset::@9 + //SEG231 makecharset::@9 b9: - //SEG228 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG232 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG229 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG233 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1_from_b9 @@ -4974,71 +5021,71 @@ makecharset: { bcc b1_from_b9 !: jmp breturn - //SEG230 makecharset::@return + //SEG234 makecharset::@return breturn: - //SEG231 [128] return + //SEG235 [128] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG232 print_char +//SEG236 print_char // Print a single char print_char: { .const ch = '.' - //SEG233 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG237 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG234 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG238 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG235 print_char::@return + //SEG239 print_char::@return breturn: - //SEG236 [131] return + //SEG240 [131] return rts } -//SEG237 sid_rnd +//SEG241 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG238 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG242 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG239 sid_rnd::@return + //SEG243 sid_rnd::@return breturn: - //SEG240 [133] return + //SEG244 [133] return rts } -//SEG241 print_cls +//SEG245 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG242 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG246 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG243 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG247 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta sc lda #>print_line_cursor sta sc+1 jmp b1 - //SEG244 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG248 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG245 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG249 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG246 print_cls::@1 + //SEG250 print_cls::@1 b1: - //SEG247 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG251 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG248 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG252 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG249 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG253 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -5046,26 +5093,26 @@ print_cls: { cmp #<print_line_cursor+$3e8 bne b1_from_b1 jmp breturn - //SEG250 print_cls::@return + //SEG254 print_cls::@return breturn: - //SEG251 [139] return + //SEG255 [139] return rts } -//SEG252 sid_rnd_init +//SEG256 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG253 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG257 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG254 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG255 sid_rnd_init::@return + //SEG259 sid_rnd_init::@return breturn: - //SEG256 [142] return + //SEG260 [142] return rts } .pc = SINTABLE "SINTABLE" @@ -5112,6 +5159,7 @@ Removing instruction jmp b6_20 Removing instruction jmp b6_21 Removing instruction jmp b6_22 Removing instruction jmp b6_23 +Removing instruction jmp b6_24 Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b10 @@ -5136,13 +5184,12 @@ Removing instruction lda #BLUE Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 -Removing instruction ldy i +Replacing instruction ldx #0 with TAX Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b3 with b4 -Replacing label b1_from_b1 with b1 Replacing label b3_from_b3 with b3 Replacing label b5_from_b7 with b5 Replacing label b4_from_b11 with b4 @@ -5164,7 +5211,6 @@ Removing instruction toD0181_from_b2: Removing instruction toD0181: Removing instruction b3: Removing instruction b4_from_b3: -Removing instruction b1_from_b1: Removing instruction b3_from_b3: Removing instruction b5_from_b7: Removing instruction b10_from_makecharset: @@ -5215,8 +5261,10 @@ Removing instruction b6_20: Removing instruction b6_21: Removing instruction b6_22: Removing instruction b6_23: +Removing instruction b6_24: Removing instruction b7: Removing instruction breturn: +Removing instruction b1_from_b8: Removing instruction b10: Removing instruction b1_from_b10: Removing instruction b2_from_b1: @@ -5236,7 +5284,6 @@ Updating BasicUpstart to call main directly Removing instruction jsr main Succesful ASM optimization Pass5SkipBegin Removing instruction jmp b1 -Removing instruction jmp b1 Removing instruction jmp b3 Removing instruction jmp b5 Removing instruction jmp b1 @@ -5246,8 +5293,9 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [228] bcc b5 to bcs -Fixing long branch [326] bcc b1 to bcs +Fixing long branch [229] bcc b5 to bcs +Fixing long branch [330] bcc b1 to bcs +Fixing long branch [108] bcc b8 to bcs FINAL SYMBOL TABLE (label) @1 @@ -5363,22 +5411,20 @@ FINAL SYMBOL TABLE (byte) WHITE (byte) YELLOW (byte) c1A -(byte) c1A#1 c1A zp ZP_BYTE:4 1.0714285714285714 -(byte) c1A#3 c1A zp ZP_BYTE:4 0.1911764705882353 +(byte) c1A#1 c1A zp ZP_BYTE:4 1.1538461538461537 +(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925 (byte) c1B -(byte) c1B#1 c1B zp ZP_BYTE:5 0.9999999999999999 -(byte) c1B#3 c1B zp ZP_BYTE:5 0.19402985074626866 +(byte) c1B#1 c1B zp ZP_BYTE:5 1.0714285714285714 +(byte) c1B#3 c1B zp ZP_BYTE:5 0.1911764705882353 (byte) c2A -(byte) c2A#1 c2A zp ZP_BYTE:6 0.6 -(byte) c2A#3 c2A zp ZP_BYTE:6 0.22807017543859648 +(byte) c2A#1 c2A zp ZP_BYTE:6 0.625 +(byte) c2A#3 c2A zp ZP_BYTE:6 0.22413793103448276 (byte) c2B -(byte) c2B#1 c2B zp ZP_BYTE:7 0.5769230769230769 -(byte) c2B#3 c2B zp ZP_BYTE:7 0.23214285714285715 +(byte) c2B#1 c2B zp ZP_BYTE:7 0.6 +(byte) c2B#3 c2B zp ZP_BYTE:7 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$0 reg byte a 4.0 (byte~) doplasma::$1 reg byte a 202.0 (byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$5 reg byte a 202.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 @@ -5401,6 +5447,7 @@ FINAL SYMBOL TABLE (label) doplasma::@6_21 (label) doplasma::@6_22 (label) doplasma::@6_23 +(label) doplasma::@6_24 (label) doplasma::@6_3 (label) doplasma::@6_4 (label) doplasma::@6_5 @@ -5409,15 +5456,16 @@ FINAL SYMBOL TABLE (label) doplasma::@6_8 (label) doplasma::@6_9 (label) doplasma::@7 +(label) doplasma::@8 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 1.5 -(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 43.285714285714285 -(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 204.0 +(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 2.0 +(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 40.4 +(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 76.25 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 2.0 +(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 4.0 (byte) doplasma::c1b#1 c1b zp ZP_BYTE:9 50.5 -(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 102.0 +(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 61.0 (byte) doplasma::c2a (byte) doplasma::c2a#0 c2a zp ZP_BYTE:8 2.0 (byte) doplasma::c2a#1 c2a zp ZP_BYTE:8 50.5 @@ -5427,18 +5475,18 @@ FINAL SYMBOL TABLE (byte) doplasma::c2b#1 c2b zp ZP_BYTE:9 67.33333333333333 (byte) doplasma::c2b#2 c2b zp ZP_BYTE:9 76.25 (byte) doplasma::i -(byte) doplasma::i#1 i zp ZP_BYTE:10 151.5 -(byte) doplasma::i#2 i zp ZP_BYTE:10 67.33333333333333 +(byte) doplasma::i#1 i zp ZP_BYTE:10 101.0 +(byte) doplasma::i#2 i zp ZP_BYTE:10 50.5 (byte) doplasma::i1 (byte) doplasma::i1#1 i1 zp ZP_BYTE:10 151.5 (byte) doplasma::i1#2 i1 zp ZP_BYTE:10 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 reg byte x 151.5 -(byte) doplasma::i2#2 reg byte x 55.45098039215691 +(byte) doplasma::i2#2 reg byte x 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 reg byte a 151.5 +(byte) doplasma::val#0 reg byte a 202.0 (byte) doplasma::val#1 reg byte a 151.5 (byte) doplasma::val#10 reg byte a 151.5 (byte) doplasma::val#12 reg byte a 151.5 @@ -5460,13 +5508,19 @@ FINAL SYMBOL TABLE (byte) doplasma::val#42 reg byte a 151.5 (byte) doplasma::val#44 reg byte a 151.5 (byte) doplasma::val#46 reg byte a 151.5 -(byte) doplasma::val#48 reg byte a 202.0 +(byte) doplasma::val#48 reg byte a 151.5 +(byte) doplasma::val#50 reg byte a 202.0 (byte) doplasma::val#6 reg byte a 151.5 (byte) doplasma::val#8 reg byte a 151.5 (byte[$28]) doplasma::xbuf (const byte[$28]) doplasma::xbuf#0 xbuf = { fill( $28, 0) } (byte[$19]) doplasma::ybuf (const byte[$19]) doplasma::ybuf#0 ybuf = { fill( $19, 0) } +(byte) doplasma::yprev +(byte) doplasma::yprev#2 reg byte x 101.0 +(byte~) doplasma::yprev#3 reg byte x 202.0 +(byte) doplasma::yval +(byte) doplasma::yval#0 yval zp ZP_BYTE:13 43.285714285714285 (void()) main() (label) main::@1 (label) main::@2 @@ -5495,8 +5549,8 @@ FINAL SYMBOL TABLE (byte~) makecharset::$2 reg byte a 22.0 (byte~) makecharset::$3 reg byte a 2002.0 (byte~) makecharset::$4 $4 zp ZP_BYTE:6 2002.0 -(word~) makecharset::$8 $8 zp ZP_WORD:13 202.0 -(word~) makecharset::$9 $9 zp ZP_WORD:13 202.0 +(word~) makecharset::$8 $8 zp ZP_WORD:14 202.0 +(word~) makecharset::$9 $9 zp ZP_WORD:14 202.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -5560,15 +5614,15 @@ zp ZP_BYTE:6 [ c2A#1 c2A#3 makecharset::$4 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +reg byte x [ doplasma::yprev#2 doplasma::yprev#3 ] zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ] reg byte x [ doplasma::i2#2 doplasma::i2#1 ] zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] -reg byte a [ doplasma::$0 ] +zp ZP_BYTE:13 [ doplasma::yval#0 ] reg byte a [ doplasma::$1 ] reg byte a [ doplasma::$3 ] -reg byte a [ doplasma::$5 ] reg byte a [ doplasma::val#0 ] reg byte a [ doplasma::val#1 ] reg byte a [ doplasma::val#4 ] @@ -5594,20 +5648,22 @@ reg byte a [ doplasma::val#42 ] reg byte a [ doplasma::val#44 ] reg byte a [ doplasma::val#46 ] reg byte a [ doplasma::val#48 ] +reg byte a [ doplasma::val#50 ] reg byte a [ makecharset::$2 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ makecharset::$3 ] -zp ZP_WORD:13 [ makecharset::$8 makecharset::$9 ] +zp ZP_WORD:14 [ makecharset::$8 makecharset::$9 ] reg byte a [ makecharset::$11 ] reg byte a [ sid_rnd::return#0 ] FINAL ASSEMBLER -Score: 92771 +Score: 94400 //SEG0 File Comments // A KickC version of the plasma routine from the CC65 samples -// This version has an unrolled inner loop to reach ~50FPS +// This version has an unrolled inner loop to reach 50+FPS +// This version also optimizes the inner loop by calculating the Y buffer as a set of differences // (w)2001 by groepaz/hitmen // Cleanup and porting to CC65 by Ullrich von Bassewitz. // Ported to KickC by Jesper Gravgaard. @@ -5723,6 +5779,7 @@ main: { doplasma: { .label c1a = 8 .label c1b = 9 + .label yval = $d .label i = $a .label c2a = 8 .label c2b = 9 @@ -5733,369 +5790,377 @@ doplasma: { //SEG47 [20] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 lda c1B sta c1b - //SEG48 [21] (byte~) doplasma::$0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#0) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#0) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 + //SEG48 [21] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] + //SEG49 [21] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG50 [21] phi (byte) doplasma::yprev#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma->doplasma::@1#1] -- vbuxx=vbuc1 + tax + //SEG51 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#2] -- register_copy + //SEG52 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#3] -- register_copy + // Calculate ybuff as a bunch of differences + //SEG53 doplasma::@1 + b1: + //SEG54 [22] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 ldy c1a lda SINTABLE,y ldy c1b clc adc SINTABLE,y - //SEG49 [22] *((const byte[$19]) doplasma::ybuf#0) ← (byte~) doplasma::$0 -- _deref_pbuc1=vbuaa - sta ybuf - //SEG50 [23] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1] - //SEG51 [23] phi (byte) doplasma::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 - lda #1 - sta i - //SEG52 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy - //SEG53 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy - // Calculate ybuff as a bunch of differences - //SEG54 [23] phi from doplasma::@1 to doplasma::@1 [phi:doplasma::@1->doplasma::@1] - //SEG55 [23] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@1->doplasma::@1#0] -- register_copy - //SEG56 [23] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@1->doplasma::@1#1] -- register_copy - //SEG57 [23] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@1->doplasma::@1#2] -- register_copy - //SEG58 doplasma::@1 - b1: - //SEG59 [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + sta yval + //SEG55 [23] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx + txa + eor #$ff + sec + adc yval + //SEG56 [24] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuaa + ldy i + sta ybuf,y + //SEG57 [25] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c1a axs #-[4] stx c1a - //SEG60 [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 + //SEG58 [26] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vbuz1=vbuz1_plus_vbuc1 lax c1b axs #-[9] stx c1b - //SEG61 [26] (byte~) doplasma::$1 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c1a#1) + *((const byte*) SINTABLE#0 + (byte) doplasma::c1b#1) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 - ldy c1a - lda SINTABLE,y - ldy c1b - clc - adc SINTABLE,y - //SEG62 [27] (byte~) doplasma::$3 ← (byte~) doplasma::$1 - *((const byte[$19]) doplasma::ybuf#0+-(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) doplasma::i#2) -- vbuaa=vbuaa_minus_pbuc1_derefidx_vbuz1 - ldy i - sec - sbc ybuf+-1,y - //SEG63 [28] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa - sta ybuf,y - //SEG64 [29] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 + //SEG59 [27] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG65 [30] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@8 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$19 - bcc b1 - //SEG66 doplasma::@2 - //SEG67 [31] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + bcs !b8+ + jmp b8 + !b8: + //SEG61 doplasma::@2 + //SEG62 [29] (byte) c1A#3 ← (byte) c1A#1 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c1A axs #-[3] stx c1A - //SEG68 [32] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 + //SEG63 [30] (byte) c1B#3 ← (byte) c1B#1 - (byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_minus_vbuc1 lax c1B axs #5 stx c1B - //SEG69 [33] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 + //SEG64 [31] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 lda c2A sta c2a - //SEG70 [34] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 + //SEG65 [32] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 lda c2B sta c2b - //SEG71 [35] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] - //SEG72 [35] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 + //SEG66 [33] phi from doplasma::@2 to doplasma::@3 [phi:doplasma::@2->doplasma::@3] + //SEG67 [33] phi (byte) doplasma::i1#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@2->doplasma::@3#0] -- vbuz1=vbuc1 lda #0 sta i1 - //SEG73 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy - //SEG74 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy - //SEG75 [35] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] - //SEG76 [35] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy - //SEG77 [35] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy - //SEG78 [35] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy - //SEG79 doplasma::@3 + //SEG68 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@2->doplasma::@3#1] -- register_copy + //SEG69 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@2->doplasma::@3#2] -- register_copy + //SEG70 [33] phi from doplasma::@3 to doplasma::@3 [phi:doplasma::@3->doplasma::@3] + //SEG71 [33] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@3->doplasma::@3#0] -- register_copy + //SEG72 [33] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@3->doplasma::@3#1] -- register_copy + //SEG73 [33] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@3->doplasma::@3#2] -- register_copy + //SEG74 doplasma::@3 b3: - //SEG80 [36] (byte~) doplasma::$5 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 + //SEG75 [34] (byte~) doplasma::$3 ← *((const byte*) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE#0 + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 ldy c2a lda SINTABLE,y ldy c2b clc adc SINTABLE,y - //SEG81 [37] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG76 [35] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy i1 sta xbuf,y - //SEG82 [38] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG77 [36] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lax c2a axs #-[3] stx c2a - //SEG83 [39] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 + //SEG78 [37] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 lax c2b axs #-[7] stx c2b - //SEG84 [40] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 + //SEG79 [38] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 inc i1 - //SEG85 [41] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG80 [39] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -- vbuz1_lt_vbuc1_then_la1 lda i1 cmp #$28 bcc b3 - //SEG86 doplasma::@4 - //SEG87 [42] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG81 doplasma::@4 + //SEG82 [40] (byte) c2A#3 ← (byte) c2A#1 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c2A clc adc #2 sta c2A - //SEG88 [43] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 + //SEG83 [41] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_minus_vbuc1 lax c2B axs #3 stx c2B - //SEG89 [44] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] - //SEG90 [44] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 + //SEG84 [42] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] + //SEG85 [42] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG91 [44] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] - //SEG92 [44] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy - //SEG93 doplasma::@5 + //SEG86 [42] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] + //SEG87 [42] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG88 doplasma::@5 b5: - //SEG94 [45] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 + //SEG89 [43] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuaa=pbuc1_derefidx_vbuxx + // Find the first value on the row lda xbuf,x - clc - adc ybuf - //SEG95 [46] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#0 -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN1,x // Calculate the next values as sums of diffs // Use experimental loop unrolling to increase the speed - //SEG96 doplasma::@6 - //SEG97 [47] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG90 doplasma::@6 + //SEG91 [44] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=vbuaa_plus__deref_pbuc1 + clc + adc ybuf + //SEG92 [45] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN1,x + //SEG93 doplasma::@6_1 + //SEG94 [46] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+1 - //SEG98 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG95 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+1*$28,x - //SEG99 doplasma::@6_1 - //SEG100 [49] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG96 doplasma::@6_2 + //SEG97 [48] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+2 - //SEG101 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG98 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+2*$28,x - //SEG102 doplasma::@6_2 - //SEG103 [51] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG99 doplasma::@6_3 + //SEG100 [50] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+3 - //SEG104 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG101 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+3*$28,x - //SEG105 doplasma::@6_3 - //SEG106 [53] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG102 doplasma::@6_4 + //SEG103 [52] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+4 - //SEG107 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG104 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+4*$28,x - //SEG108 doplasma::@6_4 - //SEG109 [55] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG105 doplasma::@6_5 + //SEG106 [54] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+5 - //SEG110 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG107 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+5*$28,x - //SEG111 doplasma::@6_5 - //SEG112 [57] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG108 doplasma::@6_6 + //SEG109 [56] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+6 - //SEG113 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG110 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+6*$28,x - //SEG114 doplasma::@6_6 - //SEG115 [59] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG111 doplasma::@6_7 + //SEG112 [58] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+7 - //SEG116 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG113 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+7*$28,x - //SEG117 doplasma::@6_7 - //SEG118 [61] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG114 doplasma::@6_8 + //SEG115 [60] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+8 - //SEG119 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG116 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+8*$28,x - //SEG120 doplasma::@6_8 - //SEG121 [63] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG117 doplasma::@6_9 + //SEG118 [62] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+9 - //SEG122 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG119 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+9*$28,x - //SEG123 doplasma::@6_9 - //SEG124 [65] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG120 doplasma::@6_10 + //SEG121 [64] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$a - //SEG125 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG122 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$a*$28,x - //SEG126 doplasma::@6_10 - //SEG127 [67] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG123 doplasma::@6_11 + //SEG124 [66] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$b - //SEG128 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG125 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$b*$28,x - //SEG129 doplasma::@6_11 - //SEG130 [69] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG126 doplasma::@6_12 + //SEG127 [68] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$c - //SEG131 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG128 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$c*$28,x - //SEG132 doplasma::@6_12 - //SEG133 [71] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG129 doplasma::@6_13 + //SEG130 [70] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$d - //SEG134 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG131 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$d*$28,x - //SEG135 doplasma::@6_13 - //SEG136 [73] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG132 doplasma::@6_14 + //SEG133 [72] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$e - //SEG137 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG134 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$e*$28,x - //SEG138 doplasma::@6_14 - //SEG139 [75] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG135 doplasma::@6_15 + //SEG136 [74] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$f - //SEG140 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG137 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$f*$28,x - //SEG141 doplasma::@6_15 - //SEG142 [77] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG138 doplasma::@6_16 + //SEG139 [76] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$10 - //SEG143 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG140 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$10*$28,x - //SEG144 doplasma::@6_16 - //SEG145 [79] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG141 doplasma::@6_17 + //SEG142 [78] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$11 - //SEG146 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG143 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$11*$28,x - //SEG147 doplasma::@6_17 - //SEG148 [81] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG144 doplasma::@6_18 + //SEG145 [80] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$12 - //SEG149 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG146 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$12*$28,x - //SEG150 doplasma::@6_18 - //SEG151 [83] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG147 doplasma::@6_19 + //SEG148 [82] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$13 - //SEG152 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG149 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$13*$28,x - //SEG153 doplasma::@6_19 - //SEG154 [85] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG150 doplasma::@6_20 + //SEG151 [84] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$14 - //SEG155 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG152 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$14*$28,x - //SEG156 doplasma::@6_20 - //SEG157 [87] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG153 doplasma::@6_21 + //SEG154 [86] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$15 - //SEG158 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG155 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$15*$28,x - //SEG159 doplasma::@6_21 - //SEG160 [89] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG156 doplasma::@6_22 + //SEG157 [88] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$16 - //SEG161 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG158 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$16*$28,x - //SEG162 doplasma::@6_22 - //SEG163 [91] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG159 doplasma::@6_23 + //SEG160 [90] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$17 - //SEG164 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG161 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$17*$28,x - //SEG165 doplasma::@6_23 - //SEG166 [93] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 + //SEG162 doplasma::@6_24 + //SEG163 [92] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 clc adc ybuf+$18 - //SEG167 [94] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG164 [93] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$18*$28,x - //SEG168 doplasma::@7 - //SEG169 [95] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx + //SEG165 doplasma::@7 + //SEG166 [94] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx inx - //SEG170 [96] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 + //SEG167 [95] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 cpx #$28 bcs !b5+ jmp b5 !b5: - //SEG171 doplasma::@return - //SEG172 [97] return + //SEG168 doplasma::@return + //SEG169 [96] return rts + //SEG170 doplasma::@8 + b8: + //SEG171 [97] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0 -- vbuxx=vbuz1 + ldx yval + //SEG172 [21] phi from doplasma::@8 to doplasma::@1 [phi:doplasma::@8->doplasma::@1] + //SEG173 [21] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@8->doplasma::@1#0] -- register_copy + //SEG174 [21] phi (byte) doplasma::yprev#2 = (byte~) doplasma::yprev#3 [phi:doplasma::@8->doplasma::@1#1] -- register_copy + //SEG175 [21] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@8->doplasma::@1#2] -- register_copy + //SEG176 [21] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@8->doplasma::@1#3] -- register_copy + jmp b1 xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG173 makecharset +//SEG177 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { .label _4 = 6 - .label _8 = $d - .label _9 = $d + .label _8 = $e + .label _9 = $e .label s = 5 .label i = 4 .label c = 2 - //SEG174 [99] call sid_rnd_init + //SEG178 [99] call sid_rnd_init jsr sid_rnd_init - //SEG175 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] - //SEG176 makecharset::@10 - //SEG177 [101] call print_cls - //SEG178 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG179 [100] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG180 makecharset::@10 + //SEG181 [101] call print_cls + //SEG182 [134] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] jsr print_cls - //SEG179 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] - //SEG180 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG183 [102] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG184 [102] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta print_char_cursor lda #>print_line_cursor sta print_char_cursor+1 - //SEG181 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG185 [102] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c sta c+1 - //SEG182 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] - //SEG183 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG184 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy - //SEG185 makecharset::@1 + //SEG186 [102] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG187 [102] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG188 [102] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG189 makecharset::@1 b1: - //SEG186 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 + //SEG190 [103] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 lda c - //SEG187 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG191 [104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa tay lda SINTABLE,y sta s - //SEG188 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] - //SEG189 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG192 [105] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG193 [105] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG190 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] - //SEG191 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy - //SEG192 makecharset::@2 + //SEG194 [105] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG195 [105] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG196 makecharset::@2 b2: - //SEG193 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] - //SEG194 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 + //SEG197 [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG198 [106] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 ldy #0 - //SEG195 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 + //SEG199 [106] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG196 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] - //SEG197 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG198 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy - //SEG199 makecharset::@3 + //SEG200 [106] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG201 [106] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG202 [106] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG203 makecharset::@3 b3: - //SEG200 [107] call sid_rnd + //SEG204 [107] call sid_rnd jsr sid_rnd - //SEG201 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - //SEG202 makecharset::@11 - //SEG203 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - //SEG204 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 + //SEG205 [108] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG206 makecharset::@11 + //SEG207 [109] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + //SEG208 [110] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 and #$ff sta _4 - //SEG205 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG209 [111] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4 - //SEG206 makecharset::@5 - //SEG207 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx + //SEG210 makecharset::@5 + //SEG211 [112] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx tya ora bittab,x tay - //SEG208 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] - //SEG209 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy - //SEG210 makecharset::@4 + //SEG212 [113] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG213 [113] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG214 makecharset::@4 b4: - //SEG211 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx + //SEG215 [114] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx inx - //SEG212 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG216 [115] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #8 bcc b3 - //SEG213 makecharset::@6 - //SEG214 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG217 makecharset::@6 + //SEG218 [116] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -6106,7 +6171,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG215 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 + //SEG219 [117] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 lda i clc adc _9 @@ -6114,7 +6179,7 @@ makecharset: { bcc !+ inc _9+1 !: - //SEG216 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy + //SEG220 [118] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy tya sta !v++1 lda #<CHARSET @@ -6128,33 +6193,33 @@ makecharset: { lda #0 !a: sta CHARSET - //SEG217 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 + //SEG221 [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 -- vbuz1=_inc_vbuz1 inc i - //SEG218 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG222 [120] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #8 bcc b2 - //SEG219 makecharset::@7 - //SEG220 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vwuz1_band_vbuc1 + //SEG223 makecharset::@7 + //SEG224 [121] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vwuz1_band_vbuc1 lda c and #7 - //SEG221 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuaa_neq_0_then_la1 + //SEG225 [122] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -- vbuaa_neq_0_then_la1 cmp #0 bne b9 - //SEG222 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] - //SEG223 makecharset::@8 - //SEG224 [124] call print_char + //SEG226 [123] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] + //SEG227 makecharset::@8 + //SEG228 [124] call print_char jsr print_char - //SEG225 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] - //SEG226 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy - //SEG227 makecharset::@9 + //SEG229 [125] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG230 [125] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG231 makecharset::@9 b9: - //SEG228 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG232 [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG229 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG233 [127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1 @@ -6165,85 +6230,85 @@ makecharset: { jmp b1 !b1: !: - //SEG230 makecharset::@return - //SEG231 [128] return + //SEG234 makecharset::@return + //SEG235 [128] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG232 print_char +//SEG236 print_char // Print a single char print_char: { .const ch = '.' - //SEG233 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG237 [129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG234 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG238 [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG235 print_char::@return - //SEG236 [131] return + //SEG239 print_char::@return + //SEG240 [131] return rts } -//SEG237 sid_rnd +//SEG241 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG238 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG242 [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG239 sid_rnd::@return - //SEG240 [133] return + //SEG243 sid_rnd::@return + //SEG244 [133] return rts } -//SEG241 print_cls +//SEG245 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG242 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG243 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG246 [135] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG247 [135] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<print_line_cursor sta sc lda #>print_line_cursor sta sc+1 - //SEG244 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG245 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG246 print_cls::@1 + //SEG248 [135] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG249 [135] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG250 print_cls::@1 b1: - //SEG247 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG251 [136] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG248 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG252 [137] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG249 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG253 [138] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1 lda sc cmp #<print_line_cursor+$3e8 bne b1 - //SEG250 print_cls::@return - //SEG251 [139] return + //SEG254 print_cls::@return + //SEG255 [139] return rts } -//SEG252 sid_rnd_init +//SEG256 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG253 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 + //SEG257 [140] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG254 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG258 [141] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG255 sid_rnd_init::@return - //SEG256 [142] return + //SEG259 sid_rnd_init::@return + //SEG260 [142] return rts } .pc = SINTABLE "SINTABLE" diff --git a/src/test/ref/examples/plasma/plasma-unroll.sym b/src/test/ref/examples/plasma/plasma-unroll.sym index 6da6c88bb..290f51fde 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.sym +++ b/src/test/ref/examples/plasma/plasma-unroll.sym @@ -111,22 +111,20 @@ (byte) WHITE (byte) YELLOW (byte) c1A -(byte) c1A#1 c1A zp ZP_BYTE:4 1.0714285714285714 -(byte) c1A#3 c1A zp ZP_BYTE:4 0.1911764705882353 +(byte) c1A#1 c1A zp ZP_BYTE:4 1.1538461538461537 +(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925 (byte) c1B -(byte) c1B#1 c1B zp ZP_BYTE:5 0.9999999999999999 -(byte) c1B#3 c1B zp ZP_BYTE:5 0.19402985074626866 +(byte) c1B#1 c1B zp ZP_BYTE:5 1.0714285714285714 +(byte) c1B#3 c1B zp ZP_BYTE:5 0.1911764705882353 (byte) c2A -(byte) c2A#1 c2A zp ZP_BYTE:6 0.6 -(byte) c2A#3 c2A zp ZP_BYTE:6 0.22807017543859648 +(byte) c2A#1 c2A zp ZP_BYTE:6 0.625 +(byte) c2A#3 c2A zp ZP_BYTE:6 0.22413793103448276 (byte) c2B -(byte) c2B#1 c2B zp ZP_BYTE:7 0.5769230769230769 -(byte) c2B#3 c2B zp ZP_BYTE:7 0.23214285714285715 +(byte) c2B#1 c2B zp ZP_BYTE:7 0.6 +(byte) c2B#3 c2B zp ZP_BYTE:7 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) -(byte~) doplasma::$0 reg byte a 4.0 (byte~) doplasma::$1 reg byte a 202.0 (byte~) doplasma::$3 reg byte a 202.0 -(byte~) doplasma::$5 reg byte a 202.0 (label) doplasma::@1 (label) doplasma::@2 (label) doplasma::@3 @@ -149,6 +147,7 @@ (label) doplasma::@6_21 (label) doplasma::@6_22 (label) doplasma::@6_23 +(label) doplasma::@6_24 (label) doplasma::@6_3 (label) doplasma::@6_4 (label) doplasma::@6_5 @@ -157,15 +156,16 @@ (label) doplasma::@6_8 (label) doplasma::@6_9 (label) doplasma::@7 +(label) doplasma::@8 (label) doplasma::@return (byte) doplasma::c1a -(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 1.5 -(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 43.285714285714285 -(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 204.0 +(byte) doplasma::c1a#0 c1a zp ZP_BYTE:8 2.0 +(byte) doplasma::c1a#1 c1a zp ZP_BYTE:8 40.4 +(byte) doplasma::c1a#2 c1a zp ZP_BYTE:8 76.25 (byte) doplasma::c1b -(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 2.0 +(byte) doplasma::c1b#0 c1b zp ZP_BYTE:9 4.0 (byte) doplasma::c1b#1 c1b zp ZP_BYTE:9 50.5 -(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 102.0 +(byte) doplasma::c1b#2 c1b zp ZP_BYTE:9 61.0 (byte) doplasma::c2a (byte) doplasma::c2a#0 c2a zp ZP_BYTE:8 2.0 (byte) doplasma::c2a#1 c2a zp ZP_BYTE:8 50.5 @@ -175,18 +175,18 @@ (byte) doplasma::c2b#1 c2b zp ZP_BYTE:9 67.33333333333333 (byte) doplasma::c2b#2 c2b zp ZP_BYTE:9 76.25 (byte) doplasma::i -(byte) doplasma::i#1 i zp ZP_BYTE:10 151.5 -(byte) doplasma::i#2 i zp ZP_BYTE:10 67.33333333333333 +(byte) doplasma::i#1 i zp ZP_BYTE:10 101.0 +(byte) doplasma::i#2 i zp ZP_BYTE:10 50.5 (byte) doplasma::i1 (byte) doplasma::i1#1 i1 zp ZP_BYTE:10 151.5 (byte) doplasma::i1#2 i1 zp ZP_BYTE:10 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 reg byte x 151.5 -(byte) doplasma::i2#2 reg byte x 55.45098039215691 +(byte) doplasma::i2#2 reg byte x 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte) doplasma::val -(byte) doplasma::val#0 reg byte a 151.5 +(byte) doplasma::val#0 reg byte a 202.0 (byte) doplasma::val#1 reg byte a 151.5 (byte) doplasma::val#10 reg byte a 151.5 (byte) doplasma::val#12 reg byte a 151.5 @@ -208,13 +208,19 @@ (byte) doplasma::val#42 reg byte a 151.5 (byte) doplasma::val#44 reg byte a 151.5 (byte) doplasma::val#46 reg byte a 151.5 -(byte) doplasma::val#48 reg byte a 202.0 +(byte) doplasma::val#48 reg byte a 151.5 +(byte) doplasma::val#50 reg byte a 202.0 (byte) doplasma::val#6 reg byte a 151.5 (byte) doplasma::val#8 reg byte a 151.5 (byte[$28]) doplasma::xbuf (const byte[$28]) doplasma::xbuf#0 xbuf = { fill( $28, 0) } (byte[$19]) doplasma::ybuf (const byte[$19]) doplasma::ybuf#0 ybuf = { fill( $19, 0) } +(byte) doplasma::yprev +(byte) doplasma::yprev#2 reg byte x 101.0 +(byte~) doplasma::yprev#3 reg byte x 202.0 +(byte) doplasma::yval +(byte) doplasma::yval#0 yval zp ZP_BYTE:13 43.285714285714285 (void()) main() (label) main::@1 (label) main::@2 @@ -243,8 +249,8 @@ (byte~) makecharset::$2 reg byte a 22.0 (byte~) makecharset::$3 reg byte a 2002.0 (byte~) makecharset::$4 $4 zp ZP_BYTE:6 2002.0 -(word~) makecharset::$8 $8 zp ZP_WORD:13 202.0 -(word~) makecharset::$9 $9 zp ZP_WORD:13 202.0 +(word~) makecharset::$8 $8 zp ZP_WORD:14 202.0 +(word~) makecharset::$9 $9 zp ZP_WORD:14 202.0 (label) makecharset::@1 (label) makecharset::@10 (label) makecharset::@11 @@ -308,15 +314,15 @@ zp ZP_BYTE:6 [ c2A#1 c2A#3 makecharset::$4 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +reg byte x [ doplasma::yprev#2 doplasma::yprev#3 ] zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ] reg byte x [ doplasma::i2#2 doplasma::i2#1 ] zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] -reg byte a [ doplasma::$0 ] +zp ZP_BYTE:13 [ doplasma::yval#0 ] reg byte a [ doplasma::$1 ] reg byte a [ doplasma::$3 ] -reg byte a [ doplasma::$5 ] reg byte a [ doplasma::val#0 ] reg byte a [ doplasma::val#1 ] reg byte a [ doplasma::val#4 ] @@ -342,9 +348,10 @@ reg byte a [ doplasma::val#42 ] reg byte a [ doplasma::val#44 ] reg byte a [ doplasma::val#46 ] reg byte a [ doplasma::val#48 ] +reg byte a [ doplasma::val#50 ] reg byte a [ makecharset::$2 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ makecharset::$3 ] -zp ZP_WORD:13 [ makecharset::$8 makecharset::$9 ] +zp ZP_WORD:14 [ makecharset::$8 makecharset::$9 ] reg byte a [ makecharset::$11 ] reg byte a [ sid_rnd::return#0 ]