diff --git a/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc b/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc
index c2d74d223..c0d5b353e 100644
--- a/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc
+++ b/src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc
@@ -1,11 +1,20 @@
-// A flexible sprite multiplexer routine
+// A flexible sprite multiplexer routine for 24 sprites.
+// Usage:
+// - Once:
+// - plexInit(screen): Initialize the data structures and set the screen address
+// Each frame:
+// - Set x-pos, y-pos and pointer in PLEX_XPOS[id], PLEX_YPOS[id], PLEX_PTR[id]
+// - plexSort() Sorts the sprites according to y-positions and prepares for showing them. This uses an insertion sort that is quite fast when the relative order of the sprites does not change very much.
+// - plexShowNextYpos() Returns the Y-position of the next sprite to show.
+// - plexShowSprite() Shows the next sprite by copying values from PLEX_XXX[] to an actual sprite. Actual sprites are used round-robin. This should be called once for each of the 24 virtual sprites.
+//
+// In practice a good method is to wait until the raster is close to plexShowNextYpos() and then call plexShowSprite(). Repeat until all 24 sprites have been shown.
+
+import "c64"
 
 // TODO: Let the caller specify the number of sprites (PLEX_COUNT)
 // TODO: Optimize plexSort() - currently nxt_idx and nxt_y are stored in the outer loop.
 
-import "c64"
-import "sinus"
-
 // The number of sprites in the multiplexer
 const byte PLEX_COUNT = 24;
 
diff --git a/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc b/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc
index 8a52d4eb2..675330c7d 100644
--- a/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc
+++ b/src/test/java/dk/camelot64/kickc/test/kc/simple-multiplexer.kc
@@ -8,14 +8,13 @@ byte* SCREEN = $400;
 byte* YSIN = $2100;
 
 kickasm(pc YSIN) {{
-    .var min = 51
+    .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))
 }}
 
-
 kickasm(pc SPRITE, resource "balloon.png") {{
 .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
 .for (var y=0; y<21; y++)
@@ -41,7 +40,6 @@ void init() {
         PLEX_XPOS[sx<<1] = xp;
         xp += 12;
     }
-
     // Enable & initialize sprites
     *SPRITES_ENABLE = $ff;
     for(byte ss: 0..7) {
@@ -66,13 +64,10 @@ void loop() {
         // Sort the sprites by y-position
         (*BORDERCOL)++;
         plexSort();
-        // Show the first 8 sprites
-        (*BORDERCOL)++;
-        for( byte ss: 0..7) {
-            plexShowSprite();
-        }
-        // Show the rest of the sprites
-        for( ss: 8..PLEX_COUNT-1) {
+        *BORDERCOL = BLACK;
+        while((*D011&$80)!=0) {}
+        // Show the sprites
+        for( byte ss: 0..PLEX_COUNT-1) {
             *BORDERCOL = BLACK;
             byte rasterY = plexShowNextYpos()-8;
             while(*RASTER<rasterY) {}
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm
index da985c59b..03e92c7ea 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm
+++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.asm
@@ -19,8 +19,8 @@
   .label YSIN = $2100
   .label PLEX_SCREEN_PTR = SCREEN+$3f8
   .label plex_sprite_idx = 4
-  .label plex_show_idx = 5
-  .label plex_sprite_msb = 6
+  .label plex_show_idx = 3
+  .label plex_sprite_msb = 5
   jsr main
 main: {
     sei
@@ -30,8 +30,8 @@ main: {
 }
 loop: {
     .label sin_idx = 2
-    .label ss = 3
     .label rasterY = 9
+    .label ss = 6
     lda #0
     sta sin_idx
   b4:
@@ -54,23 +54,21 @@ loop: {
     inc sin_idx
     inc BORDERCOL
     jsr plexSort
-    inc BORDERCOL
+    lda #BLACK
+    sta BORDERCOL
+  b8:
+    lda D011
+    and #$80
+    cmp #0
+    bne b8
     lda #0
     sta ss
     lda #1
     sta plex_sprite_msb
     lda #0
-    sta plex_show_idx
     sta plex_sprite_idx
-  b8:
-    jsr plexShowSprite
-    inc ss
-    lda ss
-    cmp #8
-    bne b8
-    lda #8
-    sta ss
-  b9:
+    sta plex_show_idx
+  b11:
     lda #BLACK
     sta BORDERCOL
     ldy plex_show_idx
@@ -80,16 +78,16 @@ loop: {
     sec
     sbc #8
     sta rasterY
-  b10:
+  b12:
     lda RASTER
     cmp rasterY
-    bcc b10
+    bcc b12
     inc BORDERCOL
     jsr plexShowSprite
     inc ss
     lda ss
     cmp #PLEX_COUNT-1+1
-    bne b9
+    bne b11
     lda #BLACK
     sta BORDERCOL
     jmp b4
@@ -238,7 +236,7 @@ plexInit: {
   PLEX_PTR: .fill PLEX_COUNT, 0
   PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
 .pc = YSIN "Inline"
-  .var min = 51
+  .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg
index 8058782a4..d548c90fd 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.cfg
@@ -1,8 +1,8 @@
 @begin: scope:[]  from
   [0] phi() [ ] ( )
-  to:@28
-@28: scope:[]  from @begin
-  kickasm(location (const byte*) YSIN#0) {{ .var min = 51
+  to:@8
+@8: scope:[]  from @begin
+  kickasm(location (const byte*) YSIN#0) {{ .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -13,14 +13,14 @@
     .for (var x=0;x<3; x++)
         .byte pic.getSinglecolorByte(x,y)
  }}
-  to:@31
-@31: scope:[]  from @28
+  to:@11
+@11: scope:[]  from @8
   [3] phi() [ ] ( )
   [4] call main  [ ] ( )
   to:@end
-@end: scope:[]  from @31
+@end: scope:[]  from @11
   [5] phi() [ ] ( )
-main: scope:[main]  from @31
+main: scope:[main]  from @11
   asm { sei  }
   [7] call init  [ ] ( main:4 [ ] )
   to:main::@1
@@ -34,8 +34,8 @@ main::@return: scope:[main]  from main::@1
 loop: scope:[loop]  from main::@1
   [11] phi() [ ] ( main:4::loop:9 [ ] )
   to:loop::@1
-loop::@1: scope:[loop]  from loop loop::@23
-  [12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@23/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
+loop::@1: scope:[loop]  from loop loop::@27
+  [12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
   to:loop::@4
 loop::@4: scope:[loop]  from loop::@1 loop::@4
   [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
@@ -51,154 +51,147 @@ loop::@7: scope:[loop]  from loop::@6 loop::@7
   [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] )
   [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
   [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
-  to:loop::@18
-loop::@18: scope:[loop]  from loop::@7
+  to:loop::@20
+loop::@20: scope:[loop]  from loop::@7
   [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   [23] call plexSort  [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
-  to:loop::@26
-loop::@26: scope:[loop]  from loop::@18
-  [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+  to:loop::@30
+loop::@30: scope:[loop]  from loop::@20
+  [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   to:loop::@8
-loop::@8: scope:[loop]  from loop::@26 loop::@27
-  [25] (byte) loop::ss#4 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_sprite_msb#29 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@27/(byte) plex_sprite_msb#17 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_show_idx#25 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_show_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_sprite_idx#24 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_sprite_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [26] call plexShowSprite  [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  to:loop::@27
-loop::@27: scope:[loop]  from loop::@8
-  [27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
-  [28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
-  to:loop::@9
-loop::@9: scope:[loop]  from loop::@27 loop::@28
-  [29] (byte) loop::ss#10 ← phi( loop::@27/(byte/signed byte/word/signed word/dword/signed dword) 8 loop::@28/(byte) loop::ss#3 ) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
+loop::@8: scope:[loop]  from loop::@30 loop::@8
+  [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] )
+  [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+  to:loop::@11
+loop::@11: scope:[loop]  from loop::@31 loop::@8
+  [27] (byte) loop::ss#6 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_sprite_msb#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@31/(byte) plex_sprite_msb#16 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_sprite_idx#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_sprite_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_show_idx#18 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_show_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
   to:loop::plexShowNextYpos1
-loop::plexShowNextYpos1: scope:[loop]  from loop::@9
-  [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] )
-  to:loop::@25
-loop::@25: scope:[loop]  from loop::plexShowNextYpos1
-  [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
-  to:loop::@10
-loop::@10: scope:[loop]  from loop::@10 loop::@25
-  [33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
+loop::plexShowNextYpos1: scope:[loop]  from loop::@11
+  [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] )
+  to:loop::@29
+loop::@29: scope:[loop]  from loop::plexShowNextYpos1
+  [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
   to:loop::@12
-loop::@12: scope:[loop]  from loop::@10
-  [34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  [35] call plexShowSprite  [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  to:loop::@28
-loop::@28: scope:[loop]  from loop::@12
-  [36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
-  [37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
-  to:loop::@23
-loop::@23: scope:[loop]  from loop::@28
-  [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+loop::@12: scope:[loop]  from loop::@12 loop::@29
+  [31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
+  to:loop::@14
+loop::@14: scope:[loop]  from loop::@12
+  [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [33] call plexShowSprite  [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
+  to:loop::@31
+loop::@31: scope:[loop]  from loop::@14
+  [34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
+  [35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
+  to:loop::@27
+loop::@27: scope:[loop]  from loop::@31
+  [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   to:loop::@1
-plexShowSprite: scope:[plexShowSprite]  from loop::@12 loop::@8
-  [39] (byte) plex_sprite_msb#14 ← phi( loop::@12/(byte) plex_sprite_msb#17 loop::@8/(byte) plex_sprite_msb#29 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [39] (byte) plex_show_idx#13 ← phi( loop::@12/(byte) plex_show_idx#15 loop::@8/(byte) plex_show_idx#25 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [39] (byte) plex_sprite_idx#13 ← phi( loop::@12/(byte) plex_sprite_idx#15 loop::@8/(byte) plex_sprite_idx#24 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
-  [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
-  [45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] )
-  [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] )
-  [47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+plexShowSprite: scope:[plexShowSprite]  from loop::@14
+  [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
+  [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
+  [42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] )
+  [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] )
+  [44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@4
 plexShowSprite::@4: scope:[plexShowSprite]  from plexShowSprite
-  [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] )
-  [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+  [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] )
+  [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@2
 plexShowSprite::@2: scope:[plexShowSprite]  from plexShowSprite::@1 plexShowSprite::@4
-  [50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] )
-  [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] )
-  [53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
-  [54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
+  [47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] )
+  [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] )
+  [49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] )
+  [50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
+  [51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
   to:plexShowSprite::@return
 plexShowSprite::@return: scope:[plexShowSprite]  from plexShowSprite::@2 plexShowSprite::@7
-  [55] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#26 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  [56] return  [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
+  [52] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#24 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
+  [53] return  [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
   to:@return
 plexShowSprite::@7: scope:[plexShowSprite]  from plexShowSprite::@2
-  [57] phi() [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
+  [54] phi() [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
   to:plexShowSprite::@return
 plexShowSprite::@1: scope:[plexShowSprite]  from plexShowSprite
-  [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+  [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@2
-plexSort: scope:[plexSort]  from loop::@18
-  [59] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+plexSort: scope:[plexSort]  from loop::@20
+  [56] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
   to:plexSort::@1
 plexSort::@1: scope:[plexSort]  from plexSort plexSort::@2
-  [60] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
-  [61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
-  [62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
-  [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
+  [57] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
+  [58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
+  [59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
+  [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
   to:plexSort::@10
 plexSort::@10: scope:[plexSort]  from plexSort::@1
-  [64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
+  [61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
   to:plexSort::@3
 plexSort::@3: scope:[plexSort]  from plexSort::@10 plexSort::@7
-  [65] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
-  [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
-  [67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
-  [68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [62] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
+  [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
+  [64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
   to:plexSort::@5
 plexSort::@5: scope:[plexSort]  from plexSort::@3 plexSort::@7
-  [69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
-  [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
+  [66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
+  [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
   to:plexSort::@2
 plexSort::@2: scope:[plexSort]  from plexSort::@1 plexSort::@5
-  [71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
-  [72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
+  [68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
+  [69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
   to:plexSort::@return
 plexSort::@return: scope:[plexSort]  from plexSort::@2
-  [73] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+  [70] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
   to:@return
 plexSort::@7: scope:[plexSort]  from plexSort::@3
-  [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
   to:plexSort::@5
 init: scope:[init]  from main
-  [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
-  [76] call plexInit  [ ] ( main:4::init:7 [ ] )
+  [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
+  [73] call plexInit  [ ] ( main:4::init:7 [ ] )
   to:init::@1
 init::@1: scope:[init]  from init init::@1
-  [77] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [77] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
-  [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
-  [82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
-  [83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
+  [74] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [74] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
+  [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
+  [79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
+  [80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
   to:init::@3
 init::@3: scope:[init]  from init::@1
-  [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
+  [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
   to:init::@2
 init::@2: scope:[init]  from init::@2 init::@3
-  [85] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
-  [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
-  [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
-  [88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
+  [82] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
+  [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
+  [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
+  [85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
   to:init::@return
 init::@return: scope:[init]  from init::@2
-  [89] return  [ ] ( main:4::init:7 [ ] )
+  [86] return  [ ] ( main:4::init:7 [ ] )
   to:@return
 plexInit: scope:[plexInit]  from init
-  [90] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [87] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:plexInit::plexSetScreen1
 plexInit::plexSetScreen1: scope:[plexInit]  from plexInit
-  [91] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [88] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:plexInit::@1
 plexInit::@1: scope:[plexInit]  from plexInit::@1 plexInit::plexSetScreen1
-  [92] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
-  [93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
-  [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
-  [95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
+  [89] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
+  [90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
+  [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
+  [92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
   to:plexInit::@return
 plexInit::@return: scope:[plexInit]  from plexInit::@1
-  [96] return  [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [93] return  [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:@return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log
index 4ead4c52c..9ac7bebba 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.log
@@ -9,14 +9,13 @@ byte* SCREEN = $400;
 byte* YSIN = $2100;
 
 kickasm(pc YSIN) {{
-    .var min = 51
+    .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))
 }}
 
-
 kickasm(pc SPRITE, resource "balloon.png") {{
 .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
 .for (var y=0; y<21; y++)
@@ -42,7 +41,6 @@ void init() {
         PLEX_XPOS[sx<<1] = xp;
         xp += 12;
     }
-
     // Enable & initialize sprites
     *SPRITES_ENABLE = $ff;
     for(byte ss: 0..7) {
@@ -67,13 +65,10 @@ void loop() {
         // Sort the sprites by y-position
         (*BORDERCOL)++;
         plexSort();
-        // Show the first 8 sprites
-        (*BORDERCOL)++;
-        for( byte ss: 0..7) {
-            plexShowSprite();
-        }
-        // Show the rest of the sprites
-        for( ss: 8..PLEX_COUNT-1) {
+        *BORDERCOL = BLACK;
+        while((*D011&$80)!=0) {}
+        // Show the sprites
+        for( byte ss: 0..PLEX_COUNT-1) {
             *BORDERCOL = BLACK;
             byte rasterY = plexShowNextYpos()-8;
             while(*RASTER<rasterY) {}
@@ -199,14 +194,23 @@ inline void vicSelectGfxBank(byte* gfx) {
 
 Importing multiplexer
 PARSING src/test/java/dk/camelot64/kickc/test/kc/multiplexer.kc
-// A flexible sprite multiplexer routine
+// A flexible sprite multiplexer routine for 24 sprites.
+// Usage:
+// - Once:
+// - plexInit(screen): Initialize the data structures and set the screen address
+// Each frame:
+// - Set x-pos, y-pos and pointer in PLEX_XPOS[id], PLEX_YPOS[id], PLEX_PTR[id]
+// - plexSort() Sorts the sprites according to y-positions and prepares for showing them. This uses an insertion sort that is quite fast when the relative order of the sprites does not change very much.
+// - plexShowNextYpos() Returns the Y-position of the next sprite to show.
+// - plexShowSprite() Shows the next sprite by copying values from PLEX_XXX[] to an actual sprite. Actual sprites are used round-robin. This should be called once for each of the 24 virtual sprites.
+//
+// In practice a good method is to wait until the raster is close to plexShowNextYpos() and then call plexShowSprite(). Repeat until all 24 sprites have been shown.
+
+import "c64"
 
 // TODO: Let the caller specify the number of sprites (PLEX_COUNT)
 // TODO: Optimize plexSort() - currently nxt_idx and nxt_y are stored in the outer loop.
 
-import "c64"
-import "sinus"
-
 // The number of sprites in the multiplexer
 const byte PLEX_COUNT = 24;
 
@@ -304,389 +308,6 @@ inline byte plexShowNextYpos() {
     return PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]];
 }
 Importing c64
-Importing sinus
-PARSING src/test/java/dk/camelot64/kickc/test/kc/sinus.kc
-// Sinus Generator functions using only multiplication, addition and bit shifting
-// Uses a single division for converting the wavelength to a reciprocal.
-// Generates sinus using the series sin(x) = x - x^/3! + x^-5! - x^7/7! ...
-// Uses the approximation sin(x) = x - x^/6 + x^/128
-// Optimization possibility: Use symmetries when generating sinustables. wavelength%2==0 -> mirror symmetry over PI, wavelength%4==0 -> mirror symmetry over PI/2.
-
-import "division.kc"
-import "multiply.kc"
-
-// PI*2 in u[4.28] format
-const dword PI2_u4f28 = $6487ed51;
-// PI in u[4.28] format
-const dword PI_u4f28 = $3243f6a9;
-// PI/2 in u[4.28] format
-const dword PI_HALF_u4f28 = $1921FB54;
-
-// PI*2 in u[4.12] format
-const word PI2_u4f12 = $6488;
-// PI in u[4.12] format
-const word PI_u4f12 = $3244;
-// PI/2 in u[4.12] format
-const word PI_HALF_u4f12 = $1922;
-
-// Generate signed (large) word sinus table - on the full -$7fff - $7fff range
-// sintab - the table to generate into
-// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
-void sin16s_gen(signed word* sintab, word wavelength) {
-    // u[4.28] step = PI*2/wavelength
-    dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
-    // Iterate over the table
-    dword x = 0; // u[4.28]
-    for( word i=0; i<wavelength; i++) {
-        *sintab = sin16s(x);
-        sintab = sintab + 2;
-        x = x + step;
-    }
-}
-
-// Generate signed word sinus table - with values in the range min-max.
-// sintab - the table to generate into
-// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
-void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
-    signed word ampl = max-min;
-    signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
-    // u[4.28] step = PI*2/wavelength
-    dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
-    // Iterate over the table
-    dword x = 0; // u[4.28]
-    for( word i=0; i<wavelength; i++) {
-        *sintab = offs + (signed word)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude
-        sintab = sintab + 2;
-        x = x + step;
-    }
-}
-
-// Generate signed byte sinus table - on the full -$7f - $7f range
-// sintab - the table to generate into
-// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
-void sin8s_gen(signed byte* sintab, word wavelength) {
-    // u[4.28] step = PI*2/wavelength
-    word step = div16u(PI2_u4f12, wavelength); // u[4.12]
-    // Iterate over the table
-    word x = 0; // u[4.12]
-    for( word i=0; i<wavelength; i++) {
-        *sintab++ = sin8s(x);
-        x = x + step;
-    }
-}
-
-// Calculate signed word sinus sin(x)
-// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
-// result: signed word sin(x) s[0.15] - using the full range  -$7fff - $7fff
-signed word sin16s(dword x) {
-    // Move x1 into the range 0-PI/2 using sinus mirror symmetries
-    byte isUpper = 0;
-    if(x >= PI_u4f28 ) {
-        x = x - PI_u4f28;
-        isUpper = 1;
-    }
-    if(x >= PI_HALF_u4f28 ) {
-        x = PI_u4f28 - x;
-    }
-    // sinx = x - x^3/6 + x5/128;
-    word x1 = >x<<3; // u[1.15]
-    word x2 = mulu16_sel(x1, x1, 0); // u[2.14] x^2
-    word x3 = mulu16_sel(x2, x1, 1); // u[2.14] x^3
-    word x3_6 = mulu16_sel(x3, $10000/6, 1);  // u[1.15] x^3/6;
-    word usinx = x1 - x3_6; // u[1.15] x - x^3/6
-    word x4 = mulu16_sel(x3, x1, 0); // u[3.13] x^4
-    word x5 = mulu16_sel(x4, x1, 0); // u[4.12] x^5
-    word x5_128 = x5>>4; // // u[1.15] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3);
-    usinx = usinx + x5_128; // u[1.15] (first bit is always zero)
-    signed word sinx = (signed word)usinx; // s[0.15]
-    if(isUpper!=0) {
-        sinx = -(signed word)usinx; // s[0.15];
-     }
-     return sinx;
-}
-
-// Calculate signed byte sinus sin(x)
-// x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12
-// result: signed byte sin(x) s[0.7] - using the full range  -$7f - $7f
-signed byte sin8s(word x) {
-    // Move x1 into the range 0-PI/2 using sinus mirror symmetries
-    byte isUpper = 0;
-    if(x >= PI_u4f12 ) {
-        x = x - PI_u4f12;
-        isUpper = 1;
-    }
-    if(x >= PI_HALF_u4f12 ) {
-        x = PI_u4f12 - x;
-    }
-    // sinx = x - x^3/6 + x5/128;
-    byte x1 = >x<<3; // u[1.7]
-    byte x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2
-    byte x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3
-    const byte DIV_6 = $2b; // u[0.7] - $2a.aa rounded to $2b
-    byte x3_6 = mulu8_sel(x3, DIV_6, 1);  // u[1.7] x^3/6;
-    byte usinx = x1 - x3_6; // u[1.7] x - x^3/6
-    byte x4 = mulu8_sel(x3, x1, 0); // u[3.5] x^4
-    byte x5 = mulu8_sel(x4, x1, 0); // u[4.4] x^5
-    byte x5_128 = x5>>4; // // u[1.7] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3);
-    usinx = usinx + x5_128; // u[1.7] (first bit is always zero)
-    if(usinx>=128) { usinx--; } // rounding may occasionally result in $80 - lower into range ($00-$7f)
-    signed byte sinx = (signed byte)usinx; // s[0.7]
-    if(isUpper!=0) {
-        sinx = -(signed byte)usinx; // s[0.7];
-    }
-    return sinx;
-}
-
-// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
-// The select parameter indicates how many of the highest bits of the 32-bit result to skip
-word mulu16_sel(word v1, word v2, byte select) {
-    return >mul16u(v1, v2)<<select;
-}
-
-// Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result.
-// The select parameter indicates how many of the highest bits of the 16-bit result to skip
-byte mulu8_sel(byte v1, byte v2, byte select) {
-    return >mul8u(v1, v2)<<select;
-}
-
-Importing division.kc
-PARSING src/test/java/dk/camelot64/kickc/test/kc/division.kc
-// Simple binary division implementation
-// Follows the C99 standard by truncating toward zero on negative results.
-// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
-
-// Remainder after signed 8 bit division
-byte rem8u =0;
-
-// Performs division on two 8 bit unsigned bytes
-// Returns dividend/divisor.
-// The remainder will be set into the global variable rem8u
-// Implemented using simple binary division
-byte div8u(byte dividend, byte divisor) {
-    return divr8u(dividend, divisor, 0);
-}
-
-// Performs division on two 8 bit unsigned bytes and an initial remainder
-// Returns dividend/divisor.
-// The final remainder will be set into the global variable rem8u
-// Implemented using simple binary division
-byte divr8u(byte dividend, byte divisor, byte rem) {
-    byte quotient = 0;
-    for( byte i : 0..7) {
-        rem = rem << 1;
-        if( (dividend & $80) != 0 ) {
-            rem = rem | 1;
-        }
-        dividend = dividend << 1;
-        quotient = quotient << 1;
-        if(rem>=divisor) {
-            quotient++;
-            rem = rem - divisor;
-        }
-    }
-    rem8u = rem;
-    return quotient;
-}
-
-// Remainder after unsigned 16-bit division
-word rem16u = 0;
-
-// Performs division on two 16 bit unsigned words and an initial remainder
-// Returns the quotient dividend/divisor.
-// The final remainder will be set into the global variable rem16u
-// Implemented using simple binary division
-word divr16u(word dividend, word divisor, word rem) {
-    word quotient = 0;
-    for( byte i : 0..15) {
-        rem = rem << 1;
-        if( (>dividend & $80) != 0 ) {
-            rem = rem | 1;
-        }
-        dividend = dividend << 1;
-        quotient = quotient << 1;
-        if(rem>=divisor) {
-            quotient++;
-            rem = rem - divisor;
-        }
-    }
-    rem16u = rem;
-    return quotient;
-}
-
-// Performs division on two 16 bit unsigned words
-// Returns the quotient dividend/divisor.
-// The remainder will be set into the global variable rem16u
-// Implemented using simple binary division
-word div16u(word dividend, word divisor) {
-    return divr16u(dividend, divisor, 0);
-}
-
-// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
-// The 16-bit word remainder can be found in rem16u after the division
-dword div32u16u(dword dividend, word divisor) {
-  word quotient_hi = divr16u(>dividend, divisor, 0);
-  word quotient_lo = divr16u(<dividend, divisor, rem16u);
-  dword quotient = { quotient_hi, quotient_lo};
-  return quotient;
-}
-
-// Remainder after signed 8 bit division
-signed byte rem8s = 0;
-
-// Perform division on two signed 8-bit numbers
-// Returns dividend/divisor.
-// The remainder will be set into the global variable rem8s.
-// Implemented using simple binary division
-// Follows the C99 standard by truncating toward zero on negative results.
-// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
-signed byte div8s(signed byte dividend, signed byte divisor) {
-    byte neg = 0;
-    byte dividendu = 0;
-    if(dividend<0) {
-      dividendu = (byte)-dividend;
-      neg = 1;
-    } else {
-      dividendu = (byte)dividend;
-    }
-    byte divisoru = 0;
-    if(divisor<0) {
-        divisoru = (byte)-divisor;
-        neg = neg ^ 1;
-    } else {
-        divisoru = (byte)divisor;
-    }
-    byte resultu = div8u(dividendu, divisoru);
-    if(neg==0) {
-        rem8s = (signed byte)rem8u;
-        return (signed byte)resultu;
-    } else {
-        rem8s = -(signed byte)rem8u;
-        return -(signed byte)resultu;
-    }
-}
-
-// Remainder after signed 16 bit division
-signed word rem16s = 0;
-
-// Perform division on two signed 16-bit numbers with an initial remainder.
-// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
-// Implemented using simple binary division
-// Follows the C99 standard by truncating toward zero on negative results.
-// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
-signed word divr16s(signed word dividend, signed word divisor, signed word rem) {
-    byte neg = 0;
-    word dividendu = 0;
-    word remu = 0;
-    if(dividend<0 || rem<0) {
-      dividendu = (word)-dividend;
-      remu = (word)-rem;
-      neg = 1;
-    } else {
-      dividendu = (word)dividend;
-      remu = (word)rem;
-    }
-    word divisoru = 0;
-    if(divisor<0) {
-        divisoru = (word)-divisor;
-        neg = neg ^ 1;
-    } else {
-        divisoru = (word)divisor;
-    }
-    word resultu = divr16u(dividendu, divisoru, remu);
-    if(neg==0) {
-        rem16s = (signed word)rem16u;
-        return (signed word)resultu;
-    } else {
-        rem16s = -(signed word)rem16u;
-        return -(signed word)resultu;
-    }
-}
-
-// Perform division on two signed 16-bit numbers
-// Returns dividend/divisor.
-// The remainder will be set into the global variable rem16s.
-// Implemented using simple binary division
-// Follows the C99 standard by truncating toward zero on negative results.
-// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
-signed word div16s(signed word dividend, signed word divisor) {
-    return divr16s(dividend, divisor, 0);
-}
-
-Adding pre/post-modifier (byte) divr8u::quotient ← ++ (byte) divr8u::quotient
-Adding pre/post-modifier (word) divr16u::quotient ← ++ (word) divr16u::quotient
-Importing multiply.kc
-PARSING src/test/java/dk/camelot64/kickc/test/kc/multiply.kc
-// Simple binary multiplication implementation
-
-// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
-word mul8u(byte a, byte b) {
-    word res = 0;
-    word mb = b;
-    while(a!=0) {
-        if( (a&1) != 0) {
-            res = res + mb;
-        }
-        a = a>>1;
-        mb = mb<<1;
-    }
-    return res;
-}
-
-// Multiply of two signed bytes to a signed word
-// Fixes offsets introduced by using unsigned multiplication
-signed word mul8s(signed byte a, signed byte b) {
-    word m = mul8u((byte)a, (byte) b);
-    if(a<0) {
-        >m = (>m)-(byte)b;
-    }
-    if(b<0) {
-        >m = (>m)-(byte)a;
-    }
-    return (signed word)m;
-}
-
-// Multiply a signed byte and an unsigned byte (into a signed word)
-// Fixes offsets introduced by using unsigned multiplication
-signed word mul8su(signed byte a, byte b) {
-    word m = mul8u((byte)a, (byte) b);
-    if(a<0) {
-        >m = (>m)-(byte)b;
-    }
-    return (signed word)m;
-}
-
-// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
-dword mul16u(word a, word b) {
-    dword res = 0;
-    dword mb = b;
-    while(a!=0) {
-        if( (a&1) != 0) {
-            res = res + mb;
-        }
-        a = a>>1;
-        mb = mb<<1;
-    }
-    return res;
-}
-
-// Multiply of two signed words to a signed double word
-// Fixes offsets introduced by using unsigned multiplication
-signed dword mul16s(signed word a, signed word b) {
-    dword m = mul16u((word)a, (word) b);
-    if(a<0) {
-        >m = (>m)-(word)b;
-    }
-    if(b<0) {
-        >m = (>m)-(word)a;
-    }
-    return (signed dword)m;
-}
-
-Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
-Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
-Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
-Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
-Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
 Adding pre/post-modifier (byte) plexSort::s ← -- (byte) plexSort::s
 Adding pre/post-modifier (byte) plexSort::s ← ++ (byte) plexSort::s
 Adding pre/post-modifier (byte) plex_show_idx ← ++ (byte) plex_show_idx
@@ -694,34 +315,13 @@ Added resource src/test/java/dk/camelot64/kickc/test/kc/balloon.png
 Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
 Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
 Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
-Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
 SYMBOLS
 (word/signed word/dword/signed dword~) $0
 (label) @1
 (label) @10
 (label) @11
-(label) @12
-(label) @13
-(label) @14
-(label) @15
-(label) @16
-(label) @17
-(label) @18
-(label) @19
 (label) @2
-(label) @20
-(label) @21
-(label) @22
-(label) @23
-(label) @24
-(label) @25
-(label) @26
-(label) @27
-(label) @28
-(label) @29
 (label) @3
-(label) @30
-(label) @31
 (label) @4
 (label) @5
 (label) @6
@@ -760,13 +360,7 @@ SYMBOLS
 (byte) LIGHT_GREEN
 (byte) LIGHT_GREY
 (byte) ORANGE
-(word) PI2_u4f12
-(dword) PI2_u4f28
 (byte) PINK
-(word) PI_HALF_u4f12
-(dword) PI_HALF_u4f28
-(word) PI_u4f12
-(dword) PI_u4f28
 (byte) PLEX_COUNT
 (byte[PLEX_COUNT]) PLEX_PTR
 (byte*) PLEX_SCREEN_PTR
@@ -810,180 +404,6 @@ SYMBOLS
 (byte) WHITE
 (byte) YELLOW
 (byte*) YSIN
-(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
-(signed word~) div16s::$0
-(label) div16s::@1
-(label) div16s::@return
-(signed word) div16s::dividend
-(signed word) div16s::divisor
-(signed word) div16s::return
-(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
-(word~) div16u::$0
-(label) div16u::@1
-(label) div16u::@return
-(word) div16u::dividend
-(word) div16u::divisor
-(word) div16u::return
-(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
-(word~) div32u16u::$0
-(word~) div32u16u::$1
-(word~) div32u16u::$2
-(word~) div32u16u::$3
-(label) div32u16u::@1
-(label) div32u16u::@return
-(dword) div32u16u::dividend
-(word) div32u16u::divisor
-(dword) div32u16u::quotient
-(word) div32u16u::quotient_hi
-(word) div32u16u::quotient_lo
-(dword) div32u16u::return
-(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor)
-(bool~) div8s::$0
-(byte~) div8s::$1
-(bool~) div8s::$10
-(signed byte~) div8s::$11
-(signed byte~) div8s::$12
-(signed byte~) div8s::$13
-(signed byte~) div8s::$14
-(signed byte~) div8s::$15
-(signed byte~) div8s::$16
-(signed byte~) div8s::$2
-(byte~) div8s::$3
-(bool~) div8s::$4
-(byte~) div8s::$5
-(signed byte~) div8s::$6
-(byte~) div8s::$7
-(byte/word/dword~) div8s::$8
-(byte~) div8s::$9
-(label) div8s::@1
-(label) div8s::@10
-(label) div8s::@11
-(label) div8s::@12
-(label) div8s::@13
-(label) div8s::@14
-(label) div8s::@2
-(label) div8s::@3
-(label) div8s::@4
-(label) div8s::@5
-(label) div8s::@6
-(label) div8s::@7
-(label) div8s::@8
-(label) div8s::@9
-(label) div8s::@return
-(signed byte) div8s::dividend
-(byte) div8s::dividendu
-(signed byte) div8s::divisor
-(byte) div8s::divisoru
-(byte) div8s::neg
-(byte) div8s::resultu
-(signed byte) div8s::return
-(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor)
-(byte~) div8u::$0
-(label) div8u::@1
-(label) div8u::@return
-(byte) div8u::dividend
-(byte) div8u::divisor
-(byte) div8u::return
-(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
-(bool~) divr16s::$0
-(bool~) divr16s::$1
-(word~) divr16s::$10
-(signed word~) divr16s::$11
-(word~) divr16s::$12
-(byte/word/dword~) divr16s::$13
-(word~) divr16s::$14
-(bool~) divr16s::$15
-(signed word~) divr16s::$16
-(signed word~) divr16s::$17
-(signed word~) divr16s::$18
-(signed word~) divr16s::$19
-(bool~) divr16s::$2
-(signed word~) divr16s::$20
-(signed word~) divr16s::$21
-(word~) divr16s::$3
-(word~) divr16s::$4
-(signed word~) divr16s::$5
-(word~) divr16s::$6
-(signed word~) divr16s::$7
-(word~) divr16s::$8
-(bool~) divr16s::$9
-(label) divr16s::@1
-(label) divr16s::@10
-(label) divr16s::@11
-(label) divr16s::@12
-(label) divr16s::@13
-(label) divr16s::@14
-(label) divr16s::@2
-(label) divr16s::@3
-(label) divr16s::@4
-(label) divr16s::@5
-(label) divr16s::@6
-(label) divr16s::@7
-(label) divr16s::@8
-(label) divr16s::@9
-(label) divr16s::@return
-(signed word) divr16s::dividend
-(word) divr16s::dividendu
-(signed word) divr16s::divisor
-(word) divr16s::divisoru
-(byte) divr16s::neg
-(signed word) divr16s::rem
-(word) divr16s::remu
-(word) divr16s::resultu
-(signed word) divr16s::return
-(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
-(word~) divr16u::$0
-(byte~) divr16u::$1
-(word~) divr16u::$10
-(bool~) divr16u::$11
-(byte~) divr16u::$2
-(bool~) divr16u::$3
-(bool~) divr16u::$4
-(word/dword~) divr16u::$5
-(word~) divr16u::$6
-(word~) divr16u::$7
-(bool~) divr16u::$8
-(bool~) divr16u::$9
-(label) divr16u::@1
-(label) divr16u::@2
-(label) divr16u::@3
-(label) divr16u::@4
-(label) divr16u::@5
-(label) divr16u::@6
-(label) divr16u::@7
-(label) divr16u::@return
-(word) divr16u::dividend
-(word) divr16u::divisor
-(byte) divr16u::i
-(word) divr16u::quotient
-(word) divr16u::rem
-(word) divr16u::return
-(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem)
-(byte~) divr8u::$0
-(byte~) divr8u::$1
-(bool~) divr8u::$10
-(bool~) divr8u::$2
-(bool~) divr8u::$3
-(byte/word/dword~) divr8u::$4
-(byte~) divr8u::$5
-(byte~) divr8u::$6
-(bool~) divr8u::$7
-(bool~) divr8u::$8
-(byte~) divr8u::$9
-(label) divr8u::@1
-(label) divr8u::@2
-(label) divr8u::@3
-(label) divr8u::@4
-(label) divr8u::@5
-(label) divr8u::@6
-(label) divr8u::@7
-(label) divr8u::@return
-(byte) divr8u::dividend
-(byte) divr8u::divisor
-(byte) divr8u::i
-(byte) divr8u::quotient
-(byte) divr8u::rem
-(byte) divr8u::return
 (void()) init()
 (byte~) init::$0
 (byte/word/dword~) init::$1
@@ -1009,7 +429,7 @@ SYMBOLS
 (bool~) loop::$11
 (bool~) loop::$2
 (void~) loop::$3
-(void~) loop::$4
+(byte~) loop::$4
 (bool~) loop::$5
 (byte/signed word/word/dword/signed dword~) loop::$6
 (byte~) loop::$7
@@ -1032,6 +452,10 @@ SYMBOLS
 (label) loop::@22
 (label) loop::@23
 (label) loop::@24
+(label) loop::@25
+(label) loop::@26
+(label) loop::@27
+(label) loop::@28
 (label) loop::@3
 (label) loop::@4
 (label) loop::@5
@@ -1049,145 +473,6 @@ SYMBOLS
 (void~) main::$0
 (void~) main::$1
 (label) main::@return
-(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
-(word~) mul16s::$0
-(word~) mul16s::$1
-(bool~) mul16s::$10
-(word~) mul16s::$11
-(word~) mul16s::$12
-(word~) mul16s::$13
-(word~) mul16s::$14
-(signed dword~) mul16s::$15
-(dword~) mul16s::$2
-(bool~) mul16s::$3
-(bool~) mul16s::$4
-(word~) mul16s::$5
-(word~) mul16s::$6
-(word~) mul16s::$7
-(word~) mul16s::$8
-(bool~) mul16s::$9
-(label) mul16s::@1
-(label) mul16s::@2
-(label) mul16s::@3
-(label) mul16s::@4
-(label) mul16s::@5
-(label) mul16s::@return
-(signed word) mul16s::a
-(signed word) mul16s::b
-(dword) mul16s::m
-(signed dword) mul16s::return
-(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
-(bool~) mul16u::$0
-(byte/word~) mul16u::$1
-(bool~) mul16u::$2
-(bool~) mul16u::$3
-(dword~) mul16u::$4
-(word~) mul16u::$5
-(dword~) mul16u::$6
-(label) mul16u::@1
-(label) mul16u::@2
-(label) mul16u::@3
-(label) mul16u::@4
-(label) mul16u::@5
-(label) mul16u::@6
-(label) mul16u::@7
-(label) mul16u::@8
-(label) mul16u::@9
-(label) mul16u::@return
-(word) mul16u::a
-(word) mul16u::b
-(dword) mul16u::mb
-(dword) mul16u::res
-(dword) mul16u::return
-(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
-(byte~) mul8s::$0
-(byte~) mul8s::$1
-(bool~) mul8s::$10
-(byte~) mul8s::$11
-(byte~) mul8s::$12
-(byte~) mul8s::$13
-(byte~) mul8s::$14
-(signed word~) mul8s::$15
-(word~) mul8s::$2
-(bool~) mul8s::$3
-(bool~) mul8s::$4
-(byte~) mul8s::$5
-(byte~) mul8s::$6
-(byte~) mul8s::$7
-(byte~) mul8s::$8
-(bool~) mul8s::$9
-(label) mul8s::@1
-(label) mul8s::@2
-(label) mul8s::@3
-(label) mul8s::@4
-(label) mul8s::@5
-(label) mul8s::@return
-(signed byte) mul8s::a
-(signed byte) mul8s::b
-(word) mul8s::m
-(signed word) mul8s::return
-(signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b)
-(byte~) mul8su::$0
-(byte~) mul8su::$1
-(word~) mul8su::$2
-(bool~) mul8su::$3
-(bool~) mul8su::$4
-(byte~) mul8su::$5
-(byte~) mul8su::$6
-(byte~) mul8su::$7
-(byte~) mul8su::$8
-(signed word~) mul8su::$9
-(label) mul8su::@1
-(label) mul8su::@2
-(label) mul8su::@3
-(label) mul8su::@return
-(signed byte) mul8su::a
-(byte) mul8su::b
-(word) mul8su::m
-(signed word) mul8su::return
-(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
-(bool~) mul8u::$0
-(byte~) mul8u::$1
-(bool~) mul8u::$2
-(bool~) mul8u::$3
-(word~) mul8u::$4
-(byte~) mul8u::$5
-(word~) mul8u::$6
-(label) mul8u::@1
-(label) mul8u::@2
-(label) mul8u::@3
-(label) mul8u::@4
-(label) mul8u::@5
-(label) mul8u::@6
-(label) mul8u::@7
-(label) mul8u::@8
-(label) mul8u::@9
-(label) mul8u::@return
-(byte) mul8u::a
-(byte) mul8u::b
-(word) mul8u::mb
-(word) mul8u::res
-(word) mul8u::return
-(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
-(dword~) mulu16_sel::$0
-(dword~) mulu16_sel::$1
-(word~) mulu16_sel::$2
-(label) mulu16_sel::@1
-(label) mulu16_sel::@return
-(word) mulu16_sel::return
-(byte) mulu16_sel::select
-(word) mulu16_sel::v1
-(word) mulu16_sel::v2
-(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select)
-(word~) mulu8_sel::$0
-(word~) mulu8_sel::$1
-(byte~) mulu8_sel::$2
-(label) mulu8_sel::@1
-(label) mulu8_sel::@return
-(byte) mulu8_sel::return
-(byte) mulu8_sel::select
-(byte) mulu8_sel::v1
-(byte) mulu8_sel::v2
 (void()) plexInit((byte*) plexInit::screen)
 (void~) plexInit::$0
 (byte/signed word/word/dword/signed dword~) plexInit::$1
@@ -1249,152 +534,6 @@ inline (byte()) plexShowNextYpos()
 (byte) plex_show_idx
 (byte) plex_sprite_idx
 (byte) plex_sprite_msb
-(signed word) rem16s
-(word) rem16u
-(signed byte) rem8s
-(byte) rem8u
-(signed word()) sin16s((dword) sin16s::x)
-(bool~) sin16s::$0
-(bool~) sin16s::$1
-(word/signed word/dword/signed dword~) sin16s::$10
-(word~) sin16s::$11
-(word~) sin16s::$12
-(word~) sin16s::$13
-(word~) sin16s::$14
-(word~) sin16s::$15
-(word~) sin16s::$16
-(signed word~) sin16s::$17
-(bool~) sin16s::$18
-(bool~) sin16s::$19
-(dword~) sin16s::$2
-(signed word~) sin16s::$20
-(signed word~) sin16s::$21
-(bool~) sin16s::$3
-(bool~) sin16s::$4
-(dword~) sin16s::$5
-(dword~) sin16s::$6
-(word~) sin16s::$7
-(word~) sin16s::$8
-(word~) sin16s::$9
-(label) sin16s::@1
-(label) sin16s::@2
-(label) sin16s::@3
-(label) sin16s::@4
-(label) sin16s::@5
-(label) sin16s::@6
-(label) sin16s::@7
-(label) sin16s::@return
-(byte) sin16s::isUpper
-(signed word) sin16s::return
-(signed word) sin16s::sinx
-(word) sin16s::usinx
-(dword) sin16s::x
-(word) sin16s::x1
-(word) sin16s::x2
-(word) sin16s::x3
-(word) sin16s::x3_6
-(word) sin16s::x4
-(word) sin16s::x5
-(word) sin16s::x5_128
-(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
-(dword~) sin16s_gen::$0
-(signed word~) sin16s_gen::$1
-(signed word*~) sin16s_gen::$2
-(dword~) sin16s_gen::$3
-(bool~) sin16s_gen::$4
-(label) sin16s_gen::@1
-(label) sin16s_gen::@2
-(label) sin16s_gen::@return
-(word) sin16s_gen::i
-(signed word*) sin16s_gen::sintab
-(dword) sin16s_gen::step
-(word) sin16s_gen::wavelength
-(dword) sin16s_gen::x
-(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
-(signed word~) sin16s_gen2::$0
-(signed word~) sin16s_gen2::$1
-(dword~) sin16s_gen2::$10
-(bool~) sin16s_gen2::$11
-(signed word~) sin16s_gen2::$2
-(dword~) sin16s_gen2::$3
-(signed word~) sin16s_gen2::$4
-(signed dword~) sin16s_gen2::$5
-(word~) sin16s_gen2::$6
-(signed word~) sin16s_gen2::$7
-(signed word~) sin16s_gen2::$8
-(signed word*~) sin16s_gen2::$9
-(label) sin16s_gen2::@1
-(label) sin16s_gen2::@2
-(label) sin16s_gen2::@return
-(signed word) sin16s_gen2::ampl
-(word) sin16s_gen2::i
-(signed word) sin16s_gen2::max
-(signed word) sin16s_gen2::min
-(signed word) sin16s_gen2::offs
-(signed word*) sin16s_gen2::sintab
-(dword) sin16s_gen2::step
-(word) sin16s_gen2::wavelength
-(dword) sin16s_gen2::x
-(signed byte()) sin8s((word) sin8s::x)
-(bool~) sin8s::$0
-(bool~) sin8s::$1
-(byte~) sin8s::$10
-(byte~) sin8s::$11
-(byte~) sin8s::$12
-(byte~) sin8s::$13
-(byte~) sin8s::$14
-(byte~) sin8s::$15
-(bool~) sin8s::$16
-(bool~) sin8s::$17
-(signed byte~) sin8s::$18
-(bool~) sin8s::$19
-(word~) sin8s::$2
-(bool~) sin8s::$20
-(signed byte~) sin8s::$21
-(signed byte~) sin8s::$22
-(bool~) sin8s::$3
-(bool~) sin8s::$4
-(word~) sin8s::$5
-(word~) sin8s::$6
-(byte~) sin8s::$7
-(byte~) sin8s::$8
-(byte~) sin8s::$9
-(label) sin8s::@1
-(label) sin8s::@2
-(label) sin8s::@3
-(label) sin8s::@4
-(label) sin8s::@5
-(label) sin8s::@6
-(label) sin8s::@7
-(label) sin8s::@8
-(label) sin8s::@9
-(label) sin8s::@return
-(byte) sin8s::DIV_6
-(byte) sin8s::isUpper
-(signed byte) sin8s::return
-(signed byte) sin8s::sinx
-(byte) sin8s::usinx
-(word) sin8s::x
-(byte) sin8s::x1
-(byte) sin8s::x2
-(byte) sin8s::x3
-(byte) sin8s::x3_6
-(byte) sin8s::x4
-(byte) sin8s::x5
-(byte) sin8s::x5_128
-(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength)
-(word~) sin8s_gen::$0
-(signed byte~) sin8s_gen::$1
-(word~) sin8s_gen::$2
-(bool~) sin8s_gen::$3
-(label) sin8s_gen::@1
-(label) sin8s_gen::@2
-(label) sin8s_gen::@return
-(word) sin8s_gen::i
-(signed byte*) sin8s_gen::sintab
-(word) sin8s_gen::step
-(word) sin8s_gen::wavelength
-(word) sin8s_gen::x
 inline (byte()) toD018((byte*) toD018::screen , (byte*) toD018::gfx)
 (word~) toD018::$0
 (word~) toD018::$1
@@ -1424,11 +563,6 @@ inline (void()) vicSelectGfxBank((byte*) vicSelectGfxBank::gfx)
 (label) vicSelectGfxBank::@return
 (byte*) vicSelectGfxBank::gfx
 
-Fixing lo/hi-lvalue with new tmpVar mul8s::$16 mul8s::$16 ← mul8s::$8
-Fixing lo/hi-lvalue with new tmpVar mul8s::$17 mul8s::$17 ← mul8s::$14
-Fixing lo/hi-lvalue with new tmpVar mul8su::$10 mul8su::$10 ← mul8su::$8
-Fixing lo/hi-lvalue with new tmpVar mul16s::$16 mul16s::$16 ← mul16s::$8
-Fixing lo/hi-lvalue with new tmpVar mul16s::$17 mul16s::$17 ← mul16s::$14
 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT_DDR ← ((byte*)) 0
 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in PROCPORT ← ((byte*)) 1
 Promoting word/dword/signed dword to byte* in CHARGEN ← ((byte*)) 53248
@@ -1465,8 +599,6 @@ Promoting word/dword/signed dword to byte* in CIA2_PORT_A ← ((byte*)) 56576
 Promoting word/dword/signed dword to byte* in CIA2_PORT_B ← ((byte*)) 56577
 Promoting word/dword/signed dword to byte* in CIA2_PORT_A_DDR ← ((byte*)) 56578
 Promoting word/dword/signed dword to byte* in CIA2_PORT_B_DDR ← ((byte*)) 56579
-Promoting byte to word in mul8u::mb ← ((word)) mul8u::b
-Promoting word to dword in mul16u::mb ← ((dword)) mul16u::b
 Promoting word/signed word/dword/signed dword to byte* in PLEX_SCREEN_PTR ← ((byte*)) $0
 Promoting word/signed word/dword/signed dword to byte* in SPRITE ← ((byte*)) 8192
 Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024
@@ -1583,750 +715,6 @@ vicSelectGfxBank::@return: scope:[vicSelectGfxBank]  from vicSelectGfxBank
   return 
   to:@return
 @3: scope:[]  from @2
-  (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:@4
-div8u: scope:[div8u]  from
-  (byte~) div8u::$0 ← call divr8u (byte) div8u::dividend (byte) div8u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (byte) div8u::return ← (byte~) div8u::$0
-  to:div8u::@return
-div8u::@return: scope:[div8u]  from div8u div8u::@1
-  (byte) div8u::return ← (byte) div8u::return
-  return (byte) div8u::return
-  to:@return
-div8u::@1: scope:[div8u]  from
-  to:div8u::@return
-@4: scope:[]  from @3
-  to:@5
-divr8u: scope:[divr8u]  from
-  (byte) divr8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (byte) divr8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:divr8u::@1
-divr8u::@1: scope:[divr8u]  from divr8u divr8u::@3
-  (byte~) divr8u::$0 ← (byte) divr8u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) divr8u::rem ← (byte~) divr8u::$0
-  (byte~) divr8u::$1 ← (byte) divr8u::dividend & (byte/word/signed word/dword/signed dword) 128
-  (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr8u::$3 ← ! (bool~) divr8u::$2
-  if((bool~) divr8u::$3) goto divr8u::@2
-  to:divr8u::@4
-divr8u::@2: scope:[divr8u]  from divr8u::@1 divr8u::@4
-  (byte~) divr8u::$5 ← (byte) divr8u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) divr8u::dividend ← (byte~) divr8u::$5
-  (byte~) divr8u::$6 ← (byte) divr8u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) divr8u::quotient ← (byte~) divr8u::$6
-  (bool~) divr8u::$7 ← (byte) divr8u::rem >= (byte) divr8u::divisor
-  (bool~) divr8u::$8 ← ! (bool~) divr8u::$7
-  if((bool~) divr8u::$8) goto divr8u::@3
-  to:divr8u::@5
-divr8u::@4: scope:[divr8u]  from divr8u::@1
-  (byte/word/dword~) divr8u::$4 ← (byte) divr8u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) divr8u::rem ← (byte/word/dword~) divr8u::$4
-  to:divr8u::@2
-divr8u::@3: scope:[divr8u]  from divr8u::@2 divr8u::@5
-  (byte) divr8u::i ← (byte) divr8u::i + rangenext(0,7)
-  (bool~) divr8u::$10 ← (byte) divr8u::i != rangelast(0,7)
-  if((bool~) divr8u::$10) goto divr8u::@1
-  to:divr8u::@6
-divr8u::@5: scope:[divr8u]  from divr8u::@2
-  (byte) divr8u::quotient ← ++ (byte) divr8u::quotient
-  (byte~) divr8u::$9 ← (byte) divr8u::rem - (byte) divr8u::divisor
-  (byte) divr8u::rem ← (byte~) divr8u::$9
-  to:divr8u::@3
-divr8u::@6: scope:[divr8u]  from divr8u::@3
-  (byte) rem8u ← (byte) divr8u::rem
-  (byte) divr8u::return ← (byte) divr8u::quotient
-  to:divr8u::@return
-divr8u::@return: scope:[divr8u]  from divr8u::@6 divr8u::@7
-  (byte) divr8u::return ← (byte) divr8u::return
-  return (byte) divr8u::return
-  to:@return
-divr8u::@7: scope:[divr8u]  from
-  to:divr8u::@return
-@5: scope:[]  from @4
-  (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:@6
-divr16u: scope:[divr16u]  from
-  (word) divr16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (byte) divr16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:divr16u::@1
-divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
-  (word~) divr16u::$0 ← (word) divr16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) divr16u::rem ← (word~) divr16u::$0
-  (byte~) divr16u::$1 ← > (word) divr16u::dividend
-  (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
-  (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr16u::$4 ← ! (bool~) divr16u::$3
-  if((bool~) divr16u::$4) goto divr16u::@2
-  to:divr16u::@4
-divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
-  (word~) divr16u::$6 ← (word) divr16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) divr16u::dividend ← (word~) divr16u::$6
-  (word~) divr16u::$7 ← (word) divr16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) divr16u::quotient ← (word~) divr16u::$7
-  (bool~) divr16u::$8 ← (word) divr16u::rem >= (word) divr16u::divisor
-  (bool~) divr16u::$9 ← ! (bool~) divr16u::$8
-  if((bool~) divr16u::$9) goto divr16u::@3
-  to:divr16u::@5
-divr16u::@4: scope:[divr16u]  from divr16u::@1
-  (word/dword~) divr16u::$5 ← (word) divr16u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) divr16u::rem ← (word/dword~) divr16u::$5
-  to:divr16u::@2
-divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
-  (byte) divr16u::i ← (byte) divr16u::i + rangenext(0,15)
-  (bool~) divr16u::$11 ← (byte) divr16u::i != rangelast(0,15)
-  if((bool~) divr16u::$11) goto divr16u::@1
-  to:divr16u::@6
-divr16u::@5: scope:[divr16u]  from divr16u::@2
-  (word) divr16u::quotient ← ++ (word) divr16u::quotient
-  (word~) divr16u::$10 ← (word) divr16u::rem - (word) divr16u::divisor
-  (word) divr16u::rem ← (word~) divr16u::$10
-  to:divr16u::@3
-divr16u::@6: scope:[divr16u]  from divr16u::@3
-  (word) rem16u ← (word) divr16u::rem
-  (word) divr16u::return ← (word) divr16u::quotient
-  to:divr16u::@return
-divr16u::@return: scope:[divr16u]  from divr16u::@6 divr16u::@7
-  (word) divr16u::return ← (word) divr16u::return
-  return (word) divr16u::return
-  to:@return
-divr16u::@7: scope:[divr16u]  from
-  to:divr16u::@return
-@6: scope:[]  from @5
-  to:@7
-div16u: scope:[div16u]  from
-  (word~) div16u::$0 ← call divr16u (word) div16u::dividend (word) div16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (word) div16u::return ← (word~) div16u::$0
-  to:div16u::@return
-div16u::@return: scope:[div16u]  from div16u div16u::@1
-  (word) div16u::return ← (word) div16u::return
-  return (word) div16u::return
-  to:@return
-div16u::@1: scope:[div16u]  from
-  to:div16u::@return
-@7: scope:[]  from @6
-  to:@8
-div32u16u: scope:[div32u16u]  from
-  (word~) div32u16u::$0 ← > (dword) div32u16u::dividend
-  (word~) div32u16u::$1 ← call divr16u (word~) div32u16u::$0 (word) div32u16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (word) div32u16u::quotient_hi ← (word~) div32u16u::$1
-  (word~) div32u16u::$2 ← < (dword) div32u16u::dividend
-  (word~) div32u16u::$3 ← call divr16u (word~) div32u16u::$2 (word) div32u16u::divisor (word) rem16u 
-  (word) div32u16u::quotient_lo ← (word~) div32u16u::$3
-  (dword) div32u16u::quotient ← { (word) div32u16u::quotient_hi, (word) div32u16u::quotient_lo }
-  (dword) div32u16u::return ← (dword) div32u16u::quotient
-  to:div32u16u::@return
-div32u16u::@return: scope:[div32u16u]  from div32u16u div32u16u::@1
-  (dword) div32u16u::return ← (dword) div32u16u::return
-  return (dword) div32u16u::return
-  to:@return
-div32u16u::@1: scope:[div32u16u]  from
-  to:div32u16u::@return
-@8: scope:[]  from @7
-  (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:@9
-div8s: scope:[div8s]  from
-  (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (byte) div8s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) div8s::$0 ← (signed byte) div8s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) div8s::$0) goto div8s::@1
-  to:div8s::@7
-div8s::@1: scope:[div8s]  from div8s div8s::@8
-  (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend
-  (byte~) div8s::$3 ← ((byte)) (signed byte~) div8s::$2
-  (byte) div8s::dividendu ← (byte~) div8s::$3
-  (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:div8s::@2
-div8s::@7: scope:[div8s]  from div8s
-  (byte~) div8s::$1 ← ((byte)) (signed byte) div8s::dividend
-  (byte) div8s::dividendu ← (byte~) div8s::$1
-  to:div8s::@2
-div8s::@2: scope:[div8s]  from div8s::@1 div8s::@7
-  (byte) div8s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) div8s::$4 ← (signed byte) div8s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) div8s::$4) goto div8s::@3
-  to:div8s::@9
-div8s::@8: scope:[div8s]  from
-  to:div8s::@1
-div8s::@3: scope:[div8s]  from div8s::@10 div8s::@2
-  (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor
-  (byte~) div8s::$7 ← ((byte)) (signed byte~) div8s::$6
-  (byte) div8s::divisoru ← (byte~) div8s::$7
-  (byte/word/dword~) div8s::$8 ← (byte) div8s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) div8s::neg ← (byte/word/dword~) div8s::$8
-  to:div8s::@4
-div8s::@9: scope:[div8s]  from div8s::@2
-  (byte~) div8s::$5 ← ((byte)) (signed byte) div8s::divisor
-  (byte) div8s::divisoru ← (byte~) div8s::$5
-  to:div8s::@4
-div8s::@4: scope:[div8s]  from div8s::@3 div8s::@9
-  (byte~) div8s::$9 ← call div8u (byte) div8s::dividendu (byte) div8s::divisoru 
-  (byte) div8s::resultu ← (byte~) div8s::$9
-  (bool~) div8s::$10 ← (byte) div8s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) div8s::$10) goto div8s::@5
-  to:div8s::@11
-div8s::@10: scope:[div8s]  from
-  to:div8s::@3
-div8s::@5: scope:[div8s]  from div8s::@13 div8s::@4
-  (signed byte~) div8s::$15 ← ((signed byte)) (byte) rem8u
-  (signed byte) rem8s ← (signed byte~) div8s::$15
-  (signed byte~) div8s::$16 ← ((signed byte)) (byte) div8s::resultu
-  (signed byte) div8s::return ← (signed byte~) div8s::$16
-  to:div8s::@return
-div8s::@11: scope:[div8s]  from div8s::@4
-  (signed byte~) div8s::$11 ← ((signed byte)) (byte) rem8u
-  (signed byte~) div8s::$12 ← - (signed byte~) div8s::$11
-  (signed byte) rem8s ← (signed byte~) div8s::$12
-  (signed byte~) div8s::$13 ← ((signed byte)) (byte) div8s::resultu
-  (signed byte~) div8s::$14 ← - (signed byte~) div8s::$13
-  (signed byte) div8s::return ← (signed byte~) div8s::$14
-  to:div8s::@return
-div8s::@return: scope:[div8s]  from div8s::@11 div8s::@5 div8s::@6
-  (signed byte) div8s::return ← (signed byte) div8s::return
-  return (signed byte) div8s::return
-  to:@return
-div8s::@12: scope:[div8s]  from
-  to:div8s::@6
-div8s::@6: scope:[div8s]  from div8s::@12 div8s::@14
-  to:div8s::@return
-div8s::@13: scope:[div8s]  from
-  to:div8s::@5
-div8s::@14: scope:[div8s]  from
-  to:div8s::@6
-@9: scope:[]  from @8
-  (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:@10
-divr16s: scope:[divr16s]  from
-  (byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) divr16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) divr16s::remu ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr16s::$0 ← (signed word) divr16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr16s::$1 ← (signed word) divr16s::rem < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
-  if((bool~) divr16s::$2) goto divr16s::@1
-  to:divr16s::@7
-divr16s::@1: scope:[divr16s]  from divr16s divr16s::@8
-  (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend
-  (word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
-  (word) divr16s::dividendu ← (word~) divr16s::$6
-  (signed word~) divr16s::$7 ← - (signed word) divr16s::rem
-  (word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
-  (word) divr16s::remu ← (word~) divr16s::$8
-  (byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:divr16s::@2
-divr16s::@7: scope:[divr16s]  from divr16s
-  (word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend
-  (word) divr16s::dividendu ← (word~) divr16s::$3
-  (word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem
-  (word) divr16s::remu ← (word~) divr16s::$4
-  to:divr16s::@2
-divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@7
-  (word) divr16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) divr16s::$9 ← (signed word) divr16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) divr16s::$9) goto divr16s::@3
-  to:divr16s::@9
-divr16s::@8: scope:[divr16s]  from
-  to:divr16s::@1
-divr16s::@3: scope:[divr16s]  from divr16s::@10 divr16s::@2
-  (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor
-  (word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
-  (word) divr16s::divisoru ← (word~) divr16s::$12
-  (byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) divr16s::neg ← (byte/word/dword~) divr16s::$13
-  to:divr16s::@4
-divr16s::@9: scope:[divr16s]  from divr16s::@2
-  (word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor
-  (word) divr16s::divisoru ← (word~) divr16s::$10
-  to:divr16s::@4
-divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@9
-  (word~) divr16s::$14 ← call divr16u (word) divr16s::dividendu (word) divr16s::divisoru (word) divr16s::remu 
-  (word) divr16s::resultu ← (word~) divr16s::$14
-  (bool~) divr16s::$15 ← (byte) divr16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) divr16s::$15) goto divr16s::@5
-  to:divr16s::@11
-divr16s::@10: scope:[divr16s]  from
-  to:divr16s::@3
-divr16s::@5: scope:[divr16s]  from divr16s::@13 divr16s::@4
-  (signed word~) divr16s::$20 ← ((signed word)) (word) rem16u
-  (signed word) rem16s ← (signed word~) divr16s::$20
-  (signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu
-  (signed word) divr16s::return ← (signed word~) divr16s::$21
-  to:divr16s::@return
-divr16s::@11: scope:[divr16s]  from divr16s::@4
-  (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u
-  (signed word~) divr16s::$17 ← - (signed word~) divr16s::$16
-  (signed word) rem16s ← (signed word~) divr16s::$17
-  (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu
-  (signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
-  (signed word) divr16s::return ← (signed word~) divr16s::$19
-  to:divr16s::@return
-divr16s::@return: scope:[divr16s]  from divr16s::@11 divr16s::@5 divr16s::@6
-  (signed word) divr16s::return ← (signed word) divr16s::return
-  return (signed word) divr16s::return
-  to:@return
-divr16s::@12: scope:[divr16s]  from
-  to:divr16s::@6
-divr16s::@6: scope:[divr16s]  from divr16s::@12 divr16s::@14
-  to:divr16s::@return
-divr16s::@13: scope:[divr16s]  from
-  to:divr16s::@5
-divr16s::@14: scope:[divr16s]  from
-  to:divr16s::@6
-@10: scope:[]  from @9
-  to:@11
-div16s: scope:[div16s]  from
-  (signed word~) div16s::$0 ← call divr16s (signed word) div16s::dividend (signed word) div16s::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (signed word) div16s::return ← (signed word~) div16s::$0
-  to:div16s::@return
-div16s::@return: scope:[div16s]  from div16s div16s::@1
-  (signed word) div16s::return ← (signed word) div16s::return
-  return (signed word) div16s::return
-  to:@return
-div16s::@1: scope:[div16s]  from
-  to:div16s::@return
-@11: scope:[]  from @10
-  to:@12
-mul8u: scope:[mul8u]  from
-  (word) mul8u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) mul8u::mb ← ((word)) (byte) mul8u::b
-  to:mul8u::@1
-mul8u::@1: scope:[mul8u]  from mul8u mul8u::@4
-  (bool~) mul8u::$0 ← (byte) mul8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) mul8u::$0) goto mul8u::@2
-  to:mul8u::@5
-mul8u::@2: scope:[mul8u]  from mul8u::@1 mul8u::@6
-  (byte~) mul8u::$1 ← (byte) mul8u::a & (byte/signed byte/word/signed word/dword/signed dword) 1
-  (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul8u::$3 ← ! (bool~) mul8u::$2
-  if((bool~) mul8u::$3) goto mul8u::@4
-  to:mul8u::@7
-mul8u::@5: scope:[mul8u]  from mul8u::@1
-  to:mul8u::@3
-mul8u::@3: scope:[mul8u]  from mul8u::@5 mul8u::@8
-  (word) mul8u::return ← (word) mul8u::res
-  to:mul8u::@return
-mul8u::@6: scope:[mul8u]  from
-  to:mul8u::@2
-mul8u::@4: scope:[mul8u]  from mul8u::@2 mul8u::@7
-  (byte~) mul8u::$5 ← (byte) mul8u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) mul8u::a ← (byte~) mul8u::$5
-  (word~) mul8u::$6 ← (word) mul8u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) mul8u::mb ← (word~) mul8u::$6
-  to:mul8u::@1
-mul8u::@7: scope:[mul8u]  from mul8u::@2
-  (word~) mul8u::$4 ← (word) mul8u::res + (word) mul8u::mb
-  (word) mul8u::res ← (word~) mul8u::$4
-  to:mul8u::@4
-mul8u::@8: scope:[mul8u]  from
-  to:mul8u::@3
-mul8u::@return: scope:[mul8u]  from mul8u::@3 mul8u::@9
-  (word) mul8u::return ← (word) mul8u::return
-  return (word) mul8u::return
-  to:@return
-mul8u::@9: scope:[mul8u]  from
-  to:mul8u::@return
-@12: scope:[]  from @11
-  to:@13
-mul8s: scope:[mul8s]  from
-  (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a
-  (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b
-  (word~) mul8s::$2 ← call mul8u (byte~) mul8s::$0 (byte~) mul8s::$1 
-  (word) mul8s::m ← (word~) mul8s::$2
-  (bool~) mul8s::$3 ← (signed byte) mul8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul8s::$4 ← ! (bool~) mul8s::$3
-  if((bool~) mul8s::$4) goto mul8s::@1
-  to:mul8s::@3
-mul8s::@1: scope:[mul8s]  from mul8s mul8s::@3
-  (bool~) mul8s::$9 ← (signed byte) mul8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul8s::$10 ← ! (bool~) mul8s::$9
-  if((bool~) mul8s::$10) goto mul8s::@2
-  to:mul8s::@4
-mul8s::@3: scope:[mul8s]  from mul8s
-  (byte~) mul8s::$5 ← > (word) mul8s::m
-  (byte~) mul8s::$6 ← > (word) mul8s::m
-  (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b
-  (byte~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7
-  (byte~) mul8s::$16 ← (byte~) mul8s::$8
-  (word) mul8s::m ← (word) mul8s::m hi= (byte~) mul8s::$16
-  to:mul8s::@1
-mul8s::@2: scope:[mul8s]  from mul8s::@1 mul8s::@4
-  (signed word~) mul8s::$15 ← ((signed word)) (word) mul8s::m
-  (signed word) mul8s::return ← (signed word~) mul8s::$15
-  to:mul8s::@return
-mul8s::@4: scope:[mul8s]  from mul8s::@1
-  (byte~) mul8s::$11 ← > (word) mul8s::m
-  (byte~) mul8s::$12 ← > (word) mul8s::m
-  (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a
-  (byte~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13
-  (byte~) mul8s::$17 ← (byte~) mul8s::$14
-  (word) mul8s::m ← (word) mul8s::m hi= (byte~) mul8s::$17
-  to:mul8s::@2
-mul8s::@return: scope:[mul8s]  from mul8s::@2 mul8s::@5
-  (signed word) mul8s::return ← (signed word) mul8s::return
-  return (signed word) mul8s::return
-  to:@return
-mul8s::@5: scope:[mul8s]  from
-  to:mul8s::@return
-@13: scope:[]  from @12
-  to:@14
-mul8su: scope:[mul8su]  from
-  (byte~) mul8su::$0 ← ((byte)) (signed byte) mul8su::a
-  (byte~) mul8su::$1 ← ((byte)) (byte) mul8su::b
-  (word~) mul8su::$2 ← call mul8u (byte~) mul8su::$0 (byte~) mul8su::$1 
-  (word) mul8su::m ← (word~) mul8su::$2
-  (bool~) mul8su::$3 ← (signed byte) mul8su::a < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul8su::$4 ← ! (bool~) mul8su::$3
-  if((bool~) mul8su::$4) goto mul8su::@1
-  to:mul8su::@2
-mul8su::@1: scope:[mul8su]  from mul8su mul8su::@2
-  (signed word~) mul8su::$9 ← ((signed word)) (word) mul8su::m
-  (signed word) mul8su::return ← (signed word~) mul8su::$9
-  to:mul8su::@return
-mul8su::@2: scope:[mul8su]  from mul8su
-  (byte~) mul8su::$5 ← > (word) mul8su::m
-  (byte~) mul8su::$6 ← > (word) mul8su::m
-  (byte~) mul8su::$7 ← ((byte)) (byte) mul8su::b
-  (byte~) mul8su::$8 ← (byte~) mul8su::$6 - (byte~) mul8su::$7
-  (byte~) mul8su::$10 ← (byte~) mul8su::$8
-  (word) mul8su::m ← (word) mul8su::m hi= (byte~) mul8su::$10
-  to:mul8su::@1
-mul8su::@return: scope:[mul8su]  from mul8su::@1 mul8su::@3
-  (signed word) mul8su::return ← (signed word) mul8su::return
-  return (signed word) mul8su::return
-  to:@return
-mul8su::@3: scope:[mul8su]  from
-  to:mul8su::@return
-@14: scope:[]  from @13
-  to:@15
-mul16u: scope:[mul16u]  from
-  (dword) mul16u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (dword) mul16u::mb ← ((dword)) (word) mul16u::b
-  to:mul16u::@1
-mul16u::@1: scope:[mul16u]  from mul16u mul16u::@4
-  (bool~) mul16u::$0 ← (word) mul16u::a != (byte/signed byte/word/signed word/dword/signed dword) 0
-  if((bool~) mul16u::$0) goto mul16u::@2
-  to:mul16u::@5
-mul16u::@2: scope:[mul16u]  from mul16u::@1 mul16u::@6
-  (byte/word~) mul16u::$1 ← (word) mul16u::a & (byte/signed byte/word/signed word/dword/signed dword) 1
-  (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul16u::$3 ← ! (bool~) mul16u::$2
-  if((bool~) mul16u::$3) goto mul16u::@4
-  to:mul16u::@7
-mul16u::@5: scope:[mul16u]  from mul16u::@1
-  to:mul16u::@3
-mul16u::@3: scope:[mul16u]  from mul16u::@5 mul16u::@8
-  (dword) mul16u::return ← (dword) mul16u::res
-  to:mul16u::@return
-mul16u::@6: scope:[mul16u]  from
-  to:mul16u::@2
-mul16u::@4: scope:[mul16u]  from mul16u::@2 mul16u::@7
-  (word~) mul16u::$5 ← (word) mul16u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1
-  (word) mul16u::a ← (word~) mul16u::$5
-  (dword~) mul16u::$6 ← (dword) mul16u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1
-  (dword) mul16u::mb ← (dword~) mul16u::$6
-  to:mul16u::@1
-mul16u::@7: scope:[mul16u]  from mul16u::@2
-  (dword~) mul16u::$4 ← (dword) mul16u::res + (dword) mul16u::mb
-  (dword) mul16u::res ← (dword~) mul16u::$4
-  to:mul16u::@4
-mul16u::@8: scope:[mul16u]  from
-  to:mul16u::@3
-mul16u::@return: scope:[mul16u]  from mul16u::@3 mul16u::@9
-  (dword) mul16u::return ← (dword) mul16u::return
-  return (dword) mul16u::return
-  to:@return
-mul16u::@9: scope:[mul16u]  from
-  to:mul16u::@return
-@15: scope:[]  from @14
-  to:@16
-mul16s: scope:[mul16s]  from
-  (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a
-  (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b
-  (dword~) mul16s::$2 ← call mul16u (word~) mul16s::$0 (word~) mul16s::$1 
-  (dword) mul16s::m ← (dword~) mul16s::$2
-  (bool~) mul16s::$3 ← (signed word) mul16s::a < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul16s::$4 ← ! (bool~) mul16s::$3
-  if((bool~) mul16s::$4) goto mul16s::@1
-  to:mul16s::@3
-mul16s::@1: scope:[mul16s]  from mul16s mul16s::@3
-  (bool~) mul16s::$9 ← (signed word) mul16s::b < (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) mul16s::$10 ← ! (bool~) mul16s::$9
-  if((bool~) mul16s::$10) goto mul16s::@2
-  to:mul16s::@4
-mul16s::@3: scope:[mul16s]  from mul16s
-  (word~) mul16s::$5 ← > (dword) mul16s::m
-  (word~) mul16s::$6 ← > (dword) mul16s::m
-  (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b
-  (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7
-  (word~) mul16s::$16 ← (word~) mul16s::$8
-  (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$16
-  to:mul16s::@1
-mul16s::@2: scope:[mul16s]  from mul16s::@1 mul16s::@4
-  (signed dword~) mul16s::$15 ← ((signed dword)) (dword) mul16s::m
-  (signed dword) mul16s::return ← (signed dword~) mul16s::$15
-  to:mul16s::@return
-mul16s::@4: scope:[mul16s]  from mul16s::@1
-  (word~) mul16s::$11 ← > (dword) mul16s::m
-  (word~) mul16s::$12 ← > (dword) mul16s::m
-  (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a
-  (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13
-  (word~) mul16s::$17 ← (word~) mul16s::$14
-  (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$17
-  to:mul16s::@2
-mul16s::@return: scope:[mul16s]  from mul16s::@2 mul16s::@5
-  (signed dword) mul16s::return ← (signed dword) mul16s::return
-  return (signed dword) mul16s::return
-  to:@return
-mul16s::@5: scope:[mul16s]  from
-  to:mul16s::@return
-@16: scope:[]  from @15
-  (dword) PI2_u4f28 ← (dword/signed dword) 1686629713
-  (dword) PI_u4f28 ← (dword/signed dword) 843314857
-  (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428
-  (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736
-  (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868
-  (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434
-  to:@17
-sin16s_gen: scope:[sin16s_gen]  from
-  (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength 
-  (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0
-  (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:sin16s_gen::@1
-sin16s_gen::@1: scope:[sin16s_gen]  from sin16s_gen sin16s_gen::@1
-  (signed word~) sin16s_gen::$1 ← call sin16s (dword) sin16s_gen::x 
-  *((signed word*) sin16s_gen::sintab) ← (signed word~) sin16s_gen::$1
-  (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
-  (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$2
-  (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step
-  (dword) sin16s_gen::x ← (dword~) sin16s_gen::$3
-  (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
-  (bool~) sin16s_gen::$4 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength
-  if((bool~) sin16s_gen::$4) goto sin16s_gen::@1
-  to:sin16s_gen::@2
-sin16s_gen::@2: scope:[sin16s_gen]  from sin16s_gen::@1
-  to:sin16s_gen::@return
-sin16s_gen::@return: scope:[sin16s_gen]  from sin16s_gen::@2
-  return 
-  to:@return
-@17: scope:[]  from @16
-  to:@18
-sin16s_gen2: scope:[sin16s_gen2]  from
-  (signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min
-  (signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0
-  (signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1
-  (signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1
-  (signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2
-  (dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength 
-  (dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3
-  (dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:sin16s_gen2::@1
-sin16s_gen2::@1: scope:[sin16s_gen2]  from sin16s_gen2 sin16s_gen2::@1
-  (signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x 
-  (signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl 
-  (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
-  (signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6
-  (signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7
-  *((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8
-  (signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
-  (signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9
-  (dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step
-  (dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10
-  (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
-  (bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength
-  if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1
-  to:sin16s_gen2::@2
-sin16s_gen2::@2: scope:[sin16s_gen2]  from sin16s_gen2::@1
-  to:sin16s_gen2::@return
-sin16s_gen2::@return: scope:[sin16s_gen2]  from sin16s_gen2::@2
-  return 
-  to:@return
-@18: scope:[]  from @17
-  to:@19
-sin8s_gen: scope:[sin8s_gen]  from
-  (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength 
-  (word) sin8s_gen::step ← (word~) sin8s_gen::$0
-  (word) sin8s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (word) sin8s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  to:sin8s_gen::@1
-sin8s_gen::@1: scope:[sin8s_gen]  from sin8s_gen sin8s_gen::@1
-  (signed byte~) sin8s_gen::$1 ← call sin8s (word) sin8s_gen::x 
-  *((signed byte*) sin8s_gen::sintab) ← (signed byte~) sin8s_gen::$1
-  (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
-  (word~) sin8s_gen::$2 ← (word) sin8s_gen::x + (word) sin8s_gen::step
-  (word) sin8s_gen::x ← (word~) sin8s_gen::$2
-  (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
-  (bool~) sin8s_gen::$3 ← (word) sin8s_gen::i < (word) sin8s_gen::wavelength
-  if((bool~) sin8s_gen::$3) goto sin8s_gen::@1
-  to:sin8s_gen::@2
-sin8s_gen::@2: scope:[sin8s_gen]  from sin8s_gen::@1
-  to:sin8s_gen::@return
-sin8s_gen::@return: scope:[sin8s_gen]  from sin8s_gen::@2
-  return 
-  to:@return
-@19: scope:[]  from @18
-  to:@20
-sin16s: scope:[sin16s]  from
-  (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
-  (bool~) sin16s::$1 ← ! (bool~) sin16s::$0
-  if((bool~) sin16s::$1) goto sin16s::@1
-  to:sin16s::@4
-sin16s::@1: scope:[sin16s]  from sin16s sin16s::@4
-  (bool~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28
-  (bool~) sin16s::$4 ← ! (bool~) sin16s::$3
-  if((bool~) sin16s::$4) goto sin16s::@2
-  to:sin16s::@5
-sin16s::@4: scope:[sin16s]  from sin16s
-  (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28
-  (dword) sin16s::x ← (dword~) sin16s::$2
-  (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:sin16s::@1
-sin16s::@2: scope:[sin16s]  from sin16s::@1 sin16s::@5
-  (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3
-  (word~) sin16s::$7 ← > (dword~) sin16s::$6
-  (word) sin16s::x1 ← (word~) sin16s::$7
-  (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (word) sin16s::x2 ← (word~) sin16s::$8
-  (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 
-  (word) sin16s::x3 ← (word~) sin16s::$9
-  (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6
-  (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 
-  (word) sin16s::x3_6 ← (word~) sin16s::$11
-  (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6
-  (word) sin16s::usinx ← (word~) sin16s::$12
-  (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (word) sin16s::x4 ← (word~) sin16s::$13
-  (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (word) sin16s::x5 ← (word~) sin16s::$14
-  (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4
-  (word) sin16s::x5_128 ← (word~) sin16s::$15
-  (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128
-  (word) sin16s::usinx ← (word~) sin16s::$16
-  (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx
-  (signed word) sin16s::sinx ← (signed word~) sin16s::$17
-  (bool~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) sin16s::$19 ← ! (bool~) sin16s::$18
-  if((bool~) sin16s::$19) goto sin16s::@3
-  to:sin16s::@6
-sin16s::@5: scope:[sin16s]  from sin16s::@1
-  (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x
-  (dword) sin16s::x ← (dword~) sin16s::$5
-  to:sin16s::@2
-sin16s::@3: scope:[sin16s]  from sin16s::@2 sin16s::@6
-  (signed word) sin16s::return ← (signed word) sin16s::sinx
-  to:sin16s::@return
-sin16s::@6: scope:[sin16s]  from sin16s::@2
-  (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx
-  (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20
-  (signed word) sin16s::sinx ← (signed word~) sin16s::$21
-  to:sin16s::@3
-sin16s::@return: scope:[sin16s]  from sin16s::@3 sin16s::@7
-  (signed word) sin16s::return ← (signed word) sin16s::return
-  return (signed word) sin16s::return
-  to:@return
-sin16s::@7: scope:[sin16s]  from
-  to:sin16s::@return
-@20: scope:[]  from @19
-  to:@21
-sin8s: scope:[sin8s]  from
-  (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
-  (bool~) sin8s::$1 ← ! (bool~) sin8s::$0
-  if((bool~) sin8s::$1) goto sin8s::@1
-  to:sin8s::@5
-sin8s::@1: scope:[sin8s]  from sin8s sin8s::@5
-  (bool~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12
-  (bool~) sin8s::$4 ← ! (bool~) sin8s::$3
-  if((bool~) sin8s::$4) goto sin8s::@2
-  to:sin8s::@6
-sin8s::@5: scope:[sin8s]  from sin8s
-  (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12
-  (word) sin8s::x ← (word~) sin8s::$2
-  (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:sin8s::@1
-sin8s::@2: scope:[sin8s]  from sin8s::@1 sin8s::@6
-  (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3
-  (byte~) sin8s::$7 ← > (word~) sin8s::$6
-  (byte) sin8s::x1 ← (byte~) sin8s::$7
-  (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (byte) sin8s::x2 ← (byte~) sin8s::$8
-  (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 
-  (byte) sin8s::x3 ← (byte~) sin8s::$9
-  (byte) sin8s::DIV_6 ← (byte/signed byte/word/signed word/dword/signed dword) 43
-  (byte~) sin8s::$10 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::DIV_6 (byte/signed byte/word/signed word/dword/signed dword) 1 
-  (byte) sin8s::x3_6 ← (byte~) sin8s::$10
-  (byte~) sin8s::$11 ← (byte) sin8s::x1 - (byte) sin8s::x3_6
-  (byte) sin8s::usinx ← (byte~) sin8s::$11
-  (byte~) sin8s::$12 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (byte) sin8s::x4 ← (byte~) sin8s::$12
-  (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 
-  (byte) sin8s::x5 ← (byte~) sin8s::$13
-  (byte~) sin8s::$14 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4
-  (byte) sin8s::x5_128 ← (byte~) sin8s::$14
-  (byte~) sin8s::$15 ← (byte) sin8s::usinx + (byte) sin8s::x5_128
-  (byte) sin8s::usinx ← (byte~) sin8s::$15
-  (bool~) sin8s::$16 ← (byte) sin8s::usinx >= (byte/word/signed word/dword/signed dword) 128
-  (bool~) sin8s::$17 ← ! (bool~) sin8s::$16
-  if((bool~) sin8s::$17) goto sin8s::@3
-  to:sin8s::@7
-sin8s::@6: scope:[sin8s]  from sin8s::@1
-  (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x
-  (word) sin8s::x ← (word~) sin8s::$5
-  to:sin8s::@2
-sin8s::@3: scope:[sin8s]  from sin8s::@2 sin8s::@7
-  (signed byte~) sin8s::$18 ← ((signed byte)) (byte) sin8s::usinx
-  (signed byte) sin8s::sinx ← (signed byte~) sin8s::$18
-  (bool~) sin8s::$19 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0
-  (bool~) sin8s::$20 ← ! (bool~) sin8s::$19
-  if((bool~) sin8s::$20) goto sin8s::@4
-  to:sin8s::@8
-sin8s::@7: scope:[sin8s]  from sin8s::@2
-  (byte) sin8s::usinx ← -- (byte) sin8s::usinx
-  to:sin8s::@3
-sin8s::@4: scope:[sin8s]  from sin8s::@3 sin8s::@8
-  (signed byte) sin8s::return ← (signed byte) sin8s::sinx
-  to:sin8s::@return
-sin8s::@8: scope:[sin8s]  from sin8s::@3
-  (signed byte~) sin8s::$21 ← ((signed byte)) (byte) sin8s::usinx
-  (signed byte~) sin8s::$22 ← - (signed byte~) sin8s::$21
-  (signed byte) sin8s::sinx ← (signed byte~) sin8s::$22
-  to:sin8s::@4
-sin8s::@return: scope:[sin8s]  from sin8s::@4 sin8s::@9
-  (signed byte) sin8s::return ← (signed byte) sin8s::return
-  return (signed byte) sin8s::return
-  to:@return
-sin8s::@9: scope:[sin8s]  from
-  to:sin8s::@return
-@21: scope:[]  from @20
-  to:@22
-mulu16_sel: scope:[mulu16_sel]  from
-  (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 
-  (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select
-  (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1
-  (word) mulu16_sel::return ← (word~) mulu16_sel::$2
-  to:mulu16_sel::@return
-mulu16_sel::@return: scope:[mulu16_sel]  from mulu16_sel mulu16_sel::@1
-  (word) mulu16_sel::return ← (word) mulu16_sel::return
-  return (word) mulu16_sel::return
-  to:@return
-mulu16_sel::@1: scope:[mulu16_sel]  from
-  to:mulu16_sel::@return
-@22: scope:[]  from @21
-  to:@23
-mulu8_sel: scope:[mulu8_sel]  from
-  (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 
-  (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select
-  (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1
-  (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2
-  to:mulu8_sel::@return
-mulu8_sel::@return: scope:[mulu8_sel]  from mulu8_sel mulu8_sel::@1
-  (byte) mulu8_sel::return ← (byte) mulu8_sel::return
-  return (byte) mulu8_sel::return
-  to:@return
-mulu8_sel::@1: scope:[mulu8_sel]  from
-  to:mulu8_sel::@return
-@23: scope:[]  from @22
   (byte) PLEX_COUNT ← (byte/signed byte/word/signed word/dword/signed dword) 24
   (word[PLEX_COUNT]) PLEX_XPOS ← { fill( PLEX_COUNT, 0) }
   (byte[PLEX_COUNT]) PLEX_YPOS ← { fill( PLEX_COUNT, 0) }
@@ -2337,7 +725,7 @@ mulu8_sel::@1: scope:[mulu8_sel]  from
   (byte) plex_show_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
   (byte) plex_sprite_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
   (byte) plex_sprite_msb ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:@24
+  to:@4
 plexInit: scope:[plexInit]  from
   (void~) plexInit::$0 ← call plexSetScreen (byte*) plexInit::screen 
   (byte/signed word/word/dword/signed dword~) plexInit::$1 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1
@@ -2354,8 +742,8 @@ plexInit::@2: scope:[plexInit]  from plexInit::@1
 plexInit::@return: scope:[plexInit]  from plexInit::@2
   return 
   to:@return
-@24: scope:[]  from @23
-  to:@25
+@4: scope:[]  from @3
+  to:@5
 plexSetScreen: scope:[plexSetScreen]  from
   (byte*~) plexSetScreen::$0 ← (byte*) plexSetScreen::screen + (word/signed word/dword/signed dword) 1016
   (byte*) PLEX_SCREEN_PTR ← (byte*~) plexSetScreen::$0
@@ -2363,8 +751,8 @@ plexSetScreen: scope:[plexSetScreen]  from
 plexSetScreen::@return: scope:[plexSetScreen]  from plexSetScreen
   return 
   to:@return
-@25: scope:[]  from @24
-  to:@26
+@5: scope:[]  from @4
+  to:@6
 plexSort: scope:[plexSort]  from
   (byte/signed word/word/dword/signed dword~) plexSort::$0 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 2
   (byte) plexSort::m ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -2406,8 +794,8 @@ plexSort::@6: scope:[plexSort]  from plexSort::@2
 plexSort::@return: scope:[plexSort]  from plexSort::@6
   return 
   to:@return
-@26: scope:[]  from @25
-  to:@27
+@6: scope:[]  from @5
+  to:@7
 plexShowSprite: scope:[plexShowSprite]  from
   (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx << (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte) plexShowSprite::plex_sprite_idx2 ← (byte~) plexShowSprite::$0
@@ -2448,8 +836,8 @@ plexShowSprite::@6: scope:[plexShowSprite]  from plexShowSprite::@2
 plexShowSprite::@return: scope:[plexShowSprite]  from plexShowSprite::@3
   return 
   to:@return
-@27: scope:[]  from @26
-  to:@28
+@7: scope:[]  from @6
+  to:@8
 plexShowNextYpos: scope:[plexShowNextYpos]  from
   (byte) plexShowNextYpos::return ← *((byte[PLEX_COUNT]) PLEX_YPOS + *((byte[PLEX_COUNT]) PLEX_SORTED_IDX + (byte) plex_show_idx))
   to:plexShowNextYpos::@return
@@ -2459,11 +847,11 @@ plexShowNextYpos::@return: scope:[plexShowNextYpos]  from plexShowNextYpos plexS
   to:@return
 plexShowNextYpos::@1: scope:[plexShowNextYpos]  from
   to:plexShowNextYpos::@return
-@28: scope:[]  from @27
+@8: scope:[]  from @7
   (byte*) SPRITE ← ((byte*)) (word/signed word/dword/signed dword) 8192
   (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
   (byte*) YSIN ← ((byte*)) (word/signed word/dword/signed dword) 8448
-  kickasm(location (byte*) YSIN) {{ .var min = 51
+  kickasm(location (byte*) YSIN) {{ .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -2474,7 +862,7 @@ plexShowNextYpos::@1: scope:[plexShowNextYpos]  from
     .for (var x=0;x<3; x++)
         .byte pic.getSinglecolorByte(x,y)
  }}
-  to:@29
+  to:@9
 main: scope:[main]  from
   asm { sei  }
   (void~) main::$0 ← call init 
@@ -2483,8 +871,8 @@ main: scope:[main]  from
 main::@return: scope:[main]  from main
   return 
   to:@return
-@29: scope:[]  from @28
-  to:@30
+@9: scope:[]  from @8
+  to:@10
 init: scope:[init]  from
   (byte~) init::$0 ← (byte) VIC_DEN | (byte) VIC_RSEL
   (byte/word/dword~) init::$1 ← (byte~) init::$0 | (byte/signed byte/word/signed word/dword/signed dword) 3
@@ -2520,39 +908,39 @@ init::@4: scope:[init]  from init::@2
 init::@return: scope:[init]  from init::@4
   return 
   to:@return
-@30: scope:[]  from @29
-  to:@31
+@10: scope:[]  from @9
+  to:@11
 loop: scope:[loop]  from
   (byte) loop::sin_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:loop::@1
-loop::@1: scope:[loop]  from loop loop::@23
+loop::@1: scope:[loop]  from loop loop::@27
   if(true) goto loop::@2
-  to:loop::@13
-loop::@2: scope:[loop]  from loop::@1 loop::@14
+  to:loop::@15
+loop::@2: scope:[loop]  from loop::@1 loop::@16
   to:loop::@4
-loop::@13: scope:[loop]  from loop::@1
+loop::@15: scope:[loop]  from loop::@1
   to:loop::@3
-loop::@3: scope:[loop]  from loop::@13 loop::@24
+loop::@3: scope:[loop]  from loop::@15 loop::@28
   to:loop::@return
-loop::@14: scope:[loop]  from
+loop::@16: scope:[loop]  from
   to:loop::@2
 loop::@4: scope:[loop]  from loop::@2 loop::@5
   (bool~) loop::$0 ← *((byte*) RASTER) != (byte/word/signed word/dword/signed dword) 255
   if((bool~) loop::$0) goto loop::@5
-  to:loop::@15
-loop::@5: scope:[loop]  from loop::@16 loop::@4
+  to:loop::@17
+loop::@5: scope:[loop]  from loop::@18 loop::@4
   to:loop::@4
-loop::@15: scope:[loop]  from loop::@4
+loop::@17: scope:[loop]  from loop::@4
   to:loop::@6
-loop::@6: scope:[loop]  from loop::@15 loop::@17
+loop::@6: scope:[loop]  from loop::@17 loop::@19
   *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
   (byte) loop::y_idx ← (byte) loop::sin_idx
   (byte/signed word/word/dword/signed dword~) loop::$1 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte) loop::sy ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:loop::@7
-loop::@16: scope:[loop]  from
+loop::@18: scope:[loop]  from
   to:loop::@5
-loop::@17: scope:[loop]  from
+loop::@19: scope:[loop]  from
   to:loop::@6
 loop::@7: scope:[loop]  from loop::@6 loop::@7
   *((byte[PLEX_COUNT]) PLEX_YPOS + (byte) loop::sy) ← *((byte*) YSIN + (byte) loop::y_idx)
@@ -2560,61 +948,67 @@ loop::@7: scope:[loop]  from loop::@6 loop::@7
   (byte) loop::sy ← (byte) loop::sy + rangenext(0,loop::$1)
   (bool~) loop::$2 ← (byte) loop::sy != rangelast(0,loop::$1)
   if((bool~) loop::$2) goto loop::@7
-  to:loop::@18
-loop::@18: scope:[loop]  from loop::@7
+  to:loop::@20
+loop::@20: scope:[loop]  from loop::@7
   (byte) loop::sin_idx ← (byte) loop::sin_idx + (byte/signed byte/word/signed word/dword/signed dword) 1
   *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
   (void~) loop::$3 ← call plexSort 
-  *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
-  (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 0
+  *((byte*) BORDERCOL) ← (byte) BLACK
   to:loop::@8
-loop::@8: scope:[loop]  from loop::@18 loop::@8
-  (void~) loop::$4 ← call plexShowSprite 
-  (byte) loop::ss ← (byte) loop::ss + rangenext(0,7)
-  (bool~) loop::$5 ← (byte) loop::ss != rangelast(0,7)
-  if((bool~) loop::$5) goto loop::@8
-  to:loop::@19
-loop::@19: scope:[loop]  from loop::@8
+loop::@8: scope:[loop]  from loop::@20 loop::@9
+  (byte~) loop::$4 ← *((byte*) D011) & (byte/word/signed word/dword/signed dword) 128
+  (bool~) loop::$5 ← (byte~) loop::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+  if((bool~) loop::$5) goto loop::@9
+  to:loop::@21
+loop::@9: scope:[loop]  from loop::@22 loop::@8
+  to:loop::@8
+loop::@21: scope:[loop]  from loop::@8
+  to:loop::@10
+loop::@10: scope:[loop]  from loop::@21 loop::@23
   (byte/signed word/word/dword/signed dword~) loop::$6 ← (byte) PLEX_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 8
+  (byte) loop::ss ← (byte/signed byte/word/signed word/dword/signed dword) 0
+  to:loop::@11
+loop::@22: scope:[loop]  from
   to:loop::@9
-loop::@9: scope:[loop]  from loop::@12 loop::@19
+loop::@23: scope:[loop]  from
+  to:loop::@10
+loop::@11: scope:[loop]  from loop::@10 loop::@14
   *((byte*) BORDERCOL) ← (byte) BLACK
   (byte~) loop::$7 ← call plexShowNextYpos 
   (byte/signed word/word/dword/signed dword~) loop::$8 ← (byte~) loop::$7 - (byte/signed byte/word/signed word/dword/signed dword) 8
   (byte) loop::rasterY ← (byte/signed word/word/dword/signed dword~) loop::$8
-  to:loop::@10
-loop::@10: scope:[loop]  from loop::@11 loop::@9
-  (bool~) loop::$9 ← *((byte*) RASTER) < (byte) loop::rasterY
-  if((bool~) loop::$9) goto loop::@11
-  to:loop::@20
-loop::@11: scope:[loop]  from loop::@10 loop::@21
-  to:loop::@10
-loop::@20: scope:[loop]  from loop::@10
   to:loop::@12
-loop::@12: scope:[loop]  from loop::@20 loop::@22
+loop::@12: scope:[loop]  from loop::@11 loop::@13
+  (bool~) loop::$9 ← *((byte*) RASTER) < (byte) loop::rasterY
+  if((bool~) loop::$9) goto loop::@13
+  to:loop::@24
+loop::@13: scope:[loop]  from loop::@12 loop::@25
+  to:loop::@12
+loop::@24: scope:[loop]  from loop::@12
+  to:loop::@14
+loop::@14: scope:[loop]  from loop::@24 loop::@26
   *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
   (void~) loop::$10 ← call plexShowSprite 
-  (byte) loop::ss ← (byte) loop::ss + rangenext(8,loop::$6)
-  (bool~) loop::$11 ← (byte) loop::ss != rangelast(8,loop::$6)
-  if((bool~) loop::$11) goto loop::@9
-  to:loop::@23
-loop::@21: scope:[loop]  from
-  to:loop::@11
-loop::@22: scope:[loop]  from
-  to:loop::@12
-loop::@23: scope:[loop]  from loop::@12
+  (byte) loop::ss ← (byte) loop::ss + rangenext(0,loop::$6)
+  (bool~) loop::$11 ← (byte) loop::ss != rangelast(0,loop::$6)
+  if((bool~) loop::$11) goto loop::@11
+  to:loop::@27
+loop::@25: scope:[loop]  from
+  to:loop::@13
+loop::@26: scope:[loop]  from
+  to:loop::@14
+loop::@27: scope:[loop]  from loop::@14
   *((byte*) BORDERCOL) ← (byte) BLACK
   to:loop::@1
-loop::@24: scope:[loop]  from
+loop::@28: scope:[loop]  from
   to:loop::@3
 loop::@return: scope:[loop]  from loop::@3
   return 
   to:@return
-@31: scope:[]  from @30
+@11: scope:[]  from @10
   call main 
   to:@end
-@end: scope:[]  from @31
+@end: scope:[]  from @11
 
 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
 Inlined call call plexSetScreen (byte*) plexInit::screen 
@@ -2622,28 +1016,8 @@ Inlined call (byte~) loop::$7 ← call plexShowNextYpos
 Removing unused procedure toD018
 Removing unused procedure toDd00
 Removing unused procedure vicSelectGfxBank
-Removing unused procedure div8s
-Removing unused procedure div16s
-Removing unused procedure mul8s
-Removing unused procedure mul8su
-Removing unused procedure sin16s_gen
-Removing unused procedure sin16s_gen2
-Removing unused procedure sin8s_gen
 Removing unused procedure plexSetScreen
 Removing unused procedure plexShowNextYpos
-Removing unused procedure div8u
-Removing unused procedure div16u
-Removing unused procedure div32u16u
-Removing unused procedure divr16s
-Removing unused procedure mul16s
-Removing unused procedure sin16s
-Removing unused procedure sin8s
-Removing unused procedure divr8u
-Removing unused procedure divr16u
-Removing unused procedure mulu16_sel
-Removing unused procedure mulu8_sel
-Removing unused procedure mul8u
-Removing unused procedure mul16u
 Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
 Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7
 Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
@@ -2697,65 +1071,37 @@ Eliminating unused variable (byte) GREY and assignment [61] (byte) GREY ← (byt
 Eliminating unused variable (byte) LIGHT_GREEN and assignment [62] (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13
 Eliminating unused variable (byte) LIGHT_BLUE and assignment [63] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14
 Eliminating unused variable (byte) LIGHT_GREY and assignment [64] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15
-Eliminating unused variable (byte) rem8u and assignment [65] (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0
-Eliminating unused variable (word) rem16u and assignment [66] (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0
-Eliminating unused variable (signed byte) rem8s and assignment [67] (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0
-Eliminating unused variable (signed word) rem16s and assignment [68] (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0
-Eliminating unused variable (dword) PI2_u4f28 and assignment [69] (dword) PI2_u4f28 ← (dword/signed dword) 1686629713
-Eliminating unused variable (dword) PI_u4f28 and assignment [70] (dword) PI_u4f28 ← (dword/signed dword) 843314857
-Eliminating unused variable (dword) PI_HALF_u4f28 and assignment [71] (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428
-Eliminating unused variable (word) PI2_u4f12 and assignment [72] (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736
-Eliminating unused variable (word) PI_u4f12 and assignment [73] (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868
-Eliminating unused variable (word) PI_HALF_u4f12 and assignment [74] (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434
 Eliminating unused variable - keeping the call (void~) main::$0
 Eliminating unused variable - keeping the call (void~) main::$1
 Eliminating unused variable - keeping the call (void~) init::$2
 Eliminating unused variable - keeping the call (void~) loop::$3
-Eliminating unused variable - keeping the call (void~) loop::$4
 Eliminating unused variable - keeping the call (void~) loop::$10
 Removing empty block @1
 Removing empty block @2
-Removing empty block @3
+Removing empty block plexInit::plexSetScreen1_@return
+Removing empty block plexInit::@2
 Removing empty block @4
 Removing empty block @5
 Removing empty block @6
-Removing empty block @7
-Removing empty block @8
-Removing empty block @9
-Removing empty block @10
-Removing empty block @11
-Removing empty block @12
-Removing empty block @13
-Removing empty block @14
-Removing empty block @15
-Removing empty block @16
-Removing empty block @17
-Removing empty block @18
-Removing empty block @19
-Removing empty block @20
-Removing empty block @21
-Removing empty block @22
-Removing empty block plexInit::plexSetScreen1_@return
-Removing empty block plexInit::@2
-Removing empty block @24
-Removing empty block @25
-Removing empty block @26
 Removing empty block plexShowSprite::@5
-Removing empty block @27
-Removing empty block @29
+Removing empty block @7
+Removing empty block @9
 Removing empty block init::@4
-Removing empty block @30
-Removing empty block loop::@13
-Removing empty block loop::@3
-Removing empty block loop::@14
+Removing empty block @10
 Removing empty block loop::@15
+Removing empty block loop::@3
 Removing empty block loop::@16
 Removing empty block loop::@17
-Removing empty block loop::plexShowNextYpos1_@1
-Removing empty block loop::@20
+Removing empty block loop::@18
+Removing empty block loop::@19
 Removing empty block loop::@21
 Removing empty block loop::@22
+Removing empty block loop::@23
+Removing empty block loop::plexShowNextYpos1_@1
 Removing empty block loop::@24
+Removing empty block loop::@25
+Removing empty block loop::@26
+Removing empty block loop::@28
 PROCEDURE MODIFY VARIABLE ANALYSIS
 plexInit modifies PLEX_SCREEN_PTR
 plexSort modifies plex_show_idx
@@ -2790,7 +1136,6 @@ Completing Phi functions...
 Completing Phi functions...
 Completing Phi functions...
 Completing Phi functions...
-Completing Phi functions...
 
 CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
 @begin: scope:[]  from
@@ -2806,8 +1151,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
   (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
   (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
-  to:@23
-@23: scope:[]  from @begin
+  to:@3
+@3: scope:[]  from @begin
   (byte) PLEX_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24
   (word[PLEX_COUNT#0]) PLEX_XPOS#0 ← { fill( PLEX_COUNT#0, 0) }
   (byte[PLEX_COUNT#0]) PLEX_YPOS#0 ← { fill( PLEX_COUNT#0, 0) }
@@ -2818,7 +1163,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
   (byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   (byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   (byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
-  to:@28
+  to:@8
 plexInit: scope:[plexInit]  from init
   (byte*) plexInit::screen#1 ← phi( init/(byte*) plexInit::screen#0 )
   (byte*) plexInit::plexSetScreen1_screen#0 ← (byte*) plexInit::screen#1
@@ -2829,12 +1174,12 @@ plexInit::plexSetScreen1: scope:[plexInit]  from plexInit
   (byte*) PLEX_SCREEN_PTR#1 ← (byte*) plexInit::plexSetScreen1_$0#0
   to:plexInit::@3
 plexInit::@3: scope:[plexInit]  from plexInit::plexSetScreen1
-  (byte*) PLEX_SCREEN_PTR#23 ← phi( plexInit::plexSetScreen1/(byte*) PLEX_SCREEN_PTR#1 )
+  (byte*) PLEX_SCREEN_PTR#22 ← phi( plexInit::plexSetScreen1/(byte*) PLEX_SCREEN_PTR#1 )
   (byte/signed word/word/dword/signed dword~) plexInit::$1 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte) plexInit::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:plexInit::@1
 plexInit::@1: scope:[plexInit]  from plexInit::@1 plexInit::@3
-  (byte*) PLEX_SCREEN_PTR#15 ← phi( plexInit::@1/(byte*) PLEX_SCREEN_PTR#15 plexInit::@3/(byte*) PLEX_SCREEN_PTR#23 )
+  (byte*) PLEX_SCREEN_PTR#15 ← phi( plexInit::@1/(byte*) PLEX_SCREEN_PTR#15 plexInit::@3/(byte*) PLEX_SCREEN_PTR#22 )
   (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::@3/(byte) plexInit::i#0 )
   *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2
   (byte) plexInit::i#1 ← (byte) plexInit::i#2 + rangenext(0,plexInit::$1)
@@ -2846,7 +1191,7 @@ plexInit::@return: scope:[plexInit]  from plexInit::@1
   (byte*) PLEX_SCREEN_PTR#2 ← (byte*) PLEX_SCREEN_PTR#8
   return 
   to:@return
-plexSort: scope:[plexSort]  from loop::@18
+plexSort: scope:[plexSort]  from loop::@20
   (byte/signed word/word/dword/signed dword~) plexSort::$0 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 2
   (byte) plexSort::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:plexSort::@1
@@ -2897,24 +1242,24 @@ plexSort::@6: scope:[plexSort]  from plexSort::@2
   (byte) plex_sprite_msb#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
   to:plexSort::@return
 plexSort::@return: scope:[plexSort]  from plexSort::@6
-  (byte) plex_sprite_msb#13 ← phi( plexSort::@6/(byte) plex_sprite_msb#1 )
-  (byte) plex_sprite_idx#12 ← phi( plexSort::@6/(byte) plex_sprite_idx#1 )
-  (byte) plex_show_idx#12 ← phi( plexSort::@6/(byte) plex_show_idx#1 )
-  (byte) plex_show_idx#2 ← (byte) plex_show_idx#12
-  (byte) plex_sprite_idx#2 ← (byte) plex_sprite_idx#12
-  (byte) plex_sprite_msb#2 ← (byte) plex_sprite_msb#13
+  (byte) plex_sprite_msb#12 ← phi( plexSort::@6/(byte) plex_sprite_msb#1 )
+  (byte) plex_sprite_idx#11 ← phi( plexSort::@6/(byte) plex_sprite_idx#1 )
+  (byte) plex_show_idx#11 ← phi( plexSort::@6/(byte) plex_show_idx#1 )
+  (byte) plex_show_idx#2 ← (byte) plex_show_idx#11
+  (byte) plex_sprite_idx#2 ← (byte) plex_sprite_idx#11
+  (byte) plex_sprite_msb#2 ← (byte) plex_sprite_msb#12
   return 
   to:@return
-plexShowSprite: scope:[plexShowSprite]  from loop::@12 loop::@8
-  (byte) plex_sprite_msb#25 ← phi( loop::@12/(byte) plex_sprite_msb#30 loop::@8/(byte) plex_sprite_msb#29 )
-  (byte*) PLEX_SCREEN_PTR#9 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#16 loop::@8/(byte*) PLEX_SCREEN_PTR#17 )
-  (byte) plex_show_idx#13 ← phi( loop::@12/(byte) plex_show_idx#24 loop::@8/(byte) plex_show_idx#25 )
-  (byte) plex_sprite_idx#13 ← phi( loop::@12/(byte) plex_sprite_idx#23 loop::@8/(byte) plex_sprite_idx#24 )
-  (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1
+plexShowSprite: scope:[plexShowSprite]  from loop::@14
+  (byte) plex_sprite_msb#23 ← phi( loop::@14/(byte) plex_sprite_msb#27 )
+  (byte*) PLEX_SCREEN_PTR#9 ← phi( loop::@14/(byte*) PLEX_SCREEN_PTR#16 )
+  (byte) plex_show_idx#12 ← phi( loop::@14/(byte) plex_show_idx#22 )
+  (byte) plex_sprite_idx#12 ← phi( loop::@14/(byte) plex_sprite_idx#21 )
+  (byte~) plexShowSprite::$0 ← (byte) plex_sprite_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte~) plexShowSprite::$0
-  *((byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13))
-  *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#13) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13))
-  (byte~) plexShowSprite::$1 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1
+  *((byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12))
+  *((byte*) PLEX_SCREEN_PTR#9 + (byte) plex_sprite_idx#12) ← *((byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12))
+  (byte~) plexShowSprite::$1 ← *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#12) << (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte) plexShowSprite::xpos_idx#0 ← (byte~) plexShowSprite::$1
   (byte~) plexShowSprite::$2 ← < *((word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0)
   *((byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2
@@ -2923,59 +1268,59 @@ plexShowSprite: scope:[plexShowSprite]  from loop::@12 loop::@8
   if((bool~) plexShowSprite::$4) goto plexShowSprite::@1
   to:plexShowSprite::@4
 plexShowSprite::@1: scope:[plexShowSprite]  from plexShowSprite
-  (byte) plex_show_idx#26 ← phi( plexShowSprite/(byte) plex_show_idx#13 )
-  (byte) plex_sprite_idx#25 ← phi( plexShowSprite/(byte) plex_sprite_idx#13 )
-  (byte) plex_sprite_msb#14 ← phi( plexShowSprite/(byte) plex_sprite_msb#25 )
-  *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14
+  (byte) plex_show_idx#23 ← phi( plexShowSprite/(byte) plex_show_idx#12 )
+  (byte) plex_sprite_idx#22 ← phi( plexShowSprite/(byte) plex_sprite_idx#12 )
+  (byte) plex_sprite_msb#13 ← phi( plexShowSprite/(byte) plex_sprite_msb#23 )
+  *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#13
   to:plexShowSprite::@2
 plexShowSprite::@4: scope:[plexShowSprite]  from plexShowSprite
-  (byte) plex_show_idx#27 ← phi( plexShowSprite/(byte) plex_show_idx#13 )
-  (byte) plex_sprite_idx#26 ← phi( plexShowSprite/(byte) plex_sprite_idx#13 )
-  (byte) plex_sprite_msb#15 ← phi( plexShowSprite/(byte) plex_sprite_msb#25 )
-  (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#15
+  (byte) plex_show_idx#24 ← phi( plexShowSprite/(byte) plex_show_idx#12 )
+  (byte) plex_sprite_idx#23 ← phi( plexShowSprite/(byte) plex_sprite_idx#12 )
+  (byte) plex_sprite_msb#14 ← phi( plexShowSprite/(byte) plex_sprite_msb#23 )
+  (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14
   *((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5
   to:plexShowSprite::@2
 plexShowSprite::@2: scope:[plexShowSprite]  from plexShowSprite::@1 plexShowSprite::@4
-  (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#14 plexShowSprite::@4/(byte) plex_sprite_msb#15 )
-  (byte) plex_show_idx#14 ← phi( plexShowSprite::@1/(byte) plex_show_idx#26 plexShowSprite::@4/(byte) plex_show_idx#27 )
-  (byte) plex_sprite_idx#14 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#25 plexShowSprite::@4/(byte) plex_sprite_idx#26 )
-  (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#14 + (byte/signed byte/word/signed word/dword/signed dword) 1
+  (byte) plex_sprite_msb#15 ← phi( plexShowSprite::@1/(byte) plex_sprite_msb#13 plexShowSprite::@4/(byte) plex_sprite_msb#14 )
+  (byte) plex_show_idx#13 ← phi( plexShowSprite::@1/(byte) plex_show_idx#23 plexShowSprite::@4/(byte) plex_show_idx#24 )
+  (byte) plex_sprite_idx#13 ← phi( plexShowSprite::@1/(byte) plex_sprite_idx#22 plexShowSprite::@4/(byte) plex_sprite_idx#23 )
+  (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1
   (byte/word/dword~) plexShowSprite::$7 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7
   (byte) plex_sprite_idx#3 ← (byte/word/dword~) plexShowSprite::$7
-  (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#14
-  (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#16 << (byte/signed byte/word/signed word/dword/signed dword) 1
+  (byte) plex_show_idx#3 ← ++ (byte) plex_show_idx#13
+  (byte) plex_sprite_msb#3 ← (byte) plex_sprite_msb#15 << (byte/signed byte/word/signed word/dword/signed dword) 1
   (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
   (bool~) plexShowSprite::$9 ← ! (bool~) plexShowSprite::$8
   if((bool~) plexShowSprite::$9) goto plexShowSprite::@3
   to:plexShowSprite::@6
 plexShowSprite::@3: scope:[plexShowSprite]  from plexShowSprite::@2
-  (byte) plex_sprite_msb#26 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 )
-  (byte) plex_show_idx#28 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 )
-  (byte) plex_sprite_idx#27 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 )
+  (byte) plex_sprite_msb#24 ← phi( plexShowSprite::@2/(byte) plex_sprite_msb#3 )
+  (byte) plex_show_idx#25 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 )
+  (byte) plex_sprite_idx#24 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 )
   to:plexShowSprite::@return
 plexShowSprite::@6: scope:[plexShowSprite]  from plexShowSprite::@2
-  (byte) plex_show_idx#29 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 )
-  (byte) plex_sprite_idx#28 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 )
+  (byte) plex_show_idx#26 ← phi( plexShowSprite::@2/(byte) plex_show_idx#3 )
+  (byte) plex_sprite_idx#25 ← phi( plexShowSprite::@2/(byte) plex_sprite_idx#3 )
   (byte) plex_sprite_msb#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1
   to:plexShowSprite::@return
 plexShowSprite::@return: scope:[plexShowSprite]  from plexShowSprite::@3 plexShowSprite::@6
-  (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@3/(byte) plex_sprite_msb#26 plexShowSprite::@6/(byte) plex_sprite_msb#4 )
-  (byte) plex_show_idx#15 ← phi( plexShowSprite::@3/(byte) plex_show_idx#28 plexShowSprite::@6/(byte) plex_show_idx#29 )
-  (byte) plex_sprite_idx#15 ← phi( plexShowSprite::@3/(byte) plex_sprite_idx#27 plexShowSprite::@6/(byte) plex_sprite_idx#28 )
-  (byte) plex_sprite_idx#4 ← (byte) plex_sprite_idx#15
-  (byte) plex_show_idx#4 ← (byte) plex_show_idx#15
-  (byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#17
+  (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@3/(byte) plex_sprite_msb#24 plexShowSprite::@6/(byte) plex_sprite_msb#4 )
+  (byte) plex_show_idx#14 ← phi( plexShowSprite::@3/(byte) plex_show_idx#25 plexShowSprite::@6/(byte) plex_show_idx#26 )
+  (byte) plex_sprite_idx#14 ← phi( plexShowSprite::@3/(byte) plex_sprite_idx#24 plexShowSprite::@6/(byte) plex_sprite_idx#25 )
+  (byte) plex_sprite_idx#4 ← (byte) plex_sprite_idx#14
+  (byte) plex_show_idx#4 ← (byte) plex_show_idx#14
+  (byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#16
   return 
   to:@return
-@28: scope:[]  from @23
-  (byte) plex_sprite_msb#38 ← phi( @23/(byte) plex_sprite_msb#0 )
-  (byte) plex_sprite_idx#38 ← phi( @23/(byte) plex_sprite_idx#0 )
-  (byte) plex_show_idx#41 ← phi( @23/(byte) plex_show_idx#0 )
-  (byte*) PLEX_SCREEN_PTR#28 ← phi( @23/(byte*) PLEX_SCREEN_PTR#0 )
+@8: scope:[]  from @3
+  (byte) plex_sprite_msb#35 ← phi( @3/(byte) plex_sprite_msb#0 )
+  (byte) plex_sprite_idx#35 ← phi( @3/(byte) plex_sprite_idx#0 )
+  (byte) plex_show_idx#38 ← phi( @3/(byte) plex_show_idx#0 )
+  (byte*) PLEX_SCREEN_PTR#25 ← phi( @3/(byte*) PLEX_SCREEN_PTR#0 )
   (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
   (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
   (byte*) YSIN#0 ← ((byte*)) (word/signed word/dword/signed dword) 8448
-  kickasm(location (byte*) YSIN#0) {{ .var min = 51
+  kickasm(location (byte*) YSIN#0) {{ .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -2986,50 +1331,50 @@ plexShowSprite::@return: scope:[plexShowSprite]  from plexShowSprite::@3 plexSho
     .for (var x=0;x<3; x++)
         .byte pic.getSinglecolorByte(x,y)
  }}
-  to:@31
-main: scope:[main]  from @31
-  (byte*) YSIN#11 ← phi( @31/(byte*) YSIN#13 )
-  (byte*) SPRITE#4 ← phi( @31/(byte*) SPRITE#5 )
-  (byte) plex_sprite_msb#33 ← phi( @31/(byte) plex_sprite_msb#32 )
-  (byte) plex_sprite_idx#33 ← phi( @31/(byte) plex_sprite_idx#32 )
-  (byte) plex_show_idx#35 ← phi( @31/(byte) plex_show_idx#34 )
-  (byte*) SCREEN#2 ← phi( @31/(byte*) SCREEN#3 )
-  (byte*) PLEX_SCREEN_PTR#18 ← phi( @31/(byte*) PLEX_SCREEN_PTR#22 )
+  to:@11
+main: scope:[main]  from @11
+  (byte*) YSIN#11 ← phi( @11/(byte*) YSIN#13 )
+  (byte*) SPRITE#4 ← phi( @11/(byte*) SPRITE#5 )
+  (byte) plex_sprite_msb#30 ← phi( @11/(byte) plex_sprite_msb#29 )
+  (byte) plex_sprite_idx#30 ← phi( @11/(byte) plex_sprite_idx#29 )
+  (byte) plex_show_idx#32 ← phi( @11/(byte) plex_show_idx#31 )
+  (byte*) SCREEN#2 ← phi( @11/(byte*) SCREEN#3 )
+  (byte*) PLEX_SCREEN_PTR#17 ← phi( @11/(byte*) PLEX_SCREEN_PTR#21 )
   asm { sei  }
   call init 
   to:main::@1
 main::@1: scope:[main]  from main
   (byte*) YSIN#9 ← phi( main/(byte*) YSIN#11 )
-  (byte) plex_sprite_msb#27 ← phi( main/(byte) plex_sprite_msb#33 )
-  (byte) plex_sprite_idx#29 ← phi( main/(byte) plex_sprite_idx#33 )
-  (byte) plex_show_idx#30 ← phi( main/(byte) plex_show_idx#35 )
+  (byte) plex_sprite_msb#25 ← phi( main/(byte) plex_sprite_msb#30 )
+  (byte) plex_sprite_idx#26 ← phi( main/(byte) plex_sprite_idx#30 )
+  (byte) plex_show_idx#27 ← phi( main/(byte) plex_show_idx#32 )
   (byte*) PLEX_SCREEN_PTR#10 ← phi( main/(byte*) PLEX_SCREEN_PTR#6 )
   (byte*) PLEX_SCREEN_PTR#3 ← (byte*) PLEX_SCREEN_PTR#10
   call loop 
   to:main::@2
 main::@2: scope:[main]  from main::@1
-  (byte*) PLEX_SCREEN_PTR#19 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 )
-  (byte) plex_sprite_msb#18 ← phi( main::@1/(byte) plex_sprite_msb#11 )
-  (byte) plex_sprite_idx#16 ← phi( main::@1/(byte) plex_sprite_idx#10 )
-  (byte) plex_show_idx#16 ← phi( main::@1/(byte) plex_show_idx#10 )
-  (byte) plex_show_idx#5 ← (byte) plex_show_idx#16
-  (byte) plex_sprite_idx#5 ← (byte) plex_sprite_idx#16
-  (byte) plex_sprite_msb#6 ← (byte) plex_sprite_msb#18
+  (byte*) PLEX_SCREEN_PTR#18 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 )
+  (byte) plex_sprite_msb#17 ← phi( main::@1/(byte) plex_sprite_msb#10 )
+  (byte) plex_sprite_idx#15 ← phi( main::@1/(byte) plex_sprite_idx#9 )
+  (byte) plex_show_idx#15 ← phi( main::@1/(byte) plex_show_idx#9 )
+  (byte) plex_show_idx#5 ← (byte) plex_show_idx#15
+  (byte) plex_sprite_idx#5 ← (byte) plex_sprite_idx#15
+  (byte) plex_sprite_msb#6 ← (byte) plex_sprite_msb#17
   to:main::@return
 main::@return: scope:[main]  from main::@2
-  (byte) plex_sprite_msb#19 ← phi( main::@2/(byte) plex_sprite_msb#6 )
-  (byte) plex_sprite_idx#17 ← phi( main::@2/(byte) plex_sprite_idx#5 )
-  (byte) plex_show_idx#17 ← phi( main::@2/(byte) plex_show_idx#5 )
-  (byte*) PLEX_SCREEN_PTR#11 ← phi( main::@2/(byte*) PLEX_SCREEN_PTR#19 )
+  (byte) plex_sprite_msb#18 ← phi( main::@2/(byte) plex_sprite_msb#6 )
+  (byte) plex_sprite_idx#16 ← phi( main::@2/(byte) plex_sprite_idx#5 )
+  (byte) plex_show_idx#16 ← phi( main::@2/(byte) plex_show_idx#5 )
+  (byte*) PLEX_SCREEN_PTR#11 ← phi( main::@2/(byte*) PLEX_SCREEN_PTR#18 )
   (byte*) PLEX_SCREEN_PTR#4 ← (byte*) PLEX_SCREEN_PTR#11
-  (byte) plex_show_idx#6 ← (byte) plex_show_idx#17
-  (byte) plex_sprite_idx#6 ← (byte) plex_sprite_idx#17
-  (byte) plex_sprite_msb#7 ← (byte) plex_sprite_msb#19
+  (byte) plex_show_idx#6 ← (byte) plex_show_idx#16
+  (byte) plex_sprite_idx#6 ← (byte) plex_sprite_idx#16
+  (byte) plex_sprite_msb#7 ← (byte) plex_sprite_msb#18
   return 
   to:@return
 init: scope:[init]  from main
   (byte*) SPRITE#3 ← phi( main/(byte*) SPRITE#4 )
-  (byte*) PLEX_SCREEN_PTR#20 ← phi( main/(byte*) PLEX_SCREEN_PTR#18 )
+  (byte*) PLEX_SCREEN_PTR#19 ← phi( main/(byte*) PLEX_SCREEN_PTR#17 )
   (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 )
   (byte~) init::$0 ← (byte) VIC_DEN#0 | (byte) VIC_RSEL#0
   (byte/word/dword~) init::$1 ← (byte~) init::$0 | (byte/signed byte/word/signed word/dword/signed dword) 3
@@ -3046,7 +1391,7 @@ init::@5: scope:[init]  from init
   (byte) init::sx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:init::@1
 init::@1: scope:[init]  from init::@1 init::@5
-  (byte*) PLEX_SCREEN_PTR#29 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#29 init::@5/(byte*) PLEX_SCREEN_PTR#5 )
+  (byte*) PLEX_SCREEN_PTR#26 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#26 init::@5/(byte*) PLEX_SCREEN_PTR#5 )
   (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init::@5/(word) init::xp#0 )
   (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init::@5/(byte) init::sx#0 )
   (byte*) SPRITE#1 ← phi( init::@1/(byte*) SPRITE#1 init::@5/(byte*) SPRITE#2 )
@@ -3061,12 +1406,12 @@ init::@1: scope:[init]  from init::@1 init::@5
   if((bool~) init::$7) goto init::@1
   to:init::@3
 init::@3: scope:[init]  from init::@1
-  (byte*) PLEX_SCREEN_PTR#24 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#29 )
+  (byte*) PLEX_SCREEN_PTR#23 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#26 )
   *((byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
   (byte) init::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:init::@2
 init::@2: scope:[init]  from init::@2 init::@3
-  (byte*) PLEX_SCREEN_PTR#21 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#21 init::@3/(byte*) PLEX_SCREEN_PTR#24 )
+  (byte*) PLEX_SCREEN_PTR#20 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#20 init::@3/(byte*) PLEX_SCREEN_PTR#23 )
   (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte) init::ss#0 )
   *((byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (byte) GREEN#0
   (byte) init::ss#1 ← (byte) init::ss#2 + rangenext(0,7)
@@ -3074,58 +1419,58 @@ init::@2: scope:[init]  from init::@2 init::@3
   if((bool~) init::$8) goto init::@2
   to:init::@return
 init::@return: scope:[init]  from init::@2
-  (byte*) PLEX_SCREEN_PTR#13 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#21 )
+  (byte*) PLEX_SCREEN_PTR#13 ← phi( init::@2/(byte*) PLEX_SCREEN_PTR#20 )
   (byte*) PLEX_SCREEN_PTR#6 ← (byte*) PLEX_SCREEN_PTR#13
   return 
   to:@return
 loop: scope:[loop]  from main::@1
   (byte*) PLEX_SCREEN_PTR#44 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 )
   (byte*) YSIN#7 ← phi( main::@1/(byte*) YSIN#9 )
-  (byte) plex_sprite_msb#34 ← phi( main::@1/(byte) plex_sprite_msb#27 )
-  (byte) plex_sprite_idx#34 ← phi( main::@1/(byte) plex_sprite_idx#29 )
-  (byte) plex_show_idx#36 ← phi( main::@1/(byte) plex_show_idx#30 )
+  (byte) plex_sprite_msb#31 ← phi( main::@1/(byte) plex_sprite_msb#25 )
+  (byte) plex_sprite_idx#31 ← phi( main::@1/(byte) plex_sprite_idx#26 )
+  (byte) plex_show_idx#33 ← phi( main::@1/(byte) plex_show_idx#27 )
   (byte) loop::sin_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:loop::@1
-loop::@1: scope:[loop]  from loop loop::@23
-  (byte*) PLEX_SCREEN_PTR#43 ← phi( loop/(byte*) PLEX_SCREEN_PTR#44 loop::@23/(byte*) PLEX_SCREEN_PTR#45 )
-  (byte*) YSIN#6 ← phi( loop/(byte*) YSIN#7 loop::@23/(byte*) YSIN#8 )
-  (byte) loop::sin_idx#8 ← phi( loop/(byte) loop::sin_idx#0 loop::@23/(byte) loop::sin_idx#9 )
-  (byte) plex_sprite_msb#31 ← phi( loop/(byte) plex_sprite_msb#34 loop::@23/(byte) plex_sprite_msb#35 )
-  (byte) plex_sprite_idx#31 ← phi( loop/(byte) plex_sprite_idx#34 loop::@23/(byte) plex_sprite_idx#35 )
-  (byte) plex_show_idx#33 ← phi( loop/(byte) plex_show_idx#36 loop::@23/(byte) plex_show_idx#37 )
+loop::@1: scope:[loop]  from loop loop::@27
+  (byte*) PLEX_SCREEN_PTR#43 ← phi( loop/(byte*) PLEX_SCREEN_PTR#44 loop::@27/(byte*) PLEX_SCREEN_PTR#45 )
+  (byte*) YSIN#6 ← phi( loop/(byte*) YSIN#7 loop::@27/(byte*) YSIN#8 )
+  (byte) loop::sin_idx#8 ← phi( loop/(byte) loop::sin_idx#0 loop::@27/(byte) loop::sin_idx#9 )
+  (byte) plex_sprite_msb#28 ← phi( loop/(byte) plex_sprite_msb#31 loop::@27/(byte) plex_sprite_msb#32 )
+  (byte) plex_sprite_idx#28 ← phi( loop/(byte) plex_sprite_idx#31 loop::@27/(byte) plex_sprite_idx#32 )
+  (byte) plex_show_idx#30 ← phi( loop/(byte) plex_show_idx#33 loop::@27/(byte) plex_show_idx#34 )
   if(true) goto loop::@2
   to:loop::@return
 loop::@2: scope:[loop]  from loop::@1
-  (byte*) PLEX_SCREEN_PTR#39 ← phi( loop::@1/(byte*) PLEX_SCREEN_PTR#43 )
-  (byte) plex_sprite_msb#44 ← phi( loop::@1/(byte) plex_sprite_msb#31 )
-  (byte) plex_sprite_idx#44 ← phi( loop::@1/(byte) plex_sprite_idx#31 )
-  (byte) plex_show_idx#47 ← phi( loop::@1/(byte) plex_show_idx#33 )
+  (byte*) PLEX_SCREEN_PTR#41 ← phi( loop::@1/(byte*) PLEX_SCREEN_PTR#43 )
+  (byte) plex_sprite_msb#41 ← phi( loop::@1/(byte) plex_sprite_msb#28 )
+  (byte) plex_sprite_idx#41 ← phi( loop::@1/(byte) plex_sprite_idx#28 )
+  (byte) plex_show_idx#46 ← phi( loop::@1/(byte) plex_show_idx#30 )
   (byte*) YSIN#4 ← phi( loop::@1/(byte*) YSIN#6 )
   (byte) loop::sin_idx#6 ← phi( loop::@1/(byte) loop::sin_idx#8 )
   to:loop::@4
 loop::@4: scope:[loop]  from loop::@2 loop::@5
-  (byte*) PLEX_SCREEN_PTR#37 ← phi( loop::@2/(byte*) PLEX_SCREEN_PTR#39 loop::@5/(byte*) PLEX_SCREEN_PTR#40 )
-  (byte) plex_sprite_msb#42 ← phi( loop::@2/(byte) plex_sprite_msb#44 loop::@5/(byte) plex_sprite_msb#45 )
-  (byte) plex_sprite_idx#42 ← phi( loop::@2/(byte) plex_sprite_idx#44 loop::@5/(byte) plex_sprite_idx#45 )
-  (byte) plex_show_idx#45 ← phi( loop::@2/(byte) plex_show_idx#47 loop::@5/(byte) plex_show_idx#48 )
+  (byte*) PLEX_SCREEN_PTR#40 ← phi( loop::@2/(byte*) PLEX_SCREEN_PTR#41 loop::@5/(byte*) PLEX_SCREEN_PTR#42 )
+  (byte) plex_sprite_msb#39 ← phi( loop::@2/(byte) plex_sprite_msb#41 loop::@5/(byte) plex_sprite_msb#42 )
+  (byte) plex_sprite_idx#39 ← phi( loop::@2/(byte) plex_sprite_idx#41 loop::@5/(byte) plex_sprite_idx#42 )
+  (byte) plex_show_idx#43 ← phi( loop::@2/(byte) plex_show_idx#46 loop::@5/(byte) plex_show_idx#47 )
   (byte*) YSIN#3 ← phi( loop::@2/(byte*) YSIN#4 loop::@5/(byte*) YSIN#5 )
   (byte) loop::sin_idx#4 ← phi( loop::@2/(byte) loop::sin_idx#6 loop::@5/(byte) loop::sin_idx#7 )
   (bool~) loop::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
   if((bool~) loop::$0) goto loop::@5
   to:loop::@6
 loop::@5: scope:[loop]  from loop::@4
-  (byte*) PLEX_SCREEN_PTR#40 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#37 )
-  (byte) plex_sprite_msb#45 ← phi( loop::@4/(byte) plex_sprite_msb#42 )
-  (byte) plex_sprite_idx#45 ← phi( loop::@4/(byte) plex_sprite_idx#42 )
-  (byte) plex_show_idx#48 ← phi( loop::@4/(byte) plex_show_idx#45 )
+  (byte*) PLEX_SCREEN_PTR#42 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#40 )
+  (byte) plex_sprite_msb#42 ← phi( loop::@4/(byte) plex_sprite_msb#39 )
+  (byte) plex_sprite_idx#42 ← phi( loop::@4/(byte) plex_sprite_idx#39 )
+  (byte) plex_show_idx#47 ← phi( loop::@4/(byte) plex_show_idx#43 )
   (byte*) YSIN#5 ← phi( loop::@4/(byte*) YSIN#3 )
   (byte) loop::sin_idx#7 ← phi( loop::@4/(byte) loop::sin_idx#4 )
   to:loop::@4
 loop::@6: scope:[loop]  from loop::@4
-  (byte*) PLEX_SCREEN_PTR#35 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#37 )
-  (byte) plex_sprite_msb#39 ← phi( loop::@4/(byte) plex_sprite_msb#42 )
-  (byte) plex_sprite_idx#39 ← phi( loop::@4/(byte) plex_sprite_idx#42 )
-  (byte) plex_show_idx#42 ← phi( loop::@4/(byte) plex_show_idx#45 )
+  (byte*) PLEX_SCREEN_PTR#39 ← phi( loop::@4/(byte*) PLEX_SCREEN_PTR#40 )
+  (byte) plex_sprite_msb#36 ← phi( loop::@4/(byte) plex_sprite_msb#39 )
+  (byte) plex_sprite_idx#36 ← phi( loop::@4/(byte) plex_sprite_idx#39 )
+  (byte) plex_show_idx#39 ← phi( loop::@4/(byte) plex_show_idx#43 )
   (byte*) YSIN#2 ← phi( loop::@4/(byte*) YSIN#3 )
   (byte) loop::sin_idx#2 ← phi( loop::@4/(byte) loop::sin_idx#4 )
   *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
@@ -3134,10 +1479,10 @@ loop::@6: scope:[loop]  from loop::@4
   (byte) loop::sy#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
   to:loop::@7
 loop::@7: scope:[loop]  from loop::@6 loop::@7
-  (byte*) PLEX_SCREEN_PTR#33 ← phi( loop::@6/(byte*) PLEX_SCREEN_PTR#35 loop::@7/(byte*) PLEX_SCREEN_PTR#33 )
-  (byte) plex_sprite_msb#36 ← phi( loop::@6/(byte) plex_sprite_msb#39 loop::@7/(byte) plex_sprite_msb#36 )
-  (byte) plex_sprite_idx#36 ← phi( loop::@6/(byte) plex_sprite_idx#39 loop::@7/(byte) plex_sprite_idx#36 )
-  (byte) plex_show_idx#38 ← phi( loop::@6/(byte) plex_show_idx#42 loop::@7/(byte) plex_show_idx#38 )
+  (byte*) PLEX_SCREEN_PTR#38 ← phi( loop::@6/(byte*) PLEX_SCREEN_PTR#39 loop::@7/(byte*) PLEX_SCREEN_PTR#38 )
+  (byte) plex_sprite_msb#33 ← phi( loop::@6/(byte) plex_sprite_msb#36 loop::@7/(byte) plex_sprite_msb#33 )
+  (byte) plex_sprite_idx#33 ← phi( loop::@6/(byte) plex_sprite_idx#36 loop::@7/(byte) plex_sprite_idx#33 )
+  (byte) plex_show_idx#35 ← phi( loop::@6/(byte) plex_show_idx#39 loop::@7/(byte) plex_show_idx#35 )
   (byte) loop::sin_idx#5 ← phi( loop::@6/(byte) loop::sin_idx#2 loop::@7/(byte) loop::sin_idx#5 )
   (byte) loop::sy#2 ← phi( loop::@6/(byte) loop::sy#0 loop::@7/(byte) loop::sy#1 )
   (byte) loop::y_idx#2 ← phi( loop::@6/(byte) loop::y_idx#0 loop::@7/(byte) loop::y_idx#1 )
@@ -3147,204 +1492,197 @@ loop::@7: scope:[loop]  from loop::@6 loop::@7
   (byte) loop::sy#1 ← (byte) loop::sy#2 + rangenext(0,loop::$1)
   (bool~) loop::$2 ← (byte) loop::sy#1 != rangelast(0,loop::$1)
   if((bool~) loop::$2) goto loop::@7
-  to:loop::@18
-loop::@18: scope:[loop]  from loop::@7
+  to:loop::@20
+loop::@20: scope:[loop]  from loop::@7
   (byte*) YSIN#24 ← phi( loop::@7/(byte*) YSIN#1 )
-  (byte*) PLEX_SCREEN_PTR#30 ← phi( loop::@7/(byte*) PLEX_SCREEN_PTR#33 )
-  (byte) plex_sprite_msb#28 ← phi( loop::@7/(byte) plex_sprite_msb#36 )
-  (byte) plex_sprite_idx#30 ← phi( loop::@7/(byte) plex_sprite_idx#36 )
-  (byte) plex_show_idx#31 ← phi( loop::@7/(byte) plex_show_idx#38 )
+  (byte*) PLEX_SCREEN_PTR#37 ← phi( loop::@7/(byte*) PLEX_SCREEN_PTR#38 )
+  (byte) plex_sprite_msb#26 ← phi( loop::@7/(byte) plex_sprite_msb#33 )
+  (byte) plex_sprite_idx#27 ← phi( loop::@7/(byte) plex_sprite_idx#33 )
+  (byte) plex_show_idx#28 ← phi( loop::@7/(byte) plex_show_idx#35 )
   (byte) loop::sin_idx#3 ← phi( loop::@7/(byte) loop::sin_idx#5 )
   (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
   *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
   call plexSort 
-  to:loop::@26
-loop::@26: scope:[loop]  from loop::@18
-  (byte*) YSIN#23 ← phi( loop::@18/(byte*) YSIN#24 )
-  (byte) loop::sin_idx#21 ← phi( loop::@18/(byte) loop::sin_idx#1 )
-  (byte*) PLEX_SCREEN_PTR#25 ← phi( loop::@18/(byte*) PLEX_SCREEN_PTR#30 )
-  (byte) plex_sprite_msb#20 ← phi( loop::@18/(byte) plex_sprite_msb#2 )
-  (byte) plex_sprite_idx#18 ← phi( loop::@18/(byte) plex_sprite_idx#2 )
-  (byte) plex_show_idx#18 ← phi( loop::@18/(byte) plex_show_idx#2 )
-  (byte) plex_show_idx#7 ← (byte) plex_show_idx#18
-  (byte) plex_sprite_idx#7 ← (byte) plex_sprite_idx#18
-  (byte) plex_sprite_msb#8 ← (byte) plex_sprite_msb#20
-  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
-  (byte) loop::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+  to:loop::@30
+loop::@30: scope:[loop]  from loop::@20
+  (byte*) YSIN#22 ← phi( loop::@20/(byte*) YSIN#24 )
+  (byte) loop::sin_idx#20 ← phi( loop::@20/(byte) loop::sin_idx#1 )
+  (byte*) PLEX_SCREEN_PTR#35 ← phi( loop::@20/(byte*) PLEX_SCREEN_PTR#37 )
+  (byte) plex_sprite_msb#19 ← phi( loop::@20/(byte) plex_sprite_msb#2 )
+  (byte) plex_sprite_idx#17 ← phi( loop::@20/(byte) plex_sprite_idx#2 )
+  (byte) plex_show_idx#17 ← phi( loop::@20/(byte) plex_show_idx#2 )
+  (byte) plex_show_idx#7 ← (byte) plex_show_idx#17
+  (byte) plex_sprite_idx#7 ← (byte) plex_sprite_idx#17
+  (byte) plex_sprite_msb#8 ← (byte) plex_sprite_msb#19
+  *((byte*) BORDERCOL#0) ← (byte) BLACK#0
   to:loop::@8
-loop::@8: scope:[loop]  from loop::@26 loop::@27
-  (byte*) YSIN#22 ← phi( loop::@26/(byte*) YSIN#23 loop::@27/(byte*) YSIN#21 )
-  (byte) loop::sin_idx#20 ← phi( loop::@26/(byte) loop::sin_idx#21 loop::@27/(byte) loop::sin_idx#19 )
-  (byte) loop::ss#6 ← phi( loop::@26/(byte) loop::ss#0 loop::@27/(byte) loop::ss#1 )
-  (byte) plex_sprite_msb#29 ← phi( loop::@26/(byte) plex_sprite_msb#8 loop::@27/(byte) plex_sprite_msb#9 )
-  (byte*) PLEX_SCREEN_PTR#17 ← phi( loop::@26/(byte*) PLEX_SCREEN_PTR#25 loop::@27/(byte*) PLEX_SCREEN_PTR#26 )
-  (byte) plex_show_idx#25 ← phi( loop::@26/(byte) plex_show_idx#7 loop::@27/(byte) plex_show_idx#8 )
-  (byte) plex_sprite_idx#24 ← phi( loop::@26/(byte) plex_sprite_idx#7 loop::@27/(byte) plex_sprite_idx#8 )
-  call plexShowSprite 
-  to:loop::@27
-loop::@27: scope:[loop]  from loop::@8
-  (byte*) YSIN#21 ← phi( loop::@8/(byte*) YSIN#22 )
-  (byte) loop::sin_idx#19 ← phi( loop::@8/(byte) loop::sin_idx#20 )
-  (byte*) PLEX_SCREEN_PTR#26 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#17 )
-  (byte) loop::ss#4 ← phi( loop::@8/(byte) loop::ss#6 )
-  (byte) plex_sprite_msb#21 ← phi( loop::@8/(byte) plex_sprite_msb#5 )
-  (byte) plex_show_idx#19 ← phi( loop::@8/(byte) plex_show_idx#4 )
-  (byte) plex_sprite_idx#19 ← phi( loop::@8/(byte) plex_sprite_idx#4 )
-  (byte) plex_sprite_idx#8 ← (byte) plex_sprite_idx#19
-  (byte) plex_show_idx#8 ← (byte) plex_show_idx#19
-  (byte) plex_sprite_msb#9 ← (byte) plex_sprite_msb#21
-  (byte) loop::ss#1 ← (byte) loop::ss#4 + rangenext(0,7)
-  (bool~) loop::$5 ← (byte) loop::ss#1 != rangelast(0,7)
-  if((bool~) loop::$5) goto loop::@8
-  to:loop::@19
-loop::@19: scope:[loop]  from loop::@27
-  (byte*) YSIN#20 ← phi( loop::@27/(byte*) YSIN#21 )
-  (byte) loop::sin_idx#18 ← phi( loop::@27/(byte) loop::sin_idx#19 )
-  (byte) plex_sprite_msb#48 ← phi( loop::@27/(byte) plex_sprite_msb#9 )
-  (byte*) PLEX_SCREEN_PTR#41 ← phi( loop::@27/(byte*) PLEX_SCREEN_PTR#26 )
-  (byte) plex_sprite_idx#48 ← phi( loop::@27/(byte) plex_sprite_idx#8 )
-  (byte) plex_show_idx#39 ← phi( loop::@27/(byte) plex_show_idx#8 )
+loop::@8: scope:[loop]  from loop::@30 loop::@9
+  (byte*) YSIN#21 ← phi( loop::@30/(byte*) YSIN#22 loop::@9/(byte*) YSIN#23 )
+  (byte) loop::sin_idx#19 ← phi( loop::@30/(byte) loop::sin_idx#20 loop::@9/(byte) loop::sin_idx#21 )
+  (byte) plex_sprite_msb#46 ← phi( loop::@30/(byte) plex_sprite_msb#8 loop::@9/(byte) plex_sprite_msb#47 )
+  (byte*) PLEX_SCREEN_PTR#34 ← phi( loop::@30/(byte*) PLEX_SCREEN_PTR#35 loop::@9/(byte*) PLEX_SCREEN_PTR#36 )
+  (byte) plex_sprite_idx#46 ← phi( loop::@30/(byte) plex_sprite_idx#7 loop::@9/(byte) plex_sprite_idx#47 )
+  (byte) plex_show_idx#40 ← phi( loop::@30/(byte) plex_show_idx#7 loop::@9/(byte) plex_show_idx#44 )
+  (byte~) loop::$4 ← *((byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128
+  (bool~) loop::$5 ← (byte~) loop::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+  if((bool~) loop::$5) goto loop::@9
+  to:loop::@10
+loop::@9: scope:[loop]  from loop::@8
+  (byte*) YSIN#23 ← phi( loop::@8/(byte*) YSIN#21 )
+  (byte) loop::sin_idx#21 ← phi( loop::@8/(byte) loop::sin_idx#19 )
+  (byte) plex_sprite_msb#47 ← phi( loop::@8/(byte) plex_sprite_msb#46 )
+  (byte*) PLEX_SCREEN_PTR#36 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#34 )
+  (byte) plex_sprite_idx#47 ← phi( loop::@8/(byte) plex_sprite_idx#46 )
+  (byte) plex_show_idx#44 ← phi( loop::@8/(byte) plex_show_idx#40 )
+  to:loop::@8
+loop::@10: scope:[loop]  from loop::@8
+  (byte*) YSIN#20 ← phi( loop::@8/(byte*) YSIN#21 )
+  (byte) loop::sin_idx#18 ← phi( loop::@8/(byte) loop::sin_idx#19 )
+  (byte) plex_sprite_msb#45 ← phi( loop::@8/(byte) plex_sprite_msb#46 )
+  (byte*) PLEX_SCREEN_PTR#32 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#34 )
+  (byte) plex_sprite_idx#45 ← phi( loop::@8/(byte) plex_sprite_idx#46 )
+  (byte) plex_show_idx#36 ← phi( loop::@8/(byte) plex_show_idx#40 )
   (byte/signed word/word/dword/signed dword~) loop::$6 ← (byte) PLEX_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 1
-  (byte) loop::ss#2 ← (byte/signed byte/word/signed word/dword/signed dword) 8
-  to:loop::@9
-loop::@9: scope:[loop]  from loop::@19 loop::@28
-  (byte*) YSIN#19 ← phi( loop::@19/(byte*) YSIN#20 loop::@28/(byte*) YSIN#10 )
-  (byte) loop::sin_idx#17 ← phi( loop::@19/(byte) loop::sin_idx#18 loop::@28/(byte) loop::sin_idx#10 )
-  (byte) loop::ss#13 ← phi( loop::@19/(byte) loop::ss#2 loop::@28/(byte) loop::ss#3 )
-  (byte) plex_sprite_msb#47 ← phi( loop::@19/(byte) plex_sprite_msb#48 loop::@28/(byte) plex_sprite_msb#10 )
-  (byte*) PLEX_SCREEN_PTR#38 ← phi( loop::@19/(byte*) PLEX_SCREEN_PTR#41 loop::@28/(byte*) PLEX_SCREEN_PTR#42 )
-  (byte) plex_sprite_idx#47 ← phi( loop::@19/(byte) plex_sprite_idx#48 loop::@28/(byte) plex_sprite_idx#9 )
-  (byte) plex_show_idx#32 ← phi( loop::@19/(byte) plex_show_idx#39 loop::@28/(byte) plex_show_idx#9 )
+  (byte) loop::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+  to:loop::@11
+loop::@11: scope:[loop]  from loop::@10 loop::@31
+  (byte*) YSIN#19 ← phi( loop::@10/(byte*) YSIN#20 loop::@31/(byte*) YSIN#10 )
+  (byte) loop::sin_idx#17 ← phi( loop::@10/(byte) loop::sin_idx#18 loop::@31/(byte) loop::sin_idx#10 )
+  (byte) loop::ss#9 ← phi( loop::@10/(byte) loop::ss#0 loop::@31/(byte) loop::ss#1 )
+  (byte) plex_sprite_msb#44 ← phi( loop::@10/(byte) plex_sprite_msb#45 loop::@31/(byte) plex_sprite_msb#9 )
+  (byte*) PLEX_SCREEN_PTR#31 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#32 loop::@31/(byte*) PLEX_SCREEN_PTR#33 )
+  (byte) plex_sprite_idx#44 ← phi( loop::@10/(byte) plex_sprite_idx#45 loop::@31/(byte) plex_sprite_idx#8 )
+  (byte) plex_show_idx#29 ← phi( loop::@10/(byte) plex_show_idx#36 loop::@31/(byte) plex_show_idx#8 )
   *((byte*) BORDERCOL#0) ← (byte) BLACK#0
   to:loop::plexShowNextYpos1
-loop::plexShowNextYpos1: scope:[loop]  from loop::@9
-  (byte*) YSIN#18 ← phi( loop::@9/(byte*) YSIN#19 )
-  (byte) loop::sin_idx#16 ← phi( loop::@9/(byte) loop::sin_idx#17 )
-  (byte) loop::ss#12 ← phi( loop::@9/(byte) loop::ss#13 )
-  (byte) plex_sprite_msb#46 ← phi( loop::@9/(byte) plex_sprite_msb#47 )
-  (byte*) PLEX_SCREEN_PTR#36 ← phi( loop::@9/(byte*) PLEX_SCREEN_PTR#38 )
-  (byte) plex_sprite_idx#46 ← phi( loop::@9/(byte) plex_sprite_idx#47 )
-  (byte) plex_show_idx#20 ← phi( loop::@9/(byte) plex_show_idx#32 )
-  (byte) loop::plexShowNextYpos1_return#0 ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#20))
+loop::plexShowNextYpos1: scope:[loop]  from loop::@11
+  (byte*) YSIN#18 ← phi( loop::@11/(byte*) YSIN#19 )
+  (byte) loop::sin_idx#16 ← phi( loop::@11/(byte) loop::sin_idx#17 )
+  (byte) loop::ss#8 ← phi( loop::@11/(byte) loop::ss#9 )
+  (byte) plex_sprite_msb#43 ← phi( loop::@11/(byte) plex_sprite_msb#44 )
+  (byte*) PLEX_SCREEN_PTR#30 ← phi( loop::@11/(byte*) PLEX_SCREEN_PTR#31 )
+  (byte) plex_sprite_idx#43 ← phi( loop::@11/(byte) plex_sprite_idx#44 )
+  (byte) plex_show_idx#18 ← phi( loop::@11/(byte) plex_show_idx#29 )
+  (byte) loop::plexShowNextYpos1_return#0 ← *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18))
   to:loop::plexShowNextYpos1_@return
 loop::plexShowNextYpos1_@return: scope:[loop]  from loop::plexShowNextYpos1
   (byte*) YSIN#17 ← phi( loop::plexShowNextYpos1/(byte*) YSIN#18 )
   (byte) loop::sin_idx#15 ← phi( loop::plexShowNextYpos1/(byte) loop::sin_idx#16 )
-  (byte) loop::ss#11 ← phi( loop::plexShowNextYpos1/(byte) loop::ss#12 )
-  (byte) plex_sprite_msb#43 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_msb#46 )
-  (byte*) PLEX_SCREEN_PTR#34 ← phi( loop::plexShowNextYpos1/(byte*) PLEX_SCREEN_PTR#36 )
-  (byte) plex_show_idx#46 ← phi( loop::plexShowNextYpos1/(byte) plex_show_idx#20 )
-  (byte) plex_sprite_idx#43 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_idx#46 )
+  (byte) loop::ss#7 ← phi( loop::plexShowNextYpos1/(byte) loop::ss#8 )
+  (byte) plex_sprite_msb#40 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_msb#43 )
+  (byte*) PLEX_SCREEN_PTR#29 ← phi( loop::plexShowNextYpos1/(byte*) PLEX_SCREEN_PTR#30 )
+  (byte) plex_show_idx#45 ← phi( loop::plexShowNextYpos1/(byte) plex_show_idx#18 )
+  (byte) plex_sprite_idx#40 ← phi( loop::plexShowNextYpos1/(byte) plex_sprite_idx#43 )
   (byte) loop::plexShowNextYpos1_return#2 ← phi( loop::plexShowNextYpos1/(byte) loop::plexShowNextYpos1_return#0 )
   (byte) loop::plexShowNextYpos1_return#1 ← (byte) loop::plexShowNextYpos1_return#2
-  to:loop::@25
-loop::@25: scope:[loop]  from loop::plexShowNextYpos1_@return
+  to:loop::@29
+loop::@29: scope:[loop]  from loop::plexShowNextYpos1_@return
   (byte*) YSIN#16 ← phi( loop::plexShowNextYpos1_@return/(byte*) YSIN#17 )
   (byte) loop::sin_idx#14 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::sin_idx#15 )
-  (byte) loop::ss#10 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::ss#11 )
-  (byte) plex_sprite_msb#41 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_msb#43 )
-  (byte*) PLEX_SCREEN_PTR#32 ← phi( loop::plexShowNextYpos1_@return/(byte*) PLEX_SCREEN_PTR#34 )
-  (byte) plex_show_idx#44 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_show_idx#46 )
-  (byte) plex_sprite_idx#41 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_idx#43 )
+  (byte) loop::ss#6 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::ss#7 )
+  (byte) plex_sprite_msb#38 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_msb#40 )
+  (byte*) PLEX_SCREEN_PTR#28 ← phi( loop::plexShowNextYpos1_@return/(byte*) PLEX_SCREEN_PTR#29 )
+  (byte) plex_show_idx#42 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_show_idx#45 )
+  (byte) plex_sprite_idx#38 ← phi( loop::plexShowNextYpos1_@return/(byte) plex_sprite_idx#40 )
   (byte) loop::plexShowNextYpos1_return#3 ← phi( loop::plexShowNextYpos1_@return/(byte) loop::plexShowNextYpos1_return#1 )
   (byte~) loop::$7 ← (byte) loop::plexShowNextYpos1_return#3
   (byte/signed word/word/dword/signed dword~) loop::$8 ← (byte~) loop::$7 - (byte/signed byte/word/signed word/dword/signed dword) 8
   (byte) loop::rasterY#0 ← (byte/signed word/word/dword/signed dword~) loop::$8
-  to:loop::@10
-loop::@10: scope:[loop]  from loop::@11 loop::@25
-  (byte*) YSIN#14 ← phi( loop::@11/(byte*) YSIN#15 loop::@25/(byte*) YSIN#16 )
-  (byte) loop::sin_idx#12 ← phi( loop::@11/(byte) loop::sin_idx#13 loop::@25/(byte) loop::sin_idx#14 )
-  (byte) loop::ss#8 ← phi( loop::@11/(byte) loop::ss#9 loop::@25/(byte) loop::ss#10 )
-  (byte) plex_sprite_msb#37 ← phi( loop::@11/(byte) plex_sprite_msb#40 loop::@25/(byte) plex_sprite_msb#41 )
-  (byte*) PLEX_SCREEN_PTR#27 ← phi( loop::@11/(byte*) PLEX_SCREEN_PTR#31 loop::@25/(byte*) PLEX_SCREEN_PTR#32 )
-  (byte) plex_show_idx#40 ← phi( loop::@11/(byte) plex_show_idx#43 loop::@25/(byte) plex_show_idx#44 )
-  (byte) plex_sprite_idx#37 ← phi( loop::@11/(byte) plex_sprite_idx#40 loop::@25/(byte) plex_sprite_idx#41 )
-  (byte) loop::rasterY#1 ← phi( loop::@11/(byte) loop::rasterY#2 loop::@25/(byte) loop::rasterY#0 )
-  (bool~) loop::$9 ← *((byte*) RASTER#0) < (byte) loop::rasterY#1
-  if((bool~) loop::$9) goto loop::@11
   to:loop::@12
-loop::@11: scope:[loop]  from loop::@10
-  (byte*) YSIN#15 ← phi( loop::@10/(byte*) YSIN#14 )
-  (byte) loop::sin_idx#13 ← phi( loop::@10/(byte) loop::sin_idx#12 )
-  (byte) loop::ss#9 ← phi( loop::@10/(byte) loop::ss#8 )
-  (byte) plex_sprite_msb#40 ← phi( loop::@10/(byte) plex_sprite_msb#37 )
-  (byte*) PLEX_SCREEN_PTR#31 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#27 )
-  (byte) plex_show_idx#43 ← phi( loop::@10/(byte) plex_show_idx#40 )
-  (byte) plex_sprite_idx#40 ← phi( loop::@10/(byte) plex_sprite_idx#37 )
-  (byte) loop::rasterY#2 ← phi( loop::@10/(byte) loop::rasterY#1 )
-  to:loop::@10
-loop::@12: scope:[loop]  from loop::@10
-  (byte*) YSIN#12 ← phi( loop::@10/(byte*) YSIN#14 )
-  (byte) loop::sin_idx#11 ← phi( loop::@10/(byte) loop::sin_idx#12 )
-  (byte) loop::ss#7 ← phi( loop::@10/(byte) loop::ss#8 )
-  (byte) plex_sprite_msb#30 ← phi( loop::@10/(byte) plex_sprite_msb#37 )
-  (byte*) PLEX_SCREEN_PTR#16 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#27 )
-  (byte) plex_show_idx#24 ← phi( loop::@10/(byte) plex_show_idx#40 )
-  (byte) plex_sprite_idx#23 ← phi( loop::@10/(byte) plex_sprite_idx#37 )
+loop::@12: scope:[loop]  from loop::@13 loop::@29
+  (byte*) YSIN#14 ← phi( loop::@13/(byte*) YSIN#15 loop::@29/(byte*) YSIN#16 )
+  (byte) loop::sin_idx#12 ← phi( loop::@13/(byte) loop::sin_idx#13 loop::@29/(byte) loop::sin_idx#14 )
+  (byte) loop::ss#4 ← phi( loop::@13/(byte) loop::ss#5 loop::@29/(byte) loop::ss#6 )
+  (byte) plex_sprite_msb#34 ← phi( loop::@13/(byte) plex_sprite_msb#37 loop::@29/(byte) plex_sprite_msb#38 )
+  (byte*) PLEX_SCREEN_PTR#24 ← phi( loop::@13/(byte*) PLEX_SCREEN_PTR#27 loop::@29/(byte*) PLEX_SCREEN_PTR#28 )
+  (byte) plex_show_idx#37 ← phi( loop::@13/(byte) plex_show_idx#41 loop::@29/(byte) plex_show_idx#42 )
+  (byte) plex_sprite_idx#34 ← phi( loop::@13/(byte) plex_sprite_idx#37 loop::@29/(byte) plex_sprite_idx#38 )
+  (byte) loop::rasterY#1 ← phi( loop::@13/(byte) loop::rasterY#2 loop::@29/(byte) loop::rasterY#0 )
+  (bool~) loop::$9 ← *((byte*) RASTER#0) < (byte) loop::rasterY#1
+  if((bool~) loop::$9) goto loop::@13
+  to:loop::@14
+loop::@13: scope:[loop]  from loop::@12
+  (byte*) YSIN#15 ← phi( loop::@12/(byte*) YSIN#14 )
+  (byte) loop::sin_idx#13 ← phi( loop::@12/(byte) loop::sin_idx#12 )
+  (byte) loop::ss#5 ← phi( loop::@12/(byte) loop::ss#4 )
+  (byte) plex_sprite_msb#37 ← phi( loop::@12/(byte) plex_sprite_msb#34 )
+  (byte*) PLEX_SCREEN_PTR#27 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#24 )
+  (byte) plex_show_idx#41 ← phi( loop::@12/(byte) plex_show_idx#37 )
+  (byte) plex_sprite_idx#37 ← phi( loop::@12/(byte) plex_sprite_idx#34 )
+  (byte) loop::rasterY#2 ← phi( loop::@12/(byte) loop::rasterY#1 )
+  to:loop::@12
+loop::@14: scope:[loop]  from loop::@12
+  (byte*) YSIN#12 ← phi( loop::@12/(byte*) YSIN#14 )
+  (byte) loop::sin_idx#11 ← phi( loop::@12/(byte) loop::sin_idx#12 )
+  (byte) loop::ss#3 ← phi( loop::@12/(byte) loop::ss#4 )
+  (byte) plex_sprite_msb#27 ← phi( loop::@12/(byte) plex_sprite_msb#34 )
+  (byte*) PLEX_SCREEN_PTR#16 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#24 )
+  (byte) plex_show_idx#22 ← phi( loop::@12/(byte) plex_show_idx#37 )
+  (byte) plex_sprite_idx#21 ← phi( loop::@12/(byte) plex_sprite_idx#34 )
   *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
   call plexShowSprite 
-  to:loop::@28
-loop::@28: scope:[loop]  from loop::@12
-  (byte*) PLEX_SCREEN_PTR#42 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#16 )
-  (byte*) YSIN#10 ← phi( loop::@12/(byte*) YSIN#12 )
-  (byte) loop::sin_idx#10 ← phi( loop::@12/(byte) loop::sin_idx#11 )
-  (byte) loop::ss#5 ← phi( loop::@12/(byte) loop::ss#7 )
-  (byte) plex_sprite_msb#22 ← phi( loop::@12/(byte) plex_sprite_msb#5 )
-  (byte) plex_show_idx#21 ← phi( loop::@12/(byte) plex_show_idx#4 )
-  (byte) plex_sprite_idx#20 ← phi( loop::@12/(byte) plex_sprite_idx#4 )
-  (byte) plex_sprite_idx#9 ← (byte) plex_sprite_idx#20
-  (byte) plex_show_idx#9 ← (byte) plex_show_idx#21
-  (byte) plex_sprite_msb#10 ← (byte) plex_sprite_msb#22
-  (byte) loop::ss#3 ← (byte) loop::ss#5 + rangenext(8,loop::$6)
-  (bool~) loop::$11 ← (byte) loop::ss#3 != rangelast(8,loop::$6)
-  if((bool~) loop::$11) goto loop::@9
-  to:loop::@23
-loop::@23: scope:[loop]  from loop::@28
-  (byte*) PLEX_SCREEN_PTR#45 ← phi( loop::@28/(byte*) PLEX_SCREEN_PTR#42 )
-  (byte*) YSIN#8 ← phi( loop::@28/(byte*) YSIN#10 )
-  (byte) loop::sin_idx#9 ← phi( loop::@28/(byte) loop::sin_idx#10 )
-  (byte) plex_sprite_msb#35 ← phi( loop::@28/(byte) plex_sprite_msb#10 )
-  (byte) plex_sprite_idx#35 ← phi( loop::@28/(byte) plex_sprite_idx#9 )
-  (byte) plex_show_idx#37 ← phi( loop::@28/(byte) plex_show_idx#9 )
+  to:loop::@31
+loop::@31: scope:[loop]  from loop::@14
+  (byte*) PLEX_SCREEN_PTR#33 ← phi( loop::@14/(byte*) PLEX_SCREEN_PTR#16 )
+  (byte*) YSIN#10 ← phi( loop::@14/(byte*) YSIN#12 )
+  (byte) loop::sin_idx#10 ← phi( loop::@14/(byte) loop::sin_idx#11 )
+  (byte) loop::ss#2 ← phi( loop::@14/(byte) loop::ss#3 )
+  (byte) plex_sprite_msb#20 ← phi( loop::@14/(byte) plex_sprite_msb#5 )
+  (byte) plex_show_idx#19 ← phi( loop::@14/(byte) plex_show_idx#4 )
+  (byte) plex_sprite_idx#18 ← phi( loop::@14/(byte) plex_sprite_idx#4 )
+  (byte) plex_sprite_idx#8 ← (byte) plex_sprite_idx#18
+  (byte) plex_show_idx#8 ← (byte) plex_show_idx#19
+  (byte) plex_sprite_msb#9 ← (byte) plex_sprite_msb#20
+  (byte) loop::ss#1 ← (byte) loop::ss#2 + rangenext(0,loop::$6)
+  (bool~) loop::$11 ← (byte) loop::ss#1 != rangelast(0,loop::$6)
+  if((bool~) loop::$11) goto loop::@11
+  to:loop::@27
+loop::@27: scope:[loop]  from loop::@31
+  (byte*) PLEX_SCREEN_PTR#45 ← phi( loop::@31/(byte*) PLEX_SCREEN_PTR#33 )
+  (byte*) YSIN#8 ← phi( loop::@31/(byte*) YSIN#10 )
+  (byte) loop::sin_idx#9 ← phi( loop::@31/(byte) loop::sin_idx#10 )
+  (byte) plex_sprite_msb#32 ← phi( loop::@31/(byte) plex_sprite_msb#9 )
+  (byte) plex_sprite_idx#32 ← phi( loop::@31/(byte) plex_sprite_idx#8 )
+  (byte) plex_show_idx#34 ← phi( loop::@31/(byte) plex_show_idx#8 )
   *((byte*) BORDERCOL#0) ← (byte) BLACK#0
   to:loop::@1
 loop::@return: scope:[loop]  from loop::@1
-  (byte) plex_sprite_msb#23 ← phi( loop::@1/(byte) plex_sprite_msb#31 )
-  (byte) plex_sprite_idx#21 ← phi( loop::@1/(byte) plex_sprite_idx#31 )
-  (byte) plex_show_idx#22 ← phi( loop::@1/(byte) plex_show_idx#33 )
-  (byte) plex_show_idx#10 ← (byte) plex_show_idx#22
-  (byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#21
-  (byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#23
+  (byte) plex_sprite_msb#21 ← phi( loop::@1/(byte) plex_sprite_msb#28 )
+  (byte) plex_sprite_idx#19 ← phi( loop::@1/(byte) plex_sprite_idx#28 )
+  (byte) plex_show_idx#20 ← phi( loop::@1/(byte) plex_show_idx#30 )
+  (byte) plex_show_idx#9 ← (byte) plex_show_idx#20
+  (byte) plex_sprite_idx#9 ← (byte) plex_sprite_idx#19
+  (byte) plex_sprite_msb#10 ← (byte) plex_sprite_msb#21
   return 
   to:@return
-@31: scope:[]  from @28
-  (byte*) YSIN#13 ← phi( @28/(byte*) YSIN#0 )
-  (byte*) SPRITE#5 ← phi( @28/(byte*) SPRITE#0 )
-  (byte*) SCREEN#3 ← phi( @28/(byte*) SCREEN#0 )
-  (byte) plex_sprite_msb#32 ← phi( @28/(byte) plex_sprite_msb#38 )
-  (byte) plex_sprite_idx#32 ← phi( @28/(byte) plex_sprite_idx#38 )
-  (byte) plex_show_idx#34 ← phi( @28/(byte) plex_show_idx#41 )
-  (byte*) PLEX_SCREEN_PTR#22 ← phi( @28/(byte*) PLEX_SCREEN_PTR#28 )
+@11: scope:[]  from @8
+  (byte*) YSIN#13 ← phi( @8/(byte*) YSIN#0 )
+  (byte*) SPRITE#5 ← phi( @8/(byte*) SPRITE#0 )
+  (byte*) SCREEN#3 ← phi( @8/(byte*) SCREEN#0 )
+  (byte) plex_sprite_msb#29 ← phi( @8/(byte) plex_sprite_msb#35 )
+  (byte) plex_sprite_idx#29 ← phi( @8/(byte) plex_sprite_idx#35 )
+  (byte) plex_show_idx#31 ← phi( @8/(byte) plex_show_idx#38 )
+  (byte*) PLEX_SCREEN_PTR#21 ← phi( @8/(byte*) PLEX_SCREEN_PTR#25 )
   call main 
-  to:@32
-@32: scope:[]  from @31
-  (byte) plex_sprite_msb#24 ← phi( @31/(byte) plex_sprite_msb#7 )
-  (byte) plex_sprite_idx#22 ← phi( @31/(byte) plex_sprite_idx#6 )
-  (byte) plex_show_idx#23 ← phi( @31/(byte) plex_show_idx#6 )
-  (byte*) PLEX_SCREEN_PTR#14 ← phi( @31/(byte*) PLEX_SCREEN_PTR#4 )
+  to:@12
+@12: scope:[]  from @11
+  (byte) plex_sprite_msb#22 ← phi( @11/(byte) plex_sprite_msb#7 )
+  (byte) plex_sprite_idx#20 ← phi( @11/(byte) plex_sprite_idx#6 )
+  (byte) plex_show_idx#21 ← phi( @11/(byte) plex_show_idx#6 )
+  (byte*) PLEX_SCREEN_PTR#14 ← phi( @11/(byte*) PLEX_SCREEN_PTR#4 )
   (byte*) PLEX_SCREEN_PTR#7 ← (byte*) PLEX_SCREEN_PTR#14
-  (byte) plex_show_idx#11 ← (byte) plex_show_idx#23
-  (byte) plex_sprite_idx#11 ← (byte) plex_sprite_idx#22
-  (byte) plex_sprite_msb#12 ← (byte) plex_sprite_msb#24
+  (byte) plex_show_idx#10 ← (byte) plex_show_idx#21
+  (byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#20
+  (byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#22
   to:@end
-@end: scope:[]  from @32
+@end: scope:[]  from @12
 
 SYMBOL TABLE SSA
 (word/signed word/dword/signed dword~) $0
-(label) @23
-(label) @28
-(label) @31
-(label) @32
+(label) @11
+(label) @12
+(label) @3
+(label) @8
 (label) @begin
 (label) @end
 (byte) BLACK
@@ -3497,6 +1835,7 @@ SYMBOL TABLE SSA
 (byte/signed word/word/dword/signed dword~) loop::$1
 (bool~) loop::$11
 (bool~) loop::$2
+(byte~) loop::$4
 (bool~) loop::$5
 (byte/signed word/word/dword/signed dword~) loop::$6
 (byte~) loop::$7
@@ -3506,14 +1845,14 @@ SYMBOL TABLE SSA
 (label) loop::@10
 (label) loop::@11
 (label) loop::@12
-(label) loop::@18
-(label) loop::@19
+(label) loop::@13
+(label) loop::@14
 (label) loop::@2
-(label) loop::@23
-(label) loop::@25
-(label) loop::@26
+(label) loop::@20
 (label) loop::@27
-(label) loop::@28
+(label) loop::@29
+(label) loop::@30
+(label) loop::@31
 (label) loop::@4
 (label) loop::@5
 (label) loop::@6
@@ -3558,10 +1897,6 @@ SYMBOL TABLE SSA
 (byte) loop::ss
 (byte) loop::ss#0
 (byte) loop::ss#1
-(byte) loop::ss#10
-(byte) loop::ss#11
-(byte) loop::ss#12
-(byte) loop::ss#13
 (byte) loop::ss#2
 (byte) loop::ss#3
 (byte) loop::ss#4
@@ -3706,7 +2041,6 @@ SYMBOL TABLE SSA
 (byte) plex_show_idx#45
 (byte) plex_show_idx#46
 (byte) plex_show_idx#47
-(byte) plex_show_idx#48
 (byte) plex_show_idx#5
 (byte) plex_show_idx#6
 (byte) plex_show_idx#7
@@ -3756,7 +2090,6 @@ SYMBOL TABLE SSA
 (byte) plex_sprite_idx#45
 (byte) plex_sprite_idx#46
 (byte) plex_sprite_idx#47
-(byte) plex_sprite_idx#48
 (byte) plex_sprite_idx#5
 (byte) plex_sprite_idx#6
 (byte) plex_sprite_idx#7
@@ -3806,7 +2139,6 @@ SYMBOL TABLE SSA
 (byte) plex_sprite_msb#45
 (byte) plex_sprite_msb#46
 (byte) plex_sprite_msb#47
-(byte) plex_sprite_msb#48
 (byte) plex_sprite_msb#5
 (byte) plex_sprite_msb#6
 (byte) plex_sprite_msb#7
@@ -3822,49 +2154,46 @@ Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15
 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1
 Not aliassing identity: plexSort::nxt_idx#2 plexSort::nxt_idx#2
 Not aliassing identity: plexSort::m#6 plexSort::m#6
-Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23
-Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24
+Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21
+Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22
 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16
-Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#30
-Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#22
+Not aliassing across scopes: plex_sprite_msb#23 plex_sprite_msb#27
+Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#21
 Not aliassing across scopes: SCREEN#2 SCREEN#3
-Not aliassing across scopes: plex_show_idx#35 plex_show_idx#34
-Not aliassing across scopes: plex_sprite_idx#33 plex_sprite_idx#32
-Not aliassing across scopes: plex_sprite_msb#33 plex_sprite_msb#32
+Not aliassing across scopes: plex_show_idx#32 plex_show_idx#31
+Not aliassing across scopes: plex_sprite_idx#30 plex_sprite_idx#29
+Not aliassing across scopes: plex_sprite_msb#30 plex_sprite_msb#29
 Not aliassing across scopes: SPRITE#4 SPRITE#5
 Not aliassing across scopes: YSIN#11 YSIN#13
 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#6
-Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10
-Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10
-Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11
+Not aliassing across scopes: plex_show_idx#15 plex_show_idx#9
+Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#9
+Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10
 Not aliassing across scopes: SCREEN#1 SCREEN#2
-Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18
+Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17
 Not aliassing across scopes: SPRITE#3 SPRITE#4
 Not aliassing across scopes: plexInit::screen#0 SCREEN#1
 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#2
 Not aliassing identity: SPRITE#1 SPRITE#1
-Not aliassing identity: PLEX_SCREEN_PTR#29 PLEX_SCREEN_PTR#29
-Not aliassing identity: PLEX_SCREEN_PTR#21 PLEX_SCREEN_PTR#21
-Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30
-Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29
-Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27
+Not aliassing identity: PLEX_SCREEN_PTR#26 PLEX_SCREEN_PTR#26
+Not aliassing identity: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#20
+Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27
+Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26
+Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25
 Not aliassing across scopes: YSIN#7 YSIN#9
 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#3
-Not aliassing across scopes: plex_show_idx#18 plex_show_idx#2
-Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#2
-Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#2
-Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#4
+Not aliassing across scopes: plex_show_idx#17 plex_show_idx#2
+Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#2
+Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#2
+Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#4
 Not aliassing across scopes: plex_show_idx#19 plex_show_idx#4
-Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#5
-Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#4
-Not aliassing across scopes: plex_show_idx#21 plex_show_idx#4
-Not aliassing across scopes: plex_sprite_msb#22 plex_sprite_msb#5
+Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#5
 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#4
-Not aliassing across scopes: plex_show_idx#23 plex_show_idx#6
-Not aliassing across scopes: plex_sprite_idx#22 plex_sprite_idx#6
-Not aliassing across scopes: plex_sprite_msb#24 plex_sprite_msb#7
+Not aliassing across scopes: plex_show_idx#21 plex_show_idx#6
+Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#6
+Not aliassing across scopes: plex_sprite_msb#22 plex_sprite_msb#7
 Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1 
-Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#23 
+Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#22 
 Alias (byte*) PLEX_SCREEN_PTR#15 = (byte*) PLEX_SCREEN_PTR#8 (byte*) PLEX_SCREEN_PTR#2 
 Alias (byte) plexSort::m#2 = (byte) plexSort::m#4 (byte) plexSort::s#0 
 Alias (byte) plexSort::nxt_y#0 = (byte) plexSort::nxt_y#2 
@@ -3872,235 +2201,231 @@ Alias (byte) plexSort::nxt_idx#0 = (byte) plexSort::nxt_idx#3
 Alias (byte) plexSort::s#1 = (byte) plexSort::s#4 
 Alias (byte) plexSort::nxt_idx#1 = (byte) plexSort::nxt_idx#2 
 Alias (byte) plexSort::m#5 = (byte) plexSort::m#6 
-Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#12 (byte) plex_show_idx#2 
-Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#12 (byte) plex_sprite_idx#2 
-Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#13 (byte) plex_sprite_msb#2 
+Alias (byte) plex_show_idx#1 = (byte) plex_show_idx#11 (byte) plex_show_idx#2 
+Alias (byte) plex_sprite_idx#1 = (byte) plex_sprite_idx#11 (byte) plex_sprite_idx#2 
+Alias (byte) plex_sprite_msb#1 = (byte) plex_sprite_msb#12 (byte) plex_sprite_msb#2 
 Alias (byte) plexShowSprite::plex_sprite_idx2#0 = (byte~) plexShowSprite::$0 
 Alias (byte) plexShowSprite::xpos_idx#0 = (byte~) plexShowSprite::$1 
-Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#25 (byte) plex_sprite_msb#15 
-Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#25 (byte) plex_sprite_idx#26 
-Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#26 (byte) plex_show_idx#27 
-Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#28 
-Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#3 (byte) plex_show_idx#29 
-Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#3 
-Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#4 
-Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#4 
-Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#5 
-Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#22 
-Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#41 (byte) plex_show_idx#34 
-Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#38 (byte) plex_sprite_idx#32 
-Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#38 (byte) plex_sprite_msb#32 
-Alias (byte) plex_show_idx#30 = (byte) plex_show_idx#35 
-Alias (byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#33 
-Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#33 
+Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#23 (byte) plex_sprite_msb#14 
+Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#22 (byte) plex_sprite_idx#23 
+Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#23 (byte) plex_show_idx#24 
+Alias (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#3 (byte/word/dword~) plexShowSprite::$7 (byte) plex_sprite_idx#25 
+Alias (byte) plex_show_idx#25 = (byte) plex_show_idx#3 (byte) plex_show_idx#26 
+Alias (byte) plex_sprite_msb#24 = (byte) plex_sprite_msb#3 
+Alias (byte) plex_sprite_idx#14 = (byte) plex_sprite_idx#4 
+Alias (byte) plex_show_idx#14 = (byte) plex_show_idx#4 
+Alias (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#5 
+Alias (byte*) PLEX_SCREEN_PTR#0 = (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#21 
+Alias (byte) plex_show_idx#0 = (byte) plex_show_idx#38 (byte) plex_show_idx#31 
+Alias (byte) plex_sprite_idx#0 = (byte) plex_sprite_idx#35 (byte) plex_sprite_idx#29 
+Alias (byte) plex_sprite_msb#0 = (byte) plex_sprite_msb#35 (byte) plex_sprite_msb#29 
+Alias (byte) plex_show_idx#27 = (byte) plex_show_idx#32 
+Alias (byte) plex_sprite_idx#26 = (byte) plex_sprite_idx#30 
+Alias (byte) plex_sprite_msb#25 = (byte) plex_sprite_msb#30 
 Alias (byte*) YSIN#11 = (byte*) YSIN#9 
-Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#19 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 
-Alias (byte) plex_show_idx#16 = (byte) plex_show_idx#5 (byte) plex_show_idx#17 (byte) plex_show_idx#6 
-Alias (byte) plex_sprite_idx#16 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#6 
-Alias (byte) plex_sprite_msb#18 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#19 (byte) plex_sprite_msb#7 
+Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4 
+Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#5 (byte) plex_show_idx#16 (byte) plex_show_idx#6 
+Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#16 (byte) plex_sprite_idx#6 
+Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#7 
 Alias (byte*) SPRITE#2 = (byte*) SPRITE#3 
 Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5 
-Alias (byte*) PLEX_SCREEN_PTR#24 = (byte*) PLEX_SCREEN_PTR#29 
-Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#21 (byte*) PLEX_SCREEN_PTR#6 
+Alias (byte*) PLEX_SCREEN_PTR#23 = (byte*) PLEX_SCREEN_PTR#26 
+Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#6 
 Alias (byte) loop::sin_idx#6 = (byte) loop::sin_idx#8 
 Alias (byte*) YSIN#4 = (byte*) YSIN#6 
-Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#47 (byte) plex_show_idx#33 (byte) plex_show_idx#22 
-Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#44 (byte) plex_sprite_idx#31 (byte) plex_sprite_idx#21 
-Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#44 (byte) plex_sprite_msb#31 (byte) plex_sprite_msb#23 
-Alias (byte*) PLEX_SCREEN_PTR#39 = (byte*) PLEX_SCREEN_PTR#43 
+Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#46 (byte) plex_show_idx#30 (byte) plex_show_idx#9 
+Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#41 (byte) plex_sprite_idx#28 (byte) plex_sprite_idx#9 
+Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#41 (byte) plex_sprite_msb#28 (byte) plex_sprite_msb#21 
+Alias (byte*) PLEX_SCREEN_PTR#41 = (byte*) PLEX_SCREEN_PTR#43 
 Alias (byte) loop::sin_idx#2 = (byte) loop::sin_idx#7 (byte) loop::sin_idx#4 (byte) loop::y_idx#0 
 Alias (byte*) YSIN#2 = (byte*) YSIN#5 (byte*) YSIN#3 
-Alias (byte) plex_show_idx#42 = (byte) plex_show_idx#48 (byte) plex_show_idx#45 
-Alias (byte) plex_sprite_idx#39 = (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#42 
-Alias (byte) plex_sprite_msb#39 = (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#42 
-Alias (byte*) PLEX_SCREEN_PTR#35 = (byte*) PLEX_SCREEN_PTR#40 (byte*) PLEX_SCREEN_PTR#37 
+Alias (byte) plex_show_idx#39 = (byte) plex_show_idx#47 (byte) plex_show_idx#43 
+Alias (byte) plex_sprite_idx#36 = (byte) plex_sprite_idx#42 (byte) plex_sprite_idx#39 
+Alias (byte) plex_sprite_msb#36 = (byte) plex_sprite_msb#42 (byte) plex_sprite_msb#39 
+Alias (byte*) PLEX_SCREEN_PTR#39 = (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#40 
 Alias (byte) loop::sin_idx#3 = (byte) loop::sin_idx#5 
-Alias (byte) plex_show_idx#31 = (byte) plex_show_idx#38 
-Alias (byte) plex_sprite_idx#30 = (byte) plex_sprite_idx#36 
-Alias (byte) plex_sprite_msb#28 = (byte) plex_sprite_msb#36 
-Alias (byte*) PLEX_SCREEN_PTR#25 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#33 
-Alias (byte*) YSIN#1 = (byte*) YSIN#24 (byte*) YSIN#23 
-Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#21 
-Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#7 
-Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#7 
-Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#8 
-Alias (byte) loop::ss#4 = (byte) loop::ss#6 
-Alias (byte*) PLEX_SCREEN_PTR#17 = (byte*) PLEX_SCREEN_PTR#26 (byte*) PLEX_SCREEN_PTR#41 
-Alias (byte) loop::sin_idx#18 = (byte) loop::sin_idx#19 (byte) loop::sin_idx#20 
-Alias (byte*) YSIN#20 = (byte*) YSIN#21 (byte*) YSIN#22 
-Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#48 
-Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#39 
-Alias (byte) plex_sprite_msb#21 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#48 
-Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#32 (byte) plex_show_idx#46 (byte) plex_show_idx#44 
-Alias (byte) plex_sprite_idx#41 = (byte) plex_sprite_idx#46 (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#43 
-Alias (byte*) PLEX_SCREEN_PTR#32 = (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#38 (byte*) PLEX_SCREEN_PTR#34 
-Alias (byte) plex_sprite_msb#41 = (byte) plex_sprite_msb#46 (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#43 
-Alias (byte) loop::ss#10 = (byte) loop::ss#12 (byte) loop::ss#13 (byte) loop::ss#11 
+Alias (byte) plex_show_idx#28 = (byte) plex_show_idx#35 
+Alias (byte) plex_sprite_idx#27 = (byte) plex_sprite_idx#33 
+Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#33 
+Alias (byte*) PLEX_SCREEN_PTR#35 = (byte*) PLEX_SCREEN_PTR#37 (byte*) PLEX_SCREEN_PTR#38 
+Alias (byte*) YSIN#1 = (byte*) YSIN#24 (byte*) YSIN#22 
+Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#20 
+Alias (byte) plex_show_idx#17 = (byte) plex_show_idx#7 
+Alias (byte) plex_sprite_idx#17 = (byte) plex_sprite_idx#7 
+Alias (byte) plex_sprite_msb#19 = (byte) plex_sprite_msb#8 
+Alias (byte) plex_show_idx#36 = (byte) plex_show_idx#44 (byte) plex_show_idx#40 
+Alias (byte) plex_sprite_idx#45 = (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#46 
+Alias (byte*) PLEX_SCREEN_PTR#32 = (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#34 
+Alias (byte) plex_sprite_msb#45 = (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#46 
+Alias (byte) loop::sin_idx#18 = (byte) loop::sin_idx#21 (byte) loop::sin_idx#19 
+Alias (byte*) YSIN#20 = (byte*) YSIN#23 (byte*) YSIN#21 
+Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#29 (byte) plex_show_idx#45 (byte) plex_show_idx#42 
+Alias (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#43 (byte) plex_sprite_idx#44 (byte) plex_sprite_idx#40 
+Alias (byte*) PLEX_SCREEN_PTR#28 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#29 
+Alias (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#43 (byte) plex_sprite_msb#44 (byte) plex_sprite_msb#40 
+Alias (byte) loop::ss#6 = (byte) loop::ss#8 (byte) loop::ss#9 (byte) loop::ss#7 
 Alias (byte) loop::sin_idx#14 = (byte) loop::sin_idx#16 (byte) loop::sin_idx#17 (byte) loop::sin_idx#15 
 Alias (byte*) YSIN#16 = (byte*) YSIN#18 (byte*) YSIN#19 (byte*) YSIN#17 
 Alias (byte) loop::plexShowNextYpos1_return#0 = (byte) loop::plexShowNextYpos1_return#2 (byte) loop::plexShowNextYpos1_return#1 (byte) loop::plexShowNextYpos1_return#3 (byte~) loop::$7 
 Alias (byte) loop::rasterY#0 = (byte/signed word/word/dword/signed dword~) loop::$8 
 Alias (byte) loop::rasterY#1 = (byte) loop::rasterY#2 
-Alias (byte) plex_sprite_idx#23 = (byte) plex_sprite_idx#40 (byte) plex_sprite_idx#37 
-Alias (byte) plex_show_idx#24 = (byte) plex_show_idx#43 (byte) plex_show_idx#40 
-Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#27 (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#45 
-Alias (byte) plex_sprite_msb#30 = (byte) plex_sprite_msb#40 (byte) plex_sprite_msb#37 
-Alias (byte) loop::ss#5 = (byte) loop::ss#9 (byte) loop::ss#8 (byte) loop::ss#7 
+Alias (byte) plex_sprite_idx#21 = (byte) plex_sprite_idx#37 (byte) plex_sprite_idx#34 
+Alias (byte) plex_show_idx#22 = (byte) plex_show_idx#41 (byte) plex_show_idx#37 
+Alias (byte*) PLEX_SCREEN_PTR#16 = (byte*) PLEX_SCREEN_PTR#27 (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#33 (byte*) PLEX_SCREEN_PTR#45 
+Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#37 (byte) plex_sprite_msb#34 
+Alias (byte) loop::ss#2 = (byte) loop::ss#5 (byte) loop::ss#4 (byte) loop::ss#3 
 Alias (byte) loop::sin_idx#10 = (byte) loop::sin_idx#13 (byte) loop::sin_idx#12 (byte) loop::sin_idx#11 (byte) loop::sin_idx#9 
 Alias (byte*) YSIN#10 = (byte*) YSIN#15 (byte*) YSIN#14 (byte*) YSIN#12 (byte*) YSIN#8 
-Alias (byte) plex_sprite_idx#20 = (byte) plex_sprite_idx#9 (byte) plex_sprite_idx#35 
-Alias (byte) plex_show_idx#21 = (byte) plex_show_idx#9 (byte) plex_show_idx#37 
-Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#22 (byte) plex_sprite_msb#35 
+Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#32 
+Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#34 
+Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#32 
 Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 
 Alias (byte*) SPRITE#0 = (byte*) SPRITE#5 
 Alias (byte*) YSIN#0 = (byte*) YSIN#13 
 Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7 
-Alias (byte) plex_show_idx#11 = (byte) plex_show_idx#23 
-Alias (byte) plex_sprite_idx#11 = (byte) plex_sprite_idx#22 
-Alias (byte) plex_sprite_msb#12 = (byte) plex_sprite_msb#24 
+Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#21 
+Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#20 
+Alias (byte) plex_sprite_msb#11 = (byte) plex_sprite_msb#22 
 Succesful SSA optimization Pass2AliasElimination
 Not aliassing across scopes: plexInit::plexSetScreen1_screen#0 plexInit::screen#0
 Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15
 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1
 Not aliassing identity: plexSort::nxt_idx#1 plexSort::nxt_idx#1
 Not aliassing identity: plexSort::m#5 plexSort::m#5
-Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23
-Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24
+Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21
+Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22
 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16
-Not aliassing across scopes: plex_sprite_msb#14 plex_sprite_msb#30
-Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#0
+Not aliassing across scopes: plex_sprite_msb#13 plex_sprite_msb#27
+Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#0
 Not aliassing across scopes: SCREEN#2 SCREEN#0
-Not aliassing across scopes: plex_show_idx#30 plex_show_idx#0
-Not aliassing across scopes: plex_sprite_idx#29 plex_sprite_idx#0
-Not aliassing across scopes: plex_sprite_msb#27 plex_sprite_msb#0
+Not aliassing across scopes: plex_show_idx#27 plex_show_idx#0
+Not aliassing across scopes: plex_sprite_idx#26 plex_sprite_idx#0
+Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#0
 Not aliassing across scopes: SPRITE#4 SPRITE#0
 Not aliassing across scopes: YSIN#11 YSIN#0
 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#13
-Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10
-Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10
-Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11
+Not aliassing across scopes: plex_show_idx#15 plex_show_idx#20
+Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#19
+Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10
 Not aliassing across scopes: SCREEN#1 SCREEN#2
-Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18
+Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17
 Not aliassing across scopes: SPRITE#2 SPRITE#4
 Not aliassing across scopes: plexInit::screen#0 SCREEN#1
 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#15
 Not aliassing identity: SPRITE#1 SPRITE#1
-Not aliassing identity: PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#24
+Not aliassing identity: PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#23
 Not aliassing identity: PLEX_SCREEN_PTR#13 PLEX_SCREEN_PTR#13
-Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30
-Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29
-Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27
+Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27
+Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26
+Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25
 Not aliassing across scopes: YSIN#7 YSIN#11
 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#10
-Not aliassing across scopes: plex_show_idx#18 plex_show_idx#1
-Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#1
-Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#1
-Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#15
-Not aliassing across scopes: plex_show_idx#19 plex_show_idx#15
-Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#17
+Not aliassing across scopes: plex_show_idx#17 plex_show_idx#1
+Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#1
+Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#1
 Not aliassing identity: loop::rasterY#1 loop::rasterY#1
-Not aliassing identity: plex_sprite_idx#23 plex_sprite_idx#23
-Not aliassing identity: plex_show_idx#24 plex_show_idx#24
+Not aliassing identity: plex_sprite_idx#21 plex_sprite_idx#21
+Not aliassing identity: plex_show_idx#22 plex_show_idx#22
 Not aliassing identity: PLEX_SCREEN_PTR#16 PLEX_SCREEN_PTR#16
-Not aliassing identity: plex_sprite_msb#30 plex_sprite_msb#30
-Not aliassing identity: loop::ss#5 loop::ss#5
+Not aliassing identity: plex_sprite_msb#27 plex_sprite_msb#27
+Not aliassing identity: loop::ss#2 loop::ss#2
 Not aliassing identity: loop::sin_idx#10 loop::sin_idx#10
 Not aliassing identity: YSIN#10 YSIN#10
-Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#15
-Not aliassing across scopes: plex_show_idx#21 plex_show_idx#15
-Not aliassing across scopes: plex_sprite_msb#10 plex_sprite_msb#17
+Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#14
+Not aliassing across scopes: plex_show_idx#19 plex_show_idx#14
+Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#16
 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#10
-Not aliassing across scopes: plex_show_idx#11 plex_show_idx#16
-Not aliassing across scopes: plex_sprite_idx#11 plex_sprite_idx#16
-Not aliassing across scopes: plex_sprite_msb#12 plex_sprite_msb#18
-Alias (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#14 
-Alias (byte) plex_show_idx#13 = (byte) plex_show_idx#14 
-Alias (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#16 
-Alias (byte) plex_sprite_idx#15 = (byte) plex_sprite_idx#27 
-Alias (byte) plex_show_idx#15 = (byte) plex_show_idx#28 
+Not aliassing across scopes: plex_show_idx#10 plex_show_idx#15
+Not aliassing across scopes: plex_sprite_idx#10 plex_sprite_idx#15
+Not aliassing across scopes: plex_sprite_msb#11 plex_sprite_msb#17
+Alias (byte) plex_sprite_idx#12 = (byte) plex_sprite_idx#13 
+Alias (byte) plex_show_idx#12 = (byte) plex_show_idx#13 
+Alias (byte) plex_sprite_msb#13 = (byte) plex_sprite_msb#15 
+Alias (byte) plex_sprite_idx#14 = (byte) plex_sprite_idx#24 
+Alias (byte) plex_show_idx#14 = (byte) plex_show_idx#25 
 Succesful SSA optimization Pass2AliasElimination
 Not aliassing across scopes: plexInit::plexSetScreen1_screen#0 plexInit::screen#0
 Not aliassing identity: PLEX_SCREEN_PTR#15 PLEX_SCREEN_PTR#15
 Not aliassing identity: plexSort::nxt_y#1 plexSort::nxt_y#1
 Not aliassing identity: plexSort::nxt_idx#1 plexSort::nxt_idx#1
 Not aliassing identity: plexSort::m#5 plexSort::m#5
-Not aliassing across scopes: plex_sprite_idx#13 plex_sprite_idx#23
-Not aliassing across scopes: plex_show_idx#13 plex_show_idx#24
+Not aliassing across scopes: plex_sprite_idx#12 plex_sprite_idx#21
+Not aliassing across scopes: plex_show_idx#12 plex_show_idx#22
 Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#16
-Not aliassing across scopes: plex_sprite_msb#14 plex_sprite_msb#30
-Not aliassing across scopes: PLEX_SCREEN_PTR#18 PLEX_SCREEN_PTR#0
+Not aliassing across scopes: plex_sprite_msb#13 plex_sprite_msb#27
+Not aliassing across scopes: PLEX_SCREEN_PTR#17 PLEX_SCREEN_PTR#0
 Not aliassing across scopes: SCREEN#2 SCREEN#0
-Not aliassing across scopes: plex_show_idx#30 plex_show_idx#0
-Not aliassing across scopes: plex_sprite_idx#29 plex_sprite_idx#0
-Not aliassing across scopes: plex_sprite_msb#27 plex_sprite_msb#0
+Not aliassing across scopes: plex_show_idx#27 plex_show_idx#0
+Not aliassing across scopes: plex_sprite_idx#26 plex_sprite_idx#0
+Not aliassing across scopes: plex_sprite_msb#25 plex_sprite_msb#0
 Not aliassing across scopes: SPRITE#4 SPRITE#0
 Not aliassing across scopes: YSIN#11 YSIN#0
 Not aliassing across scopes: PLEX_SCREEN_PTR#10 PLEX_SCREEN_PTR#13
-Not aliassing across scopes: plex_show_idx#16 plex_show_idx#10
-Not aliassing across scopes: plex_sprite_idx#16 plex_sprite_idx#10
-Not aliassing across scopes: plex_sprite_msb#18 plex_sprite_msb#11
+Not aliassing across scopes: plex_show_idx#15 plex_show_idx#20
+Not aliassing across scopes: plex_sprite_idx#15 plex_sprite_idx#19
+Not aliassing across scopes: plex_sprite_msb#17 plex_sprite_msb#10
 Not aliassing across scopes: SCREEN#1 SCREEN#2
-Not aliassing across scopes: PLEX_SCREEN_PTR#20 PLEX_SCREEN_PTR#18
+Not aliassing across scopes: PLEX_SCREEN_PTR#19 PLEX_SCREEN_PTR#17
 Not aliassing across scopes: SPRITE#2 SPRITE#4
 Not aliassing across scopes: plexInit::screen#0 SCREEN#1
 Not aliassing across scopes: PLEX_SCREEN_PTR#12 PLEX_SCREEN_PTR#15
 Not aliassing identity: SPRITE#1 SPRITE#1
-Not aliassing identity: PLEX_SCREEN_PTR#24 PLEX_SCREEN_PTR#24
+Not aliassing identity: PLEX_SCREEN_PTR#23 PLEX_SCREEN_PTR#23
 Not aliassing identity: PLEX_SCREEN_PTR#13 PLEX_SCREEN_PTR#13
-Not aliassing across scopes: plex_show_idx#36 plex_show_idx#30
-Not aliassing across scopes: plex_sprite_idx#34 plex_sprite_idx#29
-Not aliassing across scopes: plex_sprite_msb#34 plex_sprite_msb#27
+Not aliassing across scopes: plex_show_idx#33 plex_show_idx#27
+Not aliassing across scopes: plex_sprite_idx#31 plex_sprite_idx#26
+Not aliassing across scopes: plex_sprite_msb#31 plex_sprite_msb#25
 Not aliassing across scopes: YSIN#7 YSIN#11
 Not aliassing across scopes: PLEX_SCREEN_PTR#44 PLEX_SCREEN_PTR#10
-Not aliassing across scopes: plex_show_idx#18 plex_show_idx#1
-Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#1
-Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#1
-Not aliassing across scopes: plex_sprite_idx#19 plex_sprite_idx#15
-Not aliassing across scopes: plex_show_idx#19 plex_show_idx#15
-Not aliassing across scopes: plex_sprite_msb#21 plex_sprite_msb#17
+Not aliassing across scopes: plex_show_idx#17 plex_show_idx#1
+Not aliassing across scopes: plex_sprite_idx#17 plex_sprite_idx#1
+Not aliassing across scopes: plex_sprite_msb#19 plex_sprite_msb#1
 Not aliassing identity: loop::rasterY#1 loop::rasterY#1
-Not aliassing identity: plex_sprite_idx#23 plex_sprite_idx#23
-Not aliassing identity: plex_show_idx#24 plex_show_idx#24
+Not aliassing identity: plex_sprite_idx#21 plex_sprite_idx#21
+Not aliassing identity: plex_show_idx#22 plex_show_idx#22
 Not aliassing identity: PLEX_SCREEN_PTR#16 PLEX_SCREEN_PTR#16
-Not aliassing identity: plex_sprite_msb#30 plex_sprite_msb#30
-Not aliassing identity: loop::ss#5 loop::ss#5
+Not aliassing identity: plex_sprite_msb#27 plex_sprite_msb#27
+Not aliassing identity: loop::ss#2 loop::ss#2
 Not aliassing identity: loop::sin_idx#10 loop::sin_idx#10
 Not aliassing identity: YSIN#10 YSIN#10
-Not aliassing across scopes: plex_sprite_idx#20 plex_sprite_idx#15
-Not aliassing across scopes: plex_show_idx#21 plex_show_idx#15
-Not aliassing across scopes: plex_sprite_msb#10 plex_sprite_msb#17
+Not aliassing across scopes: plex_sprite_idx#18 plex_sprite_idx#14
+Not aliassing across scopes: plex_show_idx#19 plex_show_idx#14
+Not aliassing across scopes: plex_sprite_msb#20 plex_sprite_msb#16
 Not aliassing across scopes: PLEX_SCREEN_PTR#14 PLEX_SCREEN_PTR#10
-Not aliassing across scopes: plex_show_idx#11 plex_show_idx#16
-Not aliassing across scopes: plex_sprite_idx#11 plex_sprite_idx#16
-Not aliassing across scopes: plex_sprite_msb#12 plex_sprite_msb#18
+Not aliassing across scopes: plex_show_idx#10 plex_show_idx#15
+Not aliassing across scopes: plex_sprite_idx#10 plex_sprite_idx#15
+Not aliassing across scopes: plex_sprite_msb#11 plex_sprite_msb#17
 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#15
 Self Phi Eliminated (byte) plexSort::nxt_y#1
 Self Phi Eliminated (byte) plexSort::nxt_idx#1
 Self Phi Eliminated (byte) plexSort::m#5
 Self Phi Eliminated (byte*) SPRITE#1
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#24
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#23
 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#13
 Self Phi Eliminated (byte) loop::sin_idx#2
 Self Phi Eliminated (byte*) YSIN#2
-Self Phi Eliminated (byte) plex_show_idx#42
-Self Phi Eliminated (byte) plex_sprite_idx#39
-Self Phi Eliminated (byte) plex_sprite_msb#39
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#35
+Self Phi Eliminated (byte) plex_show_idx#39
+Self Phi Eliminated (byte) plex_sprite_idx#36
+Self Phi Eliminated (byte) plex_sprite_msb#36
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#39
 Self Phi Eliminated (byte*) YSIN#1
 Self Phi Eliminated (byte) loop::sin_idx#3
-Self Phi Eliminated (byte) plex_show_idx#31
-Self Phi Eliminated (byte) plex_sprite_idx#30
-Self Phi Eliminated (byte) plex_sprite_msb#28
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#25
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#17
+Self Phi Eliminated (byte) plex_show_idx#28
+Self Phi Eliminated (byte) plex_sprite_idx#27
+Self Phi Eliminated (byte) plex_sprite_msb#26
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#35
+Self Phi Eliminated (byte) plex_show_idx#36
+Self Phi Eliminated (byte) plex_sprite_idx#45
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#32
+Self Phi Eliminated (byte) plex_sprite_msb#45
 Self Phi Eliminated (byte) loop::sin_idx#18
 Self Phi Eliminated (byte*) YSIN#20
 Self Phi Eliminated (byte) loop::rasterY#1
-Self Phi Eliminated (byte) plex_sprite_idx#23
-Self Phi Eliminated (byte) plex_show_idx#24
+Self Phi Eliminated (byte) plex_sprite_idx#21
+Self Phi Eliminated (byte) plex_show_idx#22
 Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#16
-Self Phi Eliminated (byte) plex_sprite_msb#30
-Self Phi Eliminated (byte) loop::ss#5
+Self Phi Eliminated (byte) plex_sprite_msb#27
+Self Phi Eliminated (byte) loop::ss#2
 Self Phi Eliminated (byte) loop::sin_idx#10
 Self Phi Eliminated (byte*) YSIN#10
 Succesful SSA optimization Pass2SelfPhiElimination
@@ -4109,83 +2434,84 @@ Redundant Phi (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1
 Redundant Phi (byte) plexSort::nxt_y#1 (byte) plexSort::nxt_y#0
 Redundant Phi (byte) plexSort::nxt_idx#1 (byte) plexSort::nxt_idx#0
 Redundant Phi (byte) plexSort::m#5 (byte) plexSort::m#2
-Redundant Phi (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#0
+Redundant Phi (byte) plex_sprite_idx#12 (byte) plex_sprite_idx#21
+Redundant Phi (byte) plex_show_idx#12 (byte) plex_show_idx#22
+Redundant Phi (byte*) PLEX_SCREEN_PTR#9 (byte*) PLEX_SCREEN_PTR#16
+Redundant Phi (byte) plex_sprite_msb#13 (byte) plex_sprite_msb#27
+Redundant Phi (byte*) PLEX_SCREEN_PTR#17 (byte*) PLEX_SCREEN_PTR#0
 Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
-Redundant Phi (byte) plex_show_idx#30 (byte) plex_show_idx#0
-Redundant Phi (byte) plex_sprite_idx#29 (byte) plex_sprite_idx#0
-Redundant Phi (byte) plex_sprite_msb#27 (byte) plex_sprite_msb#0
+Redundant Phi (byte) plex_show_idx#27 (byte) plex_show_idx#0
+Redundant Phi (byte) plex_sprite_idx#26 (byte) plex_sprite_idx#0
+Redundant Phi (byte) plex_sprite_msb#25 (byte) plex_sprite_msb#0
 Redundant Phi (byte*) SPRITE#4 (byte*) SPRITE#0
 Redundant Phi (byte*) YSIN#11 (byte*) YSIN#0
 Redundant Phi (byte*) PLEX_SCREEN_PTR#10 (byte*) PLEX_SCREEN_PTR#13
-Redundant Phi (byte) plex_show_idx#16 (byte) plex_show_idx#10
-Redundant Phi (byte) plex_sprite_idx#16 (byte) plex_sprite_idx#10
-Redundant Phi (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#11
+Redundant Phi (byte) plex_show_idx#15 (byte) plex_show_idx#20
+Redundant Phi (byte) plex_sprite_idx#15 (byte) plex_sprite_idx#19
+Redundant Phi (byte) plex_sprite_msb#17 (byte) plex_sprite_msb#10
 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
-Redundant Phi (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#18
+Redundant Phi (byte*) PLEX_SCREEN_PTR#19 (byte*) PLEX_SCREEN_PTR#17
 Redundant Phi (byte*) SPRITE#2 (byte*) SPRITE#4
 Redundant Phi (byte*) PLEX_SCREEN_PTR#12 (byte*) PLEX_SCREEN_PTR#15
 Redundant Phi (byte*) SPRITE#1 (byte*) SPRITE#2
-Redundant Phi (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#12
-Redundant Phi (byte*) PLEX_SCREEN_PTR#13 (byte*) PLEX_SCREEN_PTR#24
-Redundant Phi (byte) plex_show_idx#36 (byte) plex_show_idx#30
-Redundant Phi (byte) plex_sprite_idx#34 (byte) plex_sprite_idx#29
-Redundant Phi (byte) plex_sprite_msb#34 (byte) plex_sprite_msb#27
+Redundant Phi (byte*) PLEX_SCREEN_PTR#23 (byte*) PLEX_SCREEN_PTR#12
+Redundant Phi (byte*) PLEX_SCREEN_PTR#13 (byte*) PLEX_SCREEN_PTR#23
+Redundant Phi (byte) plex_show_idx#33 (byte) plex_show_idx#27
+Redundant Phi (byte) plex_sprite_idx#31 (byte) plex_sprite_idx#26
+Redundant Phi (byte) plex_sprite_msb#31 (byte) plex_sprite_msb#25
 Redundant Phi (byte*) YSIN#7 (byte*) YSIN#11
 Redundant Phi (byte*) PLEX_SCREEN_PTR#44 (byte*) PLEX_SCREEN_PTR#10
 Redundant Phi (byte) loop::sin_idx#2 (byte) loop::sin_idx#6
 Redundant Phi (byte*) YSIN#2 (byte*) YSIN#4
-Redundant Phi (byte) plex_show_idx#42 (byte) plex_show_idx#10
-Redundant Phi (byte) plex_sprite_idx#39 (byte) plex_sprite_idx#10
-Redundant Phi (byte) plex_sprite_msb#39 (byte) plex_sprite_msb#11
-Redundant Phi (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#39
+Redundant Phi (byte) plex_show_idx#39 (byte) plex_show_idx#20
+Redundant Phi (byte) plex_sprite_idx#36 (byte) plex_sprite_idx#19
+Redundant Phi (byte) plex_sprite_msb#36 (byte) plex_sprite_msb#10
+Redundant Phi (byte*) PLEX_SCREEN_PTR#39 (byte*) PLEX_SCREEN_PTR#41
 Redundant Phi (byte*) YSIN#1 (byte*) YSIN#2
 Redundant Phi (byte) loop::sin_idx#3 (byte) loop::sin_idx#2
-Redundant Phi (byte) plex_show_idx#31 (byte) plex_show_idx#42
-Redundant Phi (byte) plex_sprite_idx#30 (byte) plex_sprite_idx#39
-Redundant Phi (byte) plex_sprite_msb#28 (byte) plex_sprite_msb#39
-Redundant Phi (byte*) PLEX_SCREEN_PTR#25 (byte*) PLEX_SCREEN_PTR#35
-Redundant Phi (byte) plex_show_idx#18 (byte) plex_show_idx#1
-Redundant Phi (byte) plex_sprite_idx#18 (byte) plex_sprite_idx#1
-Redundant Phi (byte) plex_sprite_msb#20 (byte) plex_sprite_msb#1
-Redundant Phi (byte*) PLEX_SCREEN_PTR#17 (byte*) PLEX_SCREEN_PTR#25
+Redundant Phi (byte) plex_show_idx#28 (byte) plex_show_idx#39
+Redundant Phi (byte) plex_sprite_idx#27 (byte) plex_sprite_idx#36
+Redundant Phi (byte) plex_sprite_msb#26 (byte) plex_sprite_msb#36
+Redundant Phi (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#39
+Redundant Phi (byte) plex_show_idx#17 (byte) plex_show_idx#1
+Redundant Phi (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#1
+Redundant Phi (byte) plex_sprite_msb#19 (byte) plex_sprite_msb#1
+Redundant Phi (byte) plex_show_idx#36 (byte) plex_show_idx#17
+Redundant Phi (byte) plex_sprite_idx#45 (byte) plex_sprite_idx#17
+Redundant Phi (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#35
+Redundant Phi (byte) plex_sprite_msb#45 (byte) plex_sprite_msb#19
 Redundant Phi (byte) loop::sin_idx#18 (byte) loop::sin_idx#1
 Redundant Phi (byte*) YSIN#20 (byte*) YSIN#1
-Redundant Phi (byte) plex_sprite_idx#19 (byte) plex_sprite_idx#15
-Redundant Phi (byte) plex_show_idx#19 (byte) plex_show_idx#15
-Redundant Phi (byte) plex_sprite_msb#21 (byte) plex_sprite_msb#17
 Redundant Phi (byte) loop::rasterY#1 (byte) loop::rasterY#0
-Redundant Phi (byte) plex_sprite_idx#23 (byte) plex_sprite_idx#41
-Redundant Phi (byte) plex_show_idx#24 (byte) plex_show_idx#20
-Redundant Phi (byte*) PLEX_SCREEN_PTR#16 (byte*) PLEX_SCREEN_PTR#32
-Redundant Phi (byte) plex_sprite_msb#30 (byte) plex_sprite_msb#41
-Redundant Phi (byte) loop::ss#5 (byte) loop::ss#10
+Redundant Phi (byte) plex_sprite_idx#21 (byte) plex_sprite_idx#38
+Redundant Phi (byte) plex_show_idx#22 (byte) plex_show_idx#18
+Redundant Phi (byte*) PLEX_SCREEN_PTR#16 (byte*) PLEX_SCREEN_PTR#28
+Redundant Phi (byte) plex_sprite_msb#27 (byte) plex_sprite_msb#38
+Redundant Phi (byte) loop::ss#2 (byte) loop::ss#6
 Redundant Phi (byte) loop::sin_idx#10 (byte) loop::sin_idx#14
 Redundant Phi (byte*) YSIN#10 (byte*) YSIN#16
-Redundant Phi (byte) plex_sprite_idx#20 (byte) plex_sprite_idx#15
-Redundant Phi (byte) plex_show_idx#21 (byte) plex_show_idx#15
-Redundant Phi (byte) plex_sprite_msb#10 (byte) plex_sprite_msb#17
+Redundant Phi (byte) plex_sprite_idx#18 (byte) plex_sprite_idx#14
+Redundant Phi (byte) plex_show_idx#19 (byte) plex_show_idx#14
+Redundant Phi (byte) plex_sprite_msb#20 (byte) plex_sprite_msb#16
 Redundant Phi (byte*) PLEX_SCREEN_PTR#14 (byte*) PLEX_SCREEN_PTR#10
-Redundant Phi (byte) plex_show_idx#11 (byte) plex_show_idx#16
-Redundant Phi (byte) plex_sprite_idx#11 (byte) plex_sprite_idx#16
-Redundant Phi (byte) plex_sprite_msb#12 (byte) plex_sprite_msb#18
+Redundant Phi (byte) plex_show_idx#10 (byte) plex_show_idx#15
+Redundant Phi (byte) plex_sprite_idx#10 (byte) plex_sprite_idx#15
+Redundant Phi (byte) plex_sprite_msb#11 (byte) plex_sprite_msb#17
 Succesful SSA optimization Pass2RedundantPhiElimination
 Redundant Phi (byte) plexSort::m#3 (byte) plexSort::m#2
-Redundant Phi (byte) plex_show_idx#20 (byte) plex_show_idx#15
-Redundant Phi (byte) plex_sprite_idx#41 (byte) plex_sprite_idx#15
-Redundant Phi (byte) plex_sprite_msb#41 (byte) plex_sprite_msb#17
 Succesful SSA optimization Pass2RedundantPhiElimination
 Simple Condition (bool~) plexInit::$2 if((byte) plexInit::i#1!=rangelast(0,plexInit::$1)) goto plexInit::@1
 Simple Condition (bool~) plexSort::$3 if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2
 Simple Condition (bool~) plexSort::$8 if((byte) plexSort::m#1!=rangelast(0,plexSort::$0)) goto plexSort::@1
 Simple Condition (bool~) plexShowSprite::$4 if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1
-Simple Condition (bool~) plexShowSprite::$9 if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3
+Simple Condition (bool~) plexShowSprite::$9 if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3
 Simple Condition (bool~) init::$7 if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1
 Simple Condition (bool~) init::$8 if((byte) init::ss#1!=rangelast(0,7)) goto init::@2
 Simple Condition (bool~) loop::$0 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@5
 Simple Condition (bool~) loop::$2 if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7
-Simple Condition (bool~) loop::$5 if((byte) loop::ss#1!=rangelast(0,7)) goto loop::@8
-Simple Condition (bool~) loop::$9 if(*((byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@11
-Simple Condition (bool~) loop::$11 if((byte) loop::ss#3!=rangelast(8,loop::$6)) goto loop::@9
+Simple Condition (bool~) loop::$5 if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@9
+Simple Condition (bool~) loop::$9 if(*((byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@13
+Simple Condition (bool~) loop::$11 if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11
 Succesful SSA optimization Pass2ConditionalJumpSimplification
 Rewriting && if()-condition to two if()s (bool~) plexSort::$7 ← (bool~) plexSort::$5 && (bool~) plexSort::$6
 Succesful SSA optimization Pass2ConditionalAndOrRewriting
@@ -4221,7 +2547,6 @@ Constant (const byte) init::ss#0 = 0
 Constant (const byte) loop::sin_idx#0 = 0
 Constant (const byte) loop::sy#0 = 0
 Constant (const byte) loop::ss#0 = 0
-Constant (const byte) loop::ss#2 = 8
 Succesful SSA optimization Pass2ConstantIdentification
 Constant (const word[PLEX_COUNT#0]) PLEX_XPOS#0 = { fill( PLEX_COUNT#0, 0) }
 Constant (const byte[PLEX_COUNT#0]) PLEX_YPOS#0 = { fill( PLEX_COUNT#0, 0) }
@@ -4248,9 +2573,9 @@ if() condition always true - replacing block destination if(true) goto loop::@2
 Succesful SSA optimization Pass2ConstantIfs
 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) plexSort::$1 ← (byte) plexSort::m#2
 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) plexSort::$4 ← (byte) plexSort::s#3
-Eliminating unused variable - keeping the phi block (byte) plex_show_idx#10
-Eliminating unused variable - keeping the phi block (byte) plex_sprite_idx#10
-Eliminating unused variable - keeping the phi block (byte) plex_sprite_msb#11
+Eliminating unused variable - keeping the phi block (byte) plex_show_idx#20
+Eliminating unused variable - keeping the phi block (byte) plex_sprite_idx#19
+Eliminating unused variable - keeping the phi block (byte) plex_sprite_msb#10
 Eliminating unused constant (const byte*) PLEX_SCREEN_PTR#0
 Succesful SSA optimization PassNEliminateUnusedVars
 Eliminating unused constant (const word/signed word/dword/signed dword) $0
@@ -4270,11 +2595,9 @@ Resolved ranged next value init::ss#1 ← ++ init::ss#2 to ++
 Resolved ranged comparison value if(init::ss#1!=rangelast(0,7)) goto init::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
 Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++
 Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1
-Resolved ranged next value loop::ss#1 ← ++ loop::ss#4 to ++
-Resolved ranged comparison value if(loop::ss#1!=rangelast(0,7)) goto loop::@8 to (byte/signed byte/word/signed word/dword/signed dword) 8
-Resolved ranged next value loop::ss#3 ← ++ loop::ss#10 to ++
-Resolved ranged comparison value if(loop::ss#3!=rangelast(8,loop::$6)) goto loop::@9 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1
-Culled Empty Block (label) @23
+Resolved ranged next value loop::ss#1 ← ++ loop::ss#6 to ++
+Resolved ranged comparison value if(loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1
+Culled Empty Block (label) @3
 Culled Empty Block (label) plexInit::@3
 Culled Empty Block (label) plexSort::@4
 Culled Empty Block (label) plexSort::@6
@@ -4284,36 +2607,33 @@ Culled Empty Block (label) main::@2
 Culled Empty Block (label) init::@5
 Culled Empty Block (label) loop::@2
 Culled Empty Block (label) loop::@5
-Culled Empty Block (label) loop::@19
+Culled Empty Block (label) loop::@9
+Culled Empty Block (label) loop::@10
 Culled Empty Block (label) loop::plexShowNextYpos1_@return
-Culled Empty Block (label) loop::@11
-Culled Empty Block (label) @32
+Culled Empty Block (label) loop::@13
+Culled Empty Block (label) @12
 Succesful SSA optimization Pass2CullEmptyBlocks
 Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6
-Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#32
 Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 
 Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 
 Succesful SSA optimization Pass2AliasElimination
-Not aliassing across scopes: PLEX_SCREEN_PTR#9 PLEX_SCREEN_PTR#32
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#32
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#28
 Self Phi Eliminated (byte) loop::sin_idx#14
 Self Phi Eliminated (byte*) YSIN#16
 Succesful SSA optimization Pass2SelfPhiElimination
-Redundant Phi (byte*) PLEX_SCREEN_PTR#32 (byte*) PLEX_SCREEN_PTR#39
+Redundant Phi (byte*) PLEX_SCREEN_PTR#28 (byte*) PLEX_SCREEN_PTR#41
 Redundant Phi (byte) loop::sin_idx#14 (byte) loop::sin_idx#1
 Redundant Phi (byte*) YSIN#16 (byte*) YSIN#4
 Succesful SSA optimization Pass2RedundantPhiElimination
-Redundant Phi (byte*) PLEX_SCREEN_PTR#9 (byte*) PLEX_SCREEN_PTR#39
-Succesful SSA optimization Pass2RedundantPhiElimination
 Simple Condition (bool~) plexSort::$5 if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7
 Simple Condition (bool~) plexSort::$6 if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3
 Succesful SSA optimization Pass2ConditionalJumpSimplification
 Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6
 Self Phi Eliminated (byte*) YSIN#4
-Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#39
+Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#41
 Succesful SSA optimization Pass2SelfPhiElimination
 Redundant Phi (byte*) YSIN#4 (const byte*) YSIN#0
-Redundant Phi (byte*) PLEX_SCREEN_PTR#39 (const byte*) PLEX_SCREEN_PTR#1
+Redundant Phi (byte*) PLEX_SCREEN_PTR#41 (const byte*) PLEX_SCREEN_PTR#1
 Succesful SSA optimization Pass2RedundantPhiElimination
 Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@6
 OPTIMIZING CONTROL FLOW GRAPH
@@ -4333,25 +2653,13 @@ Inlining constant with var siblings (const byte) loop::sy#0
 Inlining constant with var siblings (const byte) loop::sy#0
 Inlining constant with var siblings (const byte) loop::ss#0
 Inlining constant with var siblings (const byte) loop::ss#0
-Inlining constant with var siblings (const byte) loop::ss#0
-Inlining constant with var siblings (const byte) loop::ss#0
-Inlining constant with different constant siblings (const byte) loop::ss#0
-Inlining constant with var siblings (const byte) loop::ss#2
-Inlining constant with var siblings (const byte) loop::ss#2
-Inlining constant with var siblings (const byte) loop::ss#2
-Inlining constant with var siblings (const byte) loop::ss#2
-Inlining constant with different constant siblings (const byte) loop::ss#2
-Inlining constant with var siblings (const byte) plex_show_idx#1
 Inlining constant with var siblings (const byte) plex_show_idx#1
 Inlining constant with var siblings (const byte) plex_show_idx#1
 Inlining constant with var siblings (const byte) plex_sprite_idx#1
 Inlining constant with var siblings (const byte) plex_sprite_idx#1
-Inlining constant with var siblings (const byte) plex_sprite_idx#1
 Inlining constant with var siblings (const byte) plex_sprite_msb#1
 Inlining constant with var siblings (const byte) plex_sprite_msb#1
 Inlining constant with var siblings (const byte) plex_sprite_msb#1
-Inlining constant with var siblings (const byte) plex_sprite_msb#1
-Inlining constant with var siblings (const byte) plex_sprite_msb#4
 Inlining constant with var siblings (const byte) plex_sprite_msb#4
 Inlining constant with var siblings (const byte) plex_sprite_msb#4
 Inlining constant with var siblings (const byte) plex_sprite_msb#4
@@ -4377,12 +2685,10 @@ Constant inlined loop::sy#0 = (byte/signed byte/word/signed word/dword/signed dw
 Constant inlined loop::$6 = (const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1
 Constant inlined loop::ss#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
 Constant inlined init::sx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
-Constant inlined loop::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 8
 Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@1 plexSort plexSort::@1 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return 
-Added new block during phi lifting loop::@29(between loop::@7 and loop::@7)
-Added new block during phi lifting loop::@30(between loop::@27 and loop::@8)
-Added new block during phi lifting loop::@31(between loop::@28 and loop::@9)
+Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@1 plexSort plexSort::@1 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return 
+Added new block during phi lifting loop::@32(between loop::@7 and loop::@7)
+Added new block during phi lifting loop::@33(between loop::@31 and loop::@11)
 Added new block during phi lifting plexShowSprite::@7(between plexShowSprite::@2 and plexShowSprite::@return)
 Added new block during phi lifting plexSort::@8(between plexSort::@2 and plexSort::@1)
 Added new block during phi lifting plexSort::@9(between plexSort::@7 and plexSort::@3)
@@ -4390,9 +2696,9 @@ Added new block during phi lifting plexSort::@10(between plexSort::@1 and plexSo
 Added new block during phi lifting init::@6(between init::@1 and init::@1)
 Added new block during phi lifting init::@7(between init::@2 and init::@2)
 Added new block during phi lifting plexInit::@4(between plexInit::@1 and plexInit::@1)
-Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 loop::@31 loop::@30 loop::@29 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@8 plexSort::@7 plexSort::@9 init init::@1 init::@3 init::@2 init::@return init::@7 init::@6 plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return plexInit::@4 
+Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 loop::@33 loop::@32 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@6 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@8 plexSort::@7 plexSort::@9 init init::@1 init::@3 init::@2 init::@return init::@7 init::@6 plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return plexInit::@4 
 Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @31
+Adding NOP phi() at start of @11
 Adding NOP phi() at start of @end
 Adding NOP phi() at start of main::@1
 Adding NOP phi() at start of loop
@@ -4403,8 +2709,8 @@ Adding NOP phi() at start of plexInit::plexSetScreen1
 CALL GRAPH
 Calls in [] to main:4 
 Calls in [main] to init:7 loop:9 
-Calls in [loop] to plexSort:23 plexShowSprite:29 plexShowSprite:41 
-Calls in [init] to plexInit:93 
+Calls in [loop] to plexSort:23 plexShowSprite:33 
+Calls in [init] to plexInit:83 
 
 Propagating live ranges...
 Propagating live ranges...
@@ -4423,42 +2729,26 @@ Propagating live ranges...
 Propagating live ranges...
 Propagating live ranges...
 Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
-Created 18 initial phi equivalence classes
+Created 14 initial phi equivalence classes
 Not coalescing [15] loop::y_idx#3 ← loop::sin_idx#6
-Coalesced [26] plex_sprite_idx#51 ← plex_sprite_idx#24
-Coalesced [27] plex_show_idx#51 ← plex_show_idx#25
-Coalesced [28] plex_sprite_msb#51 ← plex_sprite_msb#29
-Coalesced [38] plex_sprite_idx#50 ← plex_sprite_idx#15
-Coalesced [39] plex_show_idx#50 ← plex_show_idx#15
-Coalesced [40] plex_sprite_msb#50 ← plex_sprite_msb#17
-Coalesced [45] loop::sin_idx#22 ← loop::sin_idx#1
-Coalesced [46] loop::ss#15 ← loop::ss#3
-Coalesced (already) [47] plex_sprite_idx#49 ← plex_sprite_idx#15
-Coalesced (already) [48] plex_show_idx#49 ← plex_show_idx#15
-Coalesced (already) [49] plex_sprite_msb#49 ← plex_sprite_msb#17
-Coalesced [50] loop::ss#14 ← loop::ss#1
-Coalesced [51] loop::y_idx#4 ← loop::y_idx#1
-Coalesced [52] loop::sy#3 ← loop::sy#1
-Coalesced [72] plex_sprite_msb#52 ← plex_sprite_msb#26
-Not coalescing [79] plexSort::s#6 ← plexSort::m#2
-Coalesced [89] plexSort::m#7 ← plexSort::m#1
-Coalesced [91] plexSort::s#5 ← plexSort::s#1
-Coalesced [107] init::ss#3 ← init::ss#1
-Coalesced [108] init::sx#3 ← init::sx#1
-Coalesced [109] init::xp#3 ← init::xp#1
-Coalesced [117] plexInit::i#3 ← plexInit::i#1
-Coalesced down to 14 phi equivalence classes
-Culled Empty Block (label) loop::@31
-Culled Empty Block (label) loop::@30
-Culled Empty Block (label) loop::@29
+Coalesced [37] loop::sin_idx#22 ← loop::sin_idx#1
+Coalesced [38] plex_show_idx#48 ← plex_show_idx#14
+Coalesced [39] plex_sprite_idx#48 ← plex_sprite_idx#14
+Coalesced [40] plex_sprite_msb#48 ← plex_sprite_msb#16
+Coalesced [41] loop::ss#10 ← loop::ss#1
+Coalesced [42] loop::y_idx#4 ← loop::y_idx#1
+Coalesced [43] loop::sy#3 ← loop::sy#1
+Coalesced [62] plex_sprite_msb#49 ← plex_sprite_msb#24
+Not coalescing [69] plexSort::s#6 ← plexSort::m#2
+Coalesced [79] plexSort::m#7 ← plexSort::m#1
+Coalesced [81] plexSort::s#5 ← plexSort::s#1
+Coalesced [97] init::ss#3 ← init::ss#1
+Coalesced [98] init::sx#3 ← init::sx#1
+Coalesced [99] init::xp#3 ← init::xp#1
+Coalesced [107] plexInit::i#3 ← plexInit::i#1
+Coalesced down to 13 phi equivalence classes
+Culled Empty Block (label) loop::@33
+Culled Empty Block (label) loop::@32
 Culled Empty Block (label) plexShowSprite::@6
 Not culling empty block because it shares successor with its predecessor. (label) plexShowSprite::@7
 Culled Empty Block (label) plexSort::@8
@@ -4466,9 +2756,9 @@ Culled Empty Block (label) plexSort::@9
 Culled Empty Block (label) init::@7
 Culled Empty Block (label) init::@6
 Culled Empty Block (label) plexInit::@4
-Block Sequence Planned @begin @28 @31 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@18 loop::@26 loop::@8 loop::@27 loop::@9 loop::plexShowNextYpos1 loop::@25 loop::@10 loop::@12 loop::@28 loop::@23 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return 
+Block Sequence Planned @begin @8 @11 @end main main::@1 main::@return loop loop::@1 loop::@4 loop::@6 loop::@7 loop::@20 loop::@30 loop::@8 loop::@11 loop::plexShowNextYpos1 loop::@29 loop::@12 loop::@14 loop::@31 loop::@27 plexShowSprite plexShowSprite::@4 plexShowSprite::@2 plexShowSprite::@return plexShowSprite::@7 plexShowSprite::@1 plexSort plexSort::@1 plexSort::@10 plexSort::@3 plexSort::@5 plexSort::@2 plexSort::@return plexSort::@7 init init::@1 init::@3 init::@2 init::@return plexInit plexInit::plexSetScreen1 plexInit::@1 plexInit::@return 
 Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @31
+Adding NOP phi() at start of @11
 Adding NOP phi() at start of @end
 Adding NOP phi() at start of main::@1
 Adding NOP phi() at start of loop
@@ -4492,15 +2782,13 @@ Propagating live ranges...
 Propagating live ranges...
 Propagating live ranges...
 Propagating live ranges...
-Propagating live ranges...
-Propagating live ranges...
 
 FINAL CONTROL FLOW GRAPH
 @begin: scope:[]  from
   [0] phi() [ ] ( )
-  to:@28
-@28: scope:[]  from @begin
-  kickasm(location (const byte*) YSIN#0) {{ .var min = 51
+  to:@8
+@8: scope:[]  from @begin
+  kickasm(location (const byte*) YSIN#0) {{ .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -4511,14 +2799,14 @@ FINAL CONTROL FLOW GRAPH
     .for (var x=0;x<3; x++)
         .byte pic.getSinglecolorByte(x,y)
  }}
-  to:@31
-@31: scope:[]  from @28
+  to:@11
+@11: scope:[]  from @8
   [3] phi() [ ] ( )
   [4] call main  [ ] ( )
   to:@end
-@end: scope:[]  from @31
+@end: scope:[]  from @11
   [5] phi() [ ] ( )
-main: scope:[main]  from @31
+main: scope:[main]  from @11
   asm { sei  }
   [7] call init  [ ] ( main:4 [ ] )
   to:main::@1
@@ -4532,8 +2820,8 @@ main::@return: scope:[main]  from main::@1
 loop: scope:[loop]  from main::@1
   [11] phi() [ ] ( main:4::loop:9 [ ] )
   to:loop::@1
-loop::@1: scope:[loop]  from loop loop::@23
-  [12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@23/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
+loop::@1: scope:[loop]  from loop loop::@27
+  [12] (byte) loop::sin_idx#6 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::sin_idx#1 ) [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
   to:loop::@4
 loop::@4: scope:[loop]  from loop::@1 loop::@4
   [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] )
@@ -4549,213 +2837,205 @@ loop::@7: scope:[loop]  from loop::@6 loop::@7
   [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] )
   [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
   [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] )
-  to:loop::@18
-loop::@18: scope:[loop]  from loop::@7
+  to:loop::@20
+loop::@20: scope:[loop]  from loop::@7
   [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   [23] call plexSort  [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
-  to:loop::@26
-loop::@26: scope:[loop]  from loop::@18
-  [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+  to:loop::@30
+loop::@30: scope:[loop]  from loop::@20
+  [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   to:loop::@8
-loop::@8: scope:[loop]  from loop::@26 loop::@27
-  [25] (byte) loop::ss#4 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_sprite_msb#29 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@27/(byte) plex_sprite_msb#17 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_show_idx#25 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_show_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [25] (byte) plex_sprite_idx#24 ← phi( loop::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@27/(byte) plex_sprite_idx#15 ) [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#24 plex_show_idx#25 plex_sprite_msb#29 loop::ss#4 ] )
-  [26] call plexShowSprite  [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  to:loop::@27
-loop::@27: scope:[loop]  from loop::@8
-  [27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
-  [28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] )
-  to:loop::@9
-loop::@9: scope:[loop]  from loop::@27 loop::@28
-  [29] (byte) loop::ss#10 ← phi( loop::@27/(byte/signed byte/word/signed word/dword/signed dword) 8 loop::@28/(byte) loop::ss#3 ) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
+loop::@8: scope:[loop]  from loop::@30 loop::@8
+  [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] )
+  [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+  to:loop::@11
+loop::@11: scope:[loop]  from loop::@31 loop::@8
+  [27] (byte) loop::ss#6 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) loop::ss#1 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_sprite_msb#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 loop::@31/(byte) plex_sprite_msb#16 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_sprite_idx#38 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_sprite_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [27] (byte) plex_show_idx#18 ← phi( loop::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@31/(byte) plex_show_idx#14 ) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
   to:loop::plexShowNextYpos1
-loop::plexShowNextYpos1: scope:[loop]  from loop::@9
-  [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] )
-  to:loop::@25
-loop::@25: scope:[loop]  from loop::plexShowNextYpos1
-  [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
-  to:loop::@10
-loop::@10: scope:[loop]  from loop::@10 loop::@25
-  [33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] )
+loop::plexShowNextYpos1: scope:[loop]  from loop::@11
+  [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] )
+  to:loop::@29
+loop::@29: scope:[loop]  from loop::plexShowNextYpos1
+  [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
   to:loop::@12
-loop::@12: scope:[loop]  from loop::@10
-  [34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  [35] call plexShowSprite  [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  to:loop::@28
-loop::@28: scope:[loop]  from loop::@12
-  [36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
-  [37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] )
-  to:loop::@23
-loop::@23: scope:[loop]  from loop::@28
-  [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
+loop::@12: scope:[loop]  from loop::@12 loop::@29
+  [31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] )
+  to:loop::@14
+loop::@14: scope:[loop]  from loop::@12
+  [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] )
+  [33] call plexShowSprite  [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
+  to:loop::@31
+loop::@31: scope:[loop]  from loop::@14
+  [34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
+  [35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] )
+  to:loop::@27
+loop::@27: scope:[loop]  from loop::@31
+  [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
   to:loop::@1
-plexShowSprite: scope:[plexShowSprite]  from loop::@12 loop::@8
-  [39] (byte) plex_sprite_msb#14 ← phi( loop::@12/(byte) plex_sprite_msb#17 loop::@8/(byte) plex_sprite_msb#29 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [39] (byte) plex_show_idx#13 ← phi( loop::@12/(byte) plex_show_idx#15 loop::@8/(byte) plex_show_idx#25 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [39] (byte) plex_sprite_idx#13 ← phi( loop::@12/(byte) plex_sprite_idx#15 loop::@8/(byte) plex_sprite_idx#24 ) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] )
-  [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
-  [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
-  [45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] )
-  [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] )
-  [47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+plexShowSprite: scope:[plexShowSprite]  from loop::@14
+  [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] )
+  [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] )
+  [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] )
+  [42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] )
+  [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] )
+  [44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@4
 plexShowSprite::@4: scope:[plexShowSprite]  from plexShowSprite
-  [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] )
-  [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+  [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] )
+  [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@2
 plexShowSprite::@2: scope:[plexShowSprite]  from plexShowSprite::@1 plexShowSprite::@4
-  [50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] )
-  [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] )
-  [52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] )
-  [53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
-  [54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
+  [47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] )
+  [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] )
+  [49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] )
+  [50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
+  [51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
   to:plexShowSprite::@return
 plexShowSprite::@return: scope:[plexShowSprite]  from plexShowSprite::@2 plexShowSprite::@7
-  [55] (byte) plex_sprite_msb#17 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#26 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  [56] return  [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
+  [52] (byte) plex_sprite_msb#16 ← phi( plexShowSprite::@7/(byte) plex_sprite_msb#24 plexShowSprite::@2/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
+  [53] return  [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
   to:@return
 plexShowSprite::@7: scope:[plexShowSprite]  from plexShowSprite::@2
-  [57] phi() [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] )
+  [54] phi() [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] )
   to:plexShowSprite::@return
 plexShowSprite::@1: scope:[plexShowSprite]  from plexShowSprite
-  [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] )
+  [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] )
   to:plexShowSprite::@2
-plexSort: scope:[plexSort]  from loop::@18
-  [59] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+plexSort: scope:[plexSort]  from loop::@20
+  [56] phi() [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
   to:plexSort::@1
 plexSort::@1: scope:[plexSort]  from plexSort plexSort::@2
-  [60] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
-  [61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
-  [62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
-  [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
+  [57] (byte) plexSort::m#2 ← phi( plexSort/(byte/signed byte/word/signed word/dword/signed dword) 0 plexSort::@2/(byte) plexSort::m#1 ) [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
+  [58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] )
+  [59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
+  [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] )
   to:plexSort::@10
 plexSort::@10: scope:[plexSort]  from plexSort::@1
-  [64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
+  [61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] )
   to:plexSort::@3
 plexSort::@3: scope:[plexSort]  from plexSort::@10 plexSort::@7
-  [65] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
-  [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
-  [67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
-  [68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [62] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@10/(byte~) plexSort::s#6 ) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
+  [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] )
+  [64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
   to:plexSort::@5
 plexSort::@5: scope:[plexSort]  from plexSort::@3 plexSort::@7
-  [69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
-  [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
+  [66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] )
+  [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] )
   to:plexSort::@2
 plexSort::@2: scope:[plexSort]  from plexSort::@1 plexSort::@5
-  [71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
-  [72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
+  [68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
+  [69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] )
   to:plexSort::@return
 plexSort::@return: scope:[plexSort]  from plexSort::@2
-  [73] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+  [70] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
   to:@return
 plexSort::@7: scope:[plexSort]  from plexSort::@3
-  [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
+  [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] )
   to:plexSort::@5
 init: scope:[init]  from main
-  [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
-  [76] call plexInit  [ ] ( main:4::init:7 [ ] )
+  [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] )
+  [73] call plexInit  [ ] ( main:4::init:7 [ ] )
   to:init::@1
 init::@1: scope:[init]  from init init::@1
-  [77] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [77] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
-  [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
-  [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
-  [82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
-  [83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
+  [74] (word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init/(byte/signed byte/word/signed word/dword/signed dword) 32 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [74] (byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] )
+  [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] )
+  [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] )
+  [79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
+  [80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] )
   to:init::@3
 init::@3: scope:[init]  from init::@1
-  [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
+  [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] )
   to:init::@2
 init::@2: scope:[init]  from init::@2 init::@3
-  [85] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
-  [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
-  [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
-  [88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
+  [82] (byte) init::ss#2 ← phi( init::@2/(byte) init::ss#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
+  [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] )
+  [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
+  [85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] )
   to:init::@return
 init::@return: scope:[init]  from init::@2
-  [89] return  [ ] ( main:4::init:7 [ ] )
+  [86] return  [ ] ( main:4::init:7 [ ] )
   to:@return
 plexInit: scope:[plexInit]  from init
-  [90] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [87] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:plexInit::plexSetScreen1
 plexInit::plexSetScreen1: scope:[plexInit]  from plexInit
-  [91] phi() [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [88] phi() [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:plexInit::@1
 plexInit::@1: scope:[plexInit]  from plexInit::@1 plexInit::plexSetScreen1
-  [92] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
-  [93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] )
-  [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
-  [95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] )
+  [89] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
+  [90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] )
+  [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
+  [92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] )
   to:plexInit::@return
 plexInit::@return: scope:[plexInit]  from plexInit::@1
-  [96] return  [ ] ( main:4::init:7::plexInit:76 [ ] )
+  [93] return  [ ] ( main:4::init:7::plexInit:73 [ ] )
   to:@return
 
 DOMINATORS
 @begin dominated by  @begin 
-@28 dominated by  @28 @begin 
-@31 dominated by  @28 @31 @begin 
-@end dominated by  @end @28 @31 @begin 
-main dominated by  @28 main @31 @begin 
-main::@1 dominated by  @28 main main::@1 @31 @begin 
-main::@return dominated by  main::@return @28 main main::@1 @31 @begin 
-loop dominated by  @28 main loop main::@1 @31 @begin 
-loop::@1 dominated by  @28 main loop loop::@1 main::@1 @31 @begin 
-loop::@4 dominated by  @28 main loop loop::@1 main::@1 loop::@4 @31 @begin 
-loop::@6 dominated by  @28 main loop loop::@1 main::@1 loop::@6 loop::@4 @31 @begin 
-loop::@7 dominated by  @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin 
-loop::@18 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin 
-loop::@26 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@26 @begin 
-loop::@8 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin 
-loop::@27 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 loop::@27 @begin 
-loop::@9 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@26 loop::@27 @begin 
-loop::plexShowNextYpos1 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@26 loop::@27 @begin loop::plexShowNextYpos1 
-loop::@25 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::plexShowNextYpos1 
-loop::@10 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::@10 loop::plexShowNextYpos1 
-loop::@12 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 
-loop::@28 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 loop::@28 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 
-loop::@23 dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@23 @31 loop::@8 loop::@9 loop::@25 loop::@26 loop::@27 loop::@28 @begin loop::@10 loop::plexShowNextYpos1 loop::@12 
-plexShowSprite dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite 
-plexShowSprite::@4 dominated by  loop::@18 @28 plexShowSprite::@4 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite 
-plexShowSprite::@2 dominated by  loop::@18 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite 
-plexShowSprite::@return dominated by  loop::@18 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite plexShowSprite::@return 
-plexShowSprite::@7 dominated by  loop::@18 plexShowSprite::@7 @28 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite 
-plexShowSprite::@1 dominated by  loop::@18 @28 main plexShowSprite::@1 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 loop::@8 loop::@26 @begin plexShowSprite 
-plexSort dominated by  loop::@18 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort 
-plexSort::@1 dominated by  loop::@18 plexSort::@1 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort 
-plexSort::@10 dominated by  loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort 
-plexSort::@3 dominated by  loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@3 
-plexSort::@5 dominated by  loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@3 plexSort::@5 
-plexSort::@2 dominated by  plexSort::@2 loop::@18 plexSort::@1 @28 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort 
-plexSort::@return dominated by  plexSort::@2 loop::@18 plexSort::@1 @28 plexSort::@return main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort 
-plexSort::@7 dominated by  loop::@18 plexSort::@1 @28 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @31 @begin plexSort plexSort::@7 plexSort::@3 
-init dominated by  @28 main @31 init @begin 
-init::@1 dominated by  @28 main @31 init @begin init::@1 
-init::@3 dominated by  @28 main @31 init @begin init::@3 init::@1 
-init::@2 dominated by  @28 main @31 init @begin init::@3 init::@2 init::@1 
-init::@return dominated by  @28 main @31 init @begin init::@return init::@3 init::@2 init::@1 
-plexInit dominated by  @28 main @31 init @begin plexInit 
-plexInit::plexSetScreen1 dominated by  @28 plexInit::plexSetScreen1 main @31 init @begin plexInit 
-plexInit::@1 dominated by  @28 plexInit::plexSetScreen1 main @31 plexInit::@1 init @begin plexInit 
-plexInit::@return dominated by  @28 plexInit::plexSetScreen1 main @31 plexInit::@1 init @begin plexInit plexInit::@return 
+@8 dominated by  @begin @8 
+@11 dominated by  @11 @begin @8 
+@end dominated by  @end @11 @begin @8 
+main dominated by  main @11 @begin @8 
+main::@1 dominated by  main main::@1 @11 @begin @8 
+main::@return dominated by  main::@return main main::@1 @11 @begin @8 
+loop dominated by  main loop main::@1 @11 @begin @8 
+loop::@1 dominated by  main loop loop::@1 main::@1 @11 @begin @8 
+loop::@4 dominated by  main loop loop::@1 main::@1 loop::@4 @11 @begin @8 
+loop::@6 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@4 @11 @begin @8 
+loop::@7 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 @11 @begin @8 
+loop::@20 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin @8 
+loop::@30 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin @8 loop::@30 
+loop::@8 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 
+loop::@11 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 loop::@11 
+loop::plexShowNextYpos1 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin @8 loop::@30 loop::@11 loop::plexShowNextYpos1 
+loop::@29 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 
+loop::@12 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 
+loop::@14 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+loop::@31 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 @8 loop::@30 loop::@31 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+loop::@27 dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 loop::@27 @begin loop::@29 @8 loop::@30 loop::@31 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite::@4 dominated by  plexShowSprite::@4 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite::@2 dominated by  main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite::@return dominated by  main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite plexShowSprite::@return @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite::@7 dominated by  plexShowSprite::@7 main plexShowSprite::@2 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexShowSprite::@1 dominated by  main plexShowSprite::@1 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 loop::@8 @11 @begin loop::@29 plexShowSprite @8 loop::@30 loop::@11 loop::plexShowNextYpos1 loop::@12 loop::@14 
+plexSort dominated by  main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 
+plexSort::@1 dominated by  plexSort::@1 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 
+plexSort::@10 dominated by  plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 
+plexSort::@3 dominated by  plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@3 
+plexSort::@5 dominated by  plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@3 plexSort::@5 
+plexSort::@2 dominated by  plexSort::@2 plexSort::@1 main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 
+plexSort::@return dominated by  plexSort::@2 plexSort::@1 plexSort::@return main loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 
+plexSort::@7 dominated by  plexSort::@1 main plexSort::@10 loop loop::@1 main::@1 loop::@6 loop::@7 loop::@4 loop::@20 @11 @begin plexSort @8 plexSort::@7 plexSort::@3 
+init dominated by  main @11 init @begin @8 
+init::@1 dominated by  main @11 init @begin init::@1 @8 
+init::@3 dominated by  main @11 init @begin init::@3 init::@1 @8 
+init::@2 dominated by  main @11 init @begin init::@3 init::@2 init::@1 @8 
+init::@return dominated by  main @11 init @begin init::@return init::@3 init::@2 init::@1 @8 
+plexInit dominated by  main @11 init @begin plexInit @8 
+plexInit::plexSetScreen1 dominated by  plexInit::plexSetScreen1 main @11 init @begin plexInit @8 
+plexInit::@1 dominated by  plexInit::plexSetScreen1 main plexInit::@1 @11 init @begin plexInit @8 
+plexInit::@return dominated by  plexInit::plexSetScreen1 main plexInit::@1 @11 init @begin plexInit @8 plexInit::@return 
 
 NATURAL LOOPS
 Found back edge: Loop head: loop::@4 tails: loop::@4 blocks: null
 Found back edge: Loop head: loop::@7 tails: loop::@7 blocks: null
-Found back edge: Loop head: loop::@8 tails: loop::@27 blocks: null
-Found back edge: Loop head: loop::@10 tails: loop::@10 blocks: null
-Found back edge: Loop head: loop::@9 tails: loop::@28 blocks: null
-Found back edge: Loop head: loop::@1 tails: loop::@23 blocks: null
+Found back edge: Loop head: loop::@8 tails: loop::@8 blocks: null
+Found back edge: Loop head: loop::@12 tails: loop::@12 blocks: null
+Found back edge: Loop head: loop::@11 tails: loop::@31 blocks: null
+Found back edge: Loop head: loop::@1 tails: loop::@27 blocks: null
 Found back edge: Loop head: plexSort::@1 tails: plexSort::@2 blocks: null
 Found back edge: Loop head: plexSort::@3 tails: plexSort::@7 blocks: null
 Found back edge: Loop head: init::@1 tails: init::@1 blocks: null
@@ -4763,10 +3043,10 @@ Found back edge: Loop head: init::@2 tails: init::@2 blocks: null
 Found back edge: Loop head: plexInit::@1 tails: plexInit::@1 blocks: null
 Populated: Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 
 Populated: Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 
-Populated: Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 
-Populated: Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 
-Populated: Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 
-Populated: Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 
+Populated: Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 
+Populated: Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 
+Populated: Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 
+Populated: Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 
 Populated: Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10 
 Populated: Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3 
 Populated: Loop head: init::@1 tails: init::@1 blocks: init::@1 
@@ -4774,10 +3054,10 @@ Populated: Loop head: init::@2 tails: init::@2 blocks: init::@2
 Populated: Loop head: plexInit::@1 tails: plexInit::@1 blocks: plexInit::@1 
 Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 
 Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 
-Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 
-Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 
-Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 
-Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 
+Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 
+Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 
+Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 
+Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 
 Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10 
 Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3 
 Loop head: init::@1 tails: init::@1 blocks: init::@1 
@@ -4793,10 +3073,10 @@ Found 2 loops in scope [init]
 Found 6 loops in scope [loop]
   Loop head: loop::@4 tails: loop::@4 blocks: loop::@4 
   Loop head: loop::@7 tails: loop::@7 blocks: loop::@7 
-  Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8 
-  Loop head: loop::@10 tails: loop::@10 blocks: loop::@10 
-  Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 
-  Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1 
+  Loop head: loop::@8 tails: loop::@8 blocks: loop::@8 
+  Loop head: loop::@12 tails: loop::@12 blocks: loop::@12 
+  Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 
+  Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1 
 Found 1 loops in scope [plexInit]
   Loop head: plexInit::@1 tails: plexInit::@1 blocks: plexInit::@1 
 Found 2 loops in scope [plexSort]
@@ -4805,10 +3085,10 @@ Found 2 loops in scope [plexSort]
 Found 0 loops in scope [plexShowSprite]
 Loop head: loop::@4 tails: loop::@4 blocks: loop::@4  depth: 2
 Loop head: loop::@7 tails: loop::@7 blocks: loop::@7  depth: 2
-Loop head: loop::@8 tails: loop::@27 blocks: loop::@27 loop::@8  depth: 2
-Loop head: loop::@10 tails: loop::@10 blocks: loop::@10  depth: 3
-Loop head: loop::@9 tails: loop::@28 blocks: loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9  depth: 2
-Loop head: loop::@1 tails: loop::@23 blocks: loop::@23 loop::@28 loop::@12 loop::@10 loop::@25 loop::plexShowNextYpos1 loop::@9 loop::@27 loop::@8 loop::@26 loop::@18 loop::@7 loop::@6 loop::@4 loop::@1  depth: 1
+Loop head: loop::@8 tails: loop::@8 blocks: loop::@8  depth: 2
+Loop head: loop::@12 tails: loop::@12 blocks: loop::@12  depth: 3
+Loop head: loop::@11 tails: loop::@31 blocks: loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11  depth: 2
+Loop head: loop::@1 tails: loop::@27 blocks: loop::@27 loop::@31 loop::@14 loop::@12 loop::@29 loop::plexShowNextYpos1 loop::@11 loop::@8 loop::@30 loop::@20 loop::@7 loop::@6 loop::@4 loop::@1  depth: 1
 Loop head: plexSort::@1 tails: plexSort::@2 blocks: plexSort::@2 plexSort::@1 plexSort::@5 plexSort::@3 plexSort::@7 plexSort::@10  depth: 2
 Loop head: plexSort::@3 tails: plexSort::@7 blocks: plexSort::@7 plexSort::@3  depth: 3
 Loop head: init::@1 tails: init::@1 blocks: init::@1  depth: 1
@@ -4850,18 +3130,17 @@ VARIABLE REGISTER WEIGHTS
 (word) init::xp#1 7.333333333333333
 (word) init::xp#2 8.25
 (void()) loop()
+(byte~) loop::$4 202.0
 (byte) loop::plexShowNextYpos1_return
 (byte) loop::plexShowNextYpos1_return#0 202.0
 (byte) loop::rasterY
 (byte) loop::rasterY#0 551.0
 (byte) loop::sin_idx
-(byte) loop::sin_idx#1 1.2222222222222223
+(byte) loop::sin_idx#1 1.375
 (byte) loop::sin_idx#6 3.666666666666667
 (byte) loop::ss
 (byte) loop::ss#1 151.5
-(byte) loop::ss#10 28.857142857142858
-(byte) loop::ss#3 151.5
-(byte) loop::ss#4 101.0
+(byte) loop::ss#6 28.857142857142858
 (byte) loop::sy
 (byte) loop::sy#1 151.5
 (byte) loop::sy#2 101.0
@@ -4900,34 +3179,31 @@ VARIABLE REGISTER WEIGHTS
 (byte) plexSort::s#3 2052.5
 (byte~) plexSort::s#6 202.0
 (byte) plex_show_idx
-(byte) plex_show_idx#13 14.999999999999998
-(byte) plex_show_idx#15 16.944444444444443
-(byte) plex_show_idx#25 202.0
+(byte) plex_show_idx#14 11.444444444444443
+(byte) plex_show_idx#18 11.052631578947366
 (byte) plex_sprite_idx
-(byte) plex_sprite_idx#13 17.333333333333336
-(byte) plex_sprite_idx#15 10.736842105263158
-(byte) plex_sprite_idx#24 202.0
+(byte) plex_sprite_idx#14 10.299999999999999
+(byte) plex_sprite_idx#38 6.2941176470588225
 (byte) plex_sprite_msb
-(byte) plex_sprite_msb#14 13.866666666666665
-(byte) plex_sprite_msb#17 14.571428571428571
-(byte) plex_sprite_msb#26 2.0
-(byte) plex_sprite_msb#29 202.0
+(byte) plex_sprite_msb#16 20.599999999999998
+(byte) plex_sprite_msb#24 2.0
+(byte) plex_sprite_msb#38 5.349999999999999
 
 Initial phi equivalence classes
 [ loop::sin_idx#6 loop::sin_idx#1 ]
 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 [ loop::sy#2 loop::sy#1 ]
-[ loop::ss#4 loop::ss#1 ]
-[ loop::ss#10 loop::ss#3 ]
-[ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ]
-[ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ]
-[ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
+[ plex_show_idx#18 plex_show_idx#14 ]
+[ plex_sprite_idx#38 plex_sprite_idx#14 ]
+[ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ]
+[ loop::ss#6 loop::ss#1 ]
 [ plexSort::m#2 plexSort::m#1 ]
 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
 [ init::sx#2 init::sx#1 ]
 [ init::xp#2 init::xp#1 ]
 [ init::ss#2 init::ss#1 ]
 [ plexInit::i#2 plexInit::i#1 ]
+Added variable loop::$4 to zero page equivalence class [ loop::$4 ]
 Added variable loop::plexShowNextYpos1_return#0 to zero page equivalence class [ loop::plexShowNextYpos1_return#0 ]
 Added variable loop::rasterY#0 to zero page equivalence class [ loop::rasterY#0 ]
 Added variable plexShowSprite::plex_sprite_idx2#0 to zero page equivalence class [ plexShowSprite::plex_sprite_idx2#0 ]
@@ -4944,17 +3220,17 @@ Complete equivalence classes
 [ loop::sin_idx#6 loop::sin_idx#1 ]
 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 [ loop::sy#2 loop::sy#1 ]
-[ loop::ss#4 loop::ss#1 ]
-[ loop::ss#10 loop::ss#3 ]
-[ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ]
-[ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ]
-[ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
+[ plex_show_idx#18 plex_show_idx#14 ]
+[ plex_sprite_idx#38 plex_sprite_idx#14 ]
+[ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ]
+[ loop::ss#6 loop::ss#1 ]
 [ plexSort::m#2 plexSort::m#1 ]
 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
 [ init::sx#2 init::sx#1 ]
 [ init::xp#2 init::xp#1 ]
 [ init::ss#2 init::ss#1 ]
 [ plexInit::i#2 plexInit::i#1 ]
+[ loop::$4 ]
 [ loop::plexShowNextYpos1_return#0 ]
 [ loop::rasterY#0 ]
 [ plexShowSprite::plex_sprite_idx2#0 ]
@@ -4970,17 +3246,17 @@ Complete equivalence classes
 Allocated zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
 Allocated zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 Allocated zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ]
-Allocated zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ]
-Allocated zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ]
-Allocated zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ]
-Allocated zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ]
-Allocated zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
-Allocated zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
-Allocated zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
-Allocated zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ]
-Allocated zp ZP_WORD:13 [ init::xp#2 init::xp#1 ]
-Allocated zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ]
-Allocated zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ]
+Allocated zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ]
+Allocated zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ]
+Allocated zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ]
+Allocated zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ]
+Allocated zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ]
+Allocated zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
+Allocated zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ]
+Allocated zp ZP_WORD:12 [ init::xp#2 init::xp#1 ]
+Allocated zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ]
+Allocated zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ]
+Allocated zp ZP_BYTE:16 [ loop::$4 ]
 Allocated zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ]
 Allocated zp ZP_BYTE:18 [ loop::rasterY#0 ]
 Allocated zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ]
@@ -5017,25 +3293,25 @@ INITIAL ASM
   .label SCREEN = $400
   .label YSIN = $2100
   .label PLEX_SCREEN_PTR = SCREEN+$3f8
-  .label plex_sprite_idx = 7
-  .label plex_show_idx = 8
-  .label plex_sprite_msb = 9
+  .label plex_sprite_idx = 6
+  .label plex_show_idx = 5
+  .label plex_sprite_msb = 7
 //SEG2 @begin
 bbegin:
-  jmp b28
-//SEG3 @28
-b28:
-//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
+  jmp b8
+//SEG3 @8
+b8:
+//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
 //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++)     .for (var x=0;x<3; x++)         .byte pic.getSinglecolorByte(x,y)  }}
-//SEG6 [3] phi from @28 to @31 [phi:@28->@31]
-b31_from_b28:
-  jmp b31
-//SEG7 @31
-b31:
+//SEG6 [3] phi from @8 to @11 [phi:@8->@11]
+b11_from_b8:
+  jmp b11
+//SEG7 @11
+b11:
 //SEG8 [4] call main  [ ] ( )
   jsr main
-//SEG9 [5] phi from @31 to @end [phi:@31->@end]
-bend_from_b31:
+//SEG9 [5] phi from @11 to @end [phi:@11->@end]
+bend_from_b11:
   jmp bend
 //SEG10 @end
 bend:
@@ -5062,14 +3338,13 @@ main: {
 }
 //SEG20 loop
 loop: {
+    .label _4 = $10
     .label y_idx = 3
     .label sy = 4
     .label sin_idx = 2
-    .label ss = 5
     .label plexShowNextYpos1_return = $11
     .label rasterY = $12
-    .label ss_3 = 6
-    .label ss_10 = 6
+    .label ss = 8
   //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1]
   b1_from_loop:
   //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 
@@ -5123,134 +3398,112 @@ loop: {
     lda sy
     cmp #PLEX_COUNT-1+1
     bne b7_from_b7
-    jmp b18
-  //SEG40 loop::@18
-  b18:
+    jmp b20
+  //SEG40 loop::@20
+  b20:
   //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuz1=vbuz1_plus_1 
     inc sin_idx
   //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
   //SEG43 [23] call plexSort  [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
-  //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort]
-  plexSort_from_b18:
+  //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort]
+  plexSort_from_b20:
     jsr plexSort
-    jmp b26
-  //SEG45 loop::@26
-  b26:
-  //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
-    inc BORDERCOL
-  //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8]
-  b8_from_b26:
-  //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 
+    jmp b30
+  //SEG45 loop::@30
+  b30:
+  //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
+    lda #BLACK
+    sta BORDERCOL
+    jmp b8
+  //SEG47 loop::@8
+  b8:
+  //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] ) -- vbuz1=_deref_pbuc1_band_vbuc2 
+    lda D011
+    and #$80
+    sta _4
+  //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuz1_neq_0_then_la1 
+    lda _4
+    bne b8
+  //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11]
+  b11_from_b8:
+  //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 
     lda #0
     sta ss
-  //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 
+  //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 
     lda #1
     sta plex_sprite_msb
-  //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 
-    lda #0
-    sta plex_show_idx
-  //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 
+  //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 
     lda #0
     sta plex_sprite_idx
-    jmp b8
-  //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8]
-  b8_from_b27:
-  //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy 
-  //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy 
-  //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy 
-  //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy 
-    jmp b8
-  //SEG57 loop::@8
-  b8:
-  //SEG58 [26] call plexShowSprite  [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite]
-  plexShowSprite_from_b8:
-  //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy 
-  //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy 
-  //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy 
-    jsr plexShowSprite
-    jmp b27
-  //SEG63 loop::@27
-  b27:
-  //SEG64 [27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
-    inc ss
-  //SEG65 [28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
-    lda ss
-    cmp #8
-    bne b8_from_b27
-  //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9]
-  b9_from_b27:
-  //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 
-    lda #8
-    sta ss_10
-    jmp b9
-  //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9]
-  b9_from_b28:
-  //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy 
-    jmp b9
-  //SEG70 loop::@9
-  b9:
-  //SEG71 [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=vbuc2 
+  //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 
+    lda #0
+    sta plex_show_idx
+    jmp b11
+  //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11]
+  b11_from_b31:
+  //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy 
+  //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy 
+  //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy 
+  //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy 
+    jmp b11
+  //SEG60 loop::@11
+  b11:
+  //SEG61 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
     jmp plexShowNextYpos1
-  //SEG72 loop::plexShowNextYpos1
+  //SEG62 loop::plexShowNextYpos1
   plexShowNextYpos1:
-  //SEG73 [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 
+  //SEG63 [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 
     ldy plex_show_idx
     lda PLEX_SORTED_IDX,y
     tay
     lda PLEX_YPOS,y
     sta plexShowNextYpos1_return
-    jmp b25
-  //SEG74 loop::@25
-  b25:
-  //SEG75 [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- vbuz1=vbuz2_minus_vbuc1 
+    jmp b29
+  //SEG64 loop::@29
+  b29:
+  //SEG65 [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- vbuz1=vbuz2_minus_vbuc1 
     lda plexShowNextYpos1_return
     sec
     sbc #8
     sta rasterY
-    jmp b10
-  //SEG76 loop::@10
-  b10:
-  //SEG77 [33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
+    jmp b12
+  //SEG66 loop::@12
+  b12:
+  //SEG67 [31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
     lda RASTER
     cmp rasterY
-    bcc b10
-    jmp b12
-  //SEG78 loop::@12
-  b12:
-  //SEG79 [34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
+    bcc b12
+    jmp b14
+  //SEG68 loop::@14
+  b14:
+  //SEG69 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
-  //SEG80 [35] call plexShowSprite  [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite]
-  plexShowSprite_from_b12:
-  //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy 
-  //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy 
-  //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy 
+  //SEG70 [33] call plexShowSprite  [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     jsr plexShowSprite
-    jmp b28
-  //SEG85 loop::@28
-  b28:
-  //SEG86 [36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1=_inc_vbuz1 
-    inc ss_3
-  //SEG87 [37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1_neq_vbuc1_then_la1 
-    lda ss_3
+    jmp b31
+  //SEG71 loop::@31
+  b31:
+  //SEG72 [34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
+    inc ss
+  //SEG73 [35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+    lda ss
     cmp #PLEX_COUNT-1+1
-    bne b9_from_b28
-    jmp b23
-  //SEG88 loop::@23
-  b23:
-  //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
+    bne b11_from_b31
+    jmp b27
+  //SEG74 loop::@27
+  b27:
+  //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
-  //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1]
-  b1_from_b23:
-  //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy 
+  //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1]
+  b1_from_b27:
+  //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy 
     jmp b1
 }
-//SEG92 plexShowSprite
+//SEG78 plexShowSprite
 plexShowSprite: {
     .label _2 = $15
     .label _3 = $16
@@ -5258,184 +3511,184 @@ plexShowSprite: {
     .label _6 = $18
     .label plex_sprite_idx2 = $13
     .label xpos_idx = $14
-  //SEG93 [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuz1=vbuz2_rol_1 
+  //SEG79 [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuz1=vbuz2_rol_1 
     lda plex_sprite_idx
     asl
     sta plex_sprite_idx2
-  //SEG94 [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
+  //SEG80 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_YPOS,x
     ldx plex_sprite_idx2
     sta SPRITES_YPOS,x
-  //SEG95 [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
+  //SEG81 [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_PTR,x
     ldx plex_sprite_idx
     sta PLEX_SCREEN_PTR,x
-  //SEG96 [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 
+  //SEG82 [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 
     ldy plex_show_idx
     lda PLEX_SORTED_IDX,y
     asl
     sta xpos_idx
-  //SEG97 [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 
+  //SEG83 [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 
     ldy xpos_idx
     lda PLEX_XPOS,y
     sta _2
-  //SEG98 [45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
+  //SEG84 [42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
     lda _2
     ldy plex_sprite_idx2
     sta SPRITES_XPOS,y
-  //SEG99 [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 
+  //SEG85 [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 
     ldy xpos_idx
     lda PLEX_XPOS+1,y
     sta _3
-  //SEG100 [47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuz1_neq_0_then_la1 
+  //SEG86 [44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- vbuz1_neq_0_then_la1 
     lda _3
     bne b1
     jmp b4
-  //SEG101 plexShowSprite::@4
+  //SEG87 plexShowSprite::@4
   b4:
-  //SEG102 [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ) -- vbuz1=vbuc1_bxor_vbuz2 
+  //SEG88 [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ) -- vbuz1=vbuc1_bxor_vbuz2 
     lda plex_sprite_msb
     eor #$ff
     sta _5
-  //SEG103 [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 
+  //SEG89 [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 
     lda SPRITES_XMSB
     and _5
     sta SPRITES_XMSB
     jmp b2
-  //SEG104 plexShowSprite::@2
+  //SEG90 plexShowSprite::@2
   b2:
-  //SEG105 [50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ) -- vbuz1=vbuz2_plus_1 
+  //SEG91 [47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ) -- vbuz1=vbuz2_plus_1 
     ldy plex_sprite_idx
     iny
     sty _6
-  //SEG106 [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuz1=vbuz2_band_vbuc1 
+  //SEG92 [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ) -- vbuz1=vbuz2_band_vbuc1 
     lda #7
     and _6
     sta plex_sprite_idx
-  //SEG107 [52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG93 [49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ) -- vbuz1=_inc_vbuz1 
     inc plex_show_idx
-  //SEG108 [53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1=vbuz1_rol_1 
+  //SEG94 [50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1=vbuz1_rol_1 
     asl plex_sprite_msb
-  //SEG109 [54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1_neq_0_then_la1 
+  //SEG95 [51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1_neq_0_then_la1 
     lda plex_sprite_msb
     bne b7_from_b2
-  //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
+  //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
   breturn_from_b2:
-  //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
+  //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
     lda #1
     sta plex_sprite_msb
     jmp breturn
-  //SEG112 plexShowSprite::@return
+  //SEG98 plexShowSprite::@return
   breturn:
-  //SEG113 [56] return  [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
+  //SEG99 [53] return  [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     rts
-  //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
+  //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
   b7_from_b2:
     jmp b7
-  //SEG115 plexShowSprite::@7
+  //SEG101 plexShowSprite::@7
   b7:
-  //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
+  //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
   breturn_from_b7:
-  //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
+  //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
     jmp breturn
-  //SEG118 plexShowSprite::@1
+  //SEG104 plexShowSprite::@1
   b1:
-  //SEG119 [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
+  //SEG105 [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
     lda SPRITES_XMSB
     ora plex_sprite_msb
     sta SPRITES_XMSB
     jmp b2
 }
-//SEG120 plexSort
+//SEG106 plexSort
 plexSort: {
     .label nxt_idx = $19
     .label nxt_y = $1a
-    .label m = $a
-    .label s = $b
+    .label m = 9
+    .label s = $a
     .label s_2 = $1b
-  //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
+  //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
   b1_from_plexSort:
-  //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
+  //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
     lda #0
     sta m
     jmp b1
-  //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
+  //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
   b1_from_b2:
-  //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
+  //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
     jmp b1
-  //SEG125 plexSort::@1
+  //SEG111 plexSort::@1
   b1:
-  //SEG126 [61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG112 [58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     ldy m
     lda PLEX_SORTED_IDX+1,y
     sta nxt_idx
-  //SEG127 [62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG113 [59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     ldy nxt_idx
     lda PLEX_YPOS,y
     sta nxt_y
-  //SEG128 [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
+  //SEG114 [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
     lda nxt_y
     ldx m
     ldy PLEX_SORTED_IDX,x
     cmp PLEX_YPOS,y
     bcs b2
     jmp b10
-  //SEG129 plexSort::@10
+  //SEG115 plexSort::@10
   b10:
-  //SEG130 [64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuz1=vbuz2 
+  //SEG116 [61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuz1=vbuz2 
     lda m
     sta s
-  //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
+  //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
   b3_from_b10:
   b3_from_b7:
-  //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
+  //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
     jmp b3
-  //SEG133 plexSort::@3
+  //SEG119 plexSort::@3
   b3:
-  //SEG134 [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 
+  //SEG120 [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 
     ldy s
     lda PLEX_SORTED_IDX,y
     sta PLEX_SORTED_IDX+1,y
-  //SEG135 [67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1=_dec_vbuz1 
+  //SEG121 [64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1=_dec_vbuz1 
     dec s
-  //SEG136 [68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG122 [65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda s
     cmp #$ff
     bne b7
     jmp b5
-  //SEG137 plexSort::@5
+  //SEG123 plexSort::@5
   b5:
-  //SEG138 [69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuz1=_inc_vbuz2 
+  //SEG124 [66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuz1=_inc_vbuz2 
     ldy s
     iny
     sty s_2
-  //SEG139 [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
+  //SEG125 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
     lda nxt_idx
     ldy s_2
     sta PLEX_SORTED_IDX,y
     jmp b2
-  //SEG140 plexSort::@2
+  //SEG126 plexSort::@2
   b2:
-  //SEG141 [71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG127 [68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
     inc m
-  //SEG142 [72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG128 [69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda m
     cmp #PLEX_COUNT-2+1
     bne b1_from_b2
     jmp breturn
-  //SEG143 plexSort::@return
+  //SEG129 plexSort::@return
   breturn:
-  //SEG144 [73] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+  //SEG130 [70] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
     rts
-  //SEG145 plexSort::@7
+  //SEG131 plexSort::@7
   b7:
-  //SEG146 [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
+  //SEG132 [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
     lda nxt_y
     ldx s
     ldy PLEX_SORTED_IDX,x
@@ -5443,52 +3696,52 @@ plexSort: {
     bcc b3_from_b7
     jmp b5
 }
-//SEG147 init
+//SEG133 init
 init: {
     .label _6 = $1c
-    .label xp = $d
-    .label sx = $c
-    .label ss = $f
-  //SEG148 [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+    .label xp = $c
+    .label sx = $b
+    .label ss = $e
+  //SEG134 [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #VIC_DEN|VIC_RSEL|3
     sta D011
-  //SEG149 [76] call plexInit  [ ] ( main:4::init:7 [ ] )
-  //SEG150 [90] phi from init to plexInit [phi:init->plexInit]
+  //SEG135 [73] call plexInit  [ ] ( main:4::init:7 [ ] )
+  //SEG136 [87] phi from init to plexInit [phi:init->plexInit]
   plexInit_from_init:
     jsr plexInit
-  //SEG151 [77] phi from init to init::@1 [phi:init->init::@1]
+  //SEG137 [74] phi from init to init::@1 [phi:init->init::@1]
   b1_from_init:
-  //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
+  //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
     lda #<$20
     sta xp
     lda #>$20
     sta xp+1
-  //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 
+  //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 
     lda #0
     sta sx
     jmp b1
-  //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
+  //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
   b1_from_b1:
-  //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
-  //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
+  //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
+  //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
     jmp b1
-  //SEG157 init::@1
+  //SEG143 init::@1
   b1:
-  //SEG158 [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 
+  //SEG144 [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 
     ldy sx
     lda #$ff&SPRITE/$40
     sta PLEX_PTR,y
-  //SEG159 [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuz1=vbuz2_rol_1 
+  //SEG145 [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuz1=vbuz2_rol_1 
     lda sx
     asl
     sta _6
-  //SEG160 [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 
+  //SEG146 [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuz1=vwuz2 
     ldy _6
     lda xp
     sta PLEX_XPOS,y
     lda xp+1
     sta PLEX_XPOS+1,y
-  //SEG161 [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
+  //SEG147 [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
     clc
     lda xp
     adc #<$c
@@ -5496,80 +3749,80 @@ init: {
     lda xp+1
     adc #>$c
     sta xp+1
-  //SEG162 [82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG148 [79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuz1=_inc_vbuz1 
     inc sx
-  //SEG163 [83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG149 [80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda sx
     cmp #PLEX_COUNT-1+1
     bne b1_from_b1
     jmp b3
-  //SEG164 init::@3
+  //SEG150 init::@3
   b3:
-  //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+  //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #$ff
     sta SPRITES_ENABLE
-  //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
+  //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
   b2_from_b3:
-  //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 
+  //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 
     lda #0
     sta ss
     jmp b2
-  //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
+  //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
   b2_from_b2:
-  //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
+  //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
     jmp b2
-  //SEG170 init::@2
+  //SEG156 init::@2
   b2:
-  //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 
+  //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 
     ldy ss
     lda #GREEN
     sta SPRITES_COLS,y
-  //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1=_inc_vbuz1 
     inc ss
-  //SEG173 [88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG159 [85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda ss
     cmp #8
     bne b2_from_b2
     jmp breturn
-  //SEG174 init::@return
+  //SEG160 init::@return
   breturn:
-  //SEG175 [89] return  [ ] ( main:4::init:7 [ ] )
+  //SEG161 [86] return  [ ] ( main:4::init:7 [ ] )
     rts
 }
-//SEG176 plexInit
+//SEG162 plexInit
 plexInit: {
-    .label i = $10
-  //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
+    .label i = $f
+  //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
   plexSetScreen1_from_plexInit:
     jmp plexSetScreen1
-  //SEG178 plexInit::plexSetScreen1
+  //SEG164 plexInit::plexSetScreen1
   plexSetScreen1:
-  //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
+  //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
   b1_from_plexSetScreen1:
-  //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 
+  //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 
     lda #0
     sta i
     jmp b1
-  //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
+  //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
   b1_from_b1:
-  //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
+  //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
     jmp b1
-  //SEG183 plexInit::@1
+  //SEG169 plexInit::@1
   b1:
-  //SEG184 [93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 
+  //SEG170 [90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 
     ldy i
     tya
     sta PLEX_SORTED_IDX,y
-  //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuz1=_inc_vbuz1 
     inc i
-  //SEG186 [95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG172 [92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda i
     cmp #PLEX_COUNT-1+1
     bne b1_from_b1
     jmp breturn
-  //SEG187 plexInit::@return
+  //SEG173 plexInit::@return
   breturn:
-  //SEG188 [96] return  [ ] ( main:4::init:7::plexInit:76 [ ] )
+  //SEG174 [93] return  [ ] ( main:4::init:7::plexInit:73 [ ] )
     rts
 }
   PLEX_XPOS: .fill 2*PLEX_COUNT, 0
@@ -5577,7 +3830,7 @@ plexInit: {
   PLEX_PTR: .fill PLEX_COUNT, 0
   PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
 .pc = YSIN "Inline"
-  .var min = 51
+  .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -5597,85 +3850,88 @@ Statement [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ←
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ]
 Statement [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a 
-Statement [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ]
-Statement [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ) always clobbers reg byte a 
-Statement [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) always clobbers reg byte a 
-Statement [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
-Statement [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ]
-Statement [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
+Statement [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] ) always clobbers reg byte a 
+Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ]
+Statement [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ) always clobbers reg byte a 
+Statement [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) always clobbers reg byte a 
+Statement [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
+Statement [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ]
-Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
-Statement [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a 
-Statement [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a 
+Statement [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a 
+Statement [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a 
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ]
-Statement [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ) always clobbers reg byte a 
-Statement [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ) always clobbers reg byte a 
-Statement [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
+Statement [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ) always clobbers reg byte a 
+Statement [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ) always clobbers reg byte a 
+Statement [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) always clobbers reg byte a 
+Statement [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ) always clobbers reg byte a 
+Statement [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) always clobbers reg byte a 
+Statement [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ]
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ]
 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ plexSort::nxt_y#0 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
-Statement [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a 
-Statement [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a 
-Statement [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
-Statement [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ]
-Statement [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a 
-Statement [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
-Statement [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a 
-Statement [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
-Statement [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
+Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a 
+Statement [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a 
+Statement [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
+Statement [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ]
+Statement [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a 
+Statement [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
+Statement [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a 
+Statement [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
+Statement [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ]
 Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 [ loop::sin_idx#6 ] ( main:4::loop:9 [ loop::sin_idx#6 ] ) always clobbers reg byte a 
 Statement [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#2 loop::sy#2 ] ) always clobbers reg byte a 
 Statement [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::sy#2 loop::y_idx#1 ] ) always clobbers reg byte a 
-Statement [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) always clobbers reg byte a 
-Statement [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ) always clobbers reg byte a 
-Statement [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) always clobbers reg byte a 
-Statement [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
-Statement [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
-Statement [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
-Statement [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
-Statement [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a 
-Statement [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a 
-Statement [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ) always clobbers reg byte a 
-Statement [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ) always clobbers reg byte a 
-Statement [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) always clobbers reg byte a 
-Statement [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a 
-Statement [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a 
-Statement [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a 
-Statement [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a 
-Statement [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
-Statement [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
-Statement [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a 
-Statement [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
-Statement [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a 
-Statement [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
-Statement [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a 
+Statement [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
+Statement [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] ) always clobbers reg byte a 
+Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) always clobbers reg byte a 
+Statement [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ) always clobbers reg byte a 
+Statement [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) always clobbers reg byte a 
+Statement [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a 
+Statement [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a 
+Statement [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a 
+Statement [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) always clobbers reg byte a 
+Statement [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ) always clobbers reg byte a 
+Statement [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ) always clobbers reg byte a 
+Statement [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) always clobbers reg byte a 
+Statement [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ) always clobbers reg byte a 
+Statement [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) always clobbers reg byte a 
+Statement [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) always clobbers reg byte a 
+Statement [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) always clobbers reg byte a 
+Statement [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) always clobbers reg byte a 
+Statement [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) always clobbers reg byte a 
+Statement [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
+Statement [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
+Statement [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) always clobbers reg byte a 
+Statement [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) always clobbers reg byte a 
+Statement [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a 
+Statement [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a 
+Statement [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a 
 Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , 
 Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , 
 Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , 
-Potential registers zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] : zp ZP_WORD:13 , 
-Potential registers zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , 
-Potential registers zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] : zp ZP_WORD:12 , 
+Potential registers zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:16 [ loop::$4 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , 
 Potential registers zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , 
 Potential registers zp ZP_BYTE:18 [ loop::rasterY#0 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , 
 Potential registers zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , 
@@ -5690,59 +3946,56 @@ Potential registers zp ZP_BYTE:27 [ plexSort::s#2 ] : zp ZP_BYTE:27 , reg byte a
 Potential registers zp ZP_BYTE:28 [ init::$6 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , 
 
 REGISTER UPLIFT SCOPES
-Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 202: zp ZP_BYTE:27 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
-Uplift Scope [loop] 551: zp ZP_BYTE:18 [ loop::rasterY#0 ] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 252.5: zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] 202: zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] 180.36: zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] 4.89: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
-Uplift Scope [] 233.94: zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] 232.44: zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] 230.07: zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] 
-Uplift Scope [init] 33: zp ZP_BYTE:15 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:12 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:28 [ init::$6 ] 15.58: zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] 
-Uplift Scope [plexInit] 38.5: zp ZP_BYTE:16 [ plexInit::i#2 plexInit::i#1 ] 
+Uplift Scope [plexSort] 3,622.83: zp ZP_BYTE:10 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] 202: zp ZP_BYTE:27 [ plexSort::s#2 ] 193.58: zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] 150.38: zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 30.3: zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
+Uplift Scope [loop] 551: zp ZP_BYTE:18 [ loop::rasterY#0 ] 252.5: zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] 246.33: zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] 202: zp ZP_BYTE:16 [ loop::$4 ] 202: zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] 180.36: zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] 5.04: zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
+Uplift Scope [init] 33: zp ZP_BYTE:14 [ init::ss#2 init::ss#1 ] 25.3: zp ZP_BYTE:11 [ init::sx#2 init::sx#1 ] 22: zp ZP_BYTE:28 [ init::$6 ] 15.58: zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] 
+Uplift Scope [] 27.95: zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] 22.5: zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] 16.59: zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] 
+Uplift Scope [plexInit] 38.5: zp ZP_BYTE:15 [ plexInit::i#2 plexInit::i#1 ] 
 Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:21 [ plexShowSprite::$2 ] 4: zp ZP_BYTE:22 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:23 [ plexShowSprite::$5 ] 4: zp ZP_BYTE:24 [ plexShowSprite::$6 ] 2: zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] 1.2: zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] 
 Uplift Scope [main] 
 
-Uplifting [plexSort] best 81021 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
+Uplifting [plexSort] best 81033 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::s#2 ] zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
 Limited combination testing to 100 combinations of 324 possible.
-Uplifting [loop] best 79291 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
-Limited combination testing to 100 combinations of 3888 possible.
-Uplifting [] best 79291 combination zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] 
-Uplifting [init] best 79001 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] reg byte a [ init::$6 ] zp ZP_WORD:13 [ init::xp#2 init::xp#1 ] 
-Uplifting [plexInit] best 78881 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] 
-Uplifting [plexShowSprite] best 78861 combination reg byte a [ plexShowSprite::$2 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$5 ] reg byte a [ plexShowSprite::$6 ] zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] 
+Uplifting [loop] best 78903 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] reg byte y [ loop::sy#2 loop::sy#1 ] reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] reg byte a [ loop::$4 ] zp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ] zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
+Limited combination testing to 100 combinations of 5184 possible.
+Uplifting [init] best 78613 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] reg byte a [ init::$6 ] zp ZP_WORD:12 [ init::xp#2 init::xp#1 ] 
+Uplifting [] best 78613 combination zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] 
+Uplifting [plexInit] best 78493 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] 
+Uplifting [plexShowSprite] best 78473 combination reg byte a [ plexShowSprite::$2 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$5 ] reg byte a [ plexShowSprite::$6 ] zp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ] 
 Limited combination testing to 100 combinations of 2304 possible.
-Uplifting [main] best 78861 combination 
+Uplifting [main] best 78473 combination 
 Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::rasterY#0 ]
-Uplifting [loop] best 78861 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ]
-Uplifting [loop] best 78861 combination zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ]
-Uplifting [] best 78861 combination zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
-Uplifting [] best 78861 combination zp ZP_BYTE:9 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ]
-Uplifting [] best 78861 combination zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] 
+Uplifting [loop] best 78473 combination zp ZP_BYTE:18 [ loop::rasterY#0 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:17 [ loop::plexShowNextYpos1_return#0 ]
-Uplifting [loop] best 78261 combination reg byte a [ loop::plexShowNextYpos1_return#0 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ]
-Uplifting [plexSort] best 78261 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] 
-Attempting to uplift remaining variables inzp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ]
-Uplifting [loop] best 78261 combination zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] 
+Uplifting [loop] best 77873 combination reg byte a [ loop::plexShowNextYpos1_return#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ]
+Uplifting [plexSort] best 77873 combination zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ]
+Uplifting [loop] best 77873 combination zp ZP_BYTE:8 [ loop::ss#6 loop::ss#1 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexSort::nxt_y#0 ]
-Uplifting [plexSort] best 78261 combination zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 
+Uplifting [plexSort] best 77873 combination zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexSort::nxt_idx#0 ]
-Uplifting [plexSort] best 78261 combination zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
+Uplifting [plexSort] best 77873 combination zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ]
+Uplifting [] best 77873 combination zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ]
+Uplifting [] best 77873 combination zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ]
+Uplifting [] best 77873 combination zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
-Uplifting [loop] best 78261 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
+Uplifting [loop] best 77873 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexShowSprite::xpos_idx#0 ]
-Uplifting [plexShowSprite] best 78254 combination reg byte x [ plexShowSprite::xpos_idx#0 ] 
+Uplifting [plexShowSprite] best 77866 combination reg byte x [ plexShowSprite::xpos_idx#0 ] 
 Attempting to uplift remaining variables inzp ZP_BYTE:19 [ plexShowSprite::plex_sprite_idx2#0 ]
-Uplifting [plexShowSprite] best 78247 combination reg byte y [ plexShowSprite::plex_sprite_idx2#0 ] 
-Coalescing zero page register [ zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 ] ] with [ zp ZP_BYTE:6 [ loop::ss#10 loop::ss#3 ] ]
-Coalescing zero page register [ zp ZP_BYTE:5 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 ] ] with [ zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] ]
-Coalescing zero page register [ zp ZP_BYTE:7 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] ]
-Coalescing zero page register [ zp ZP_BYTE:8 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 ] ] with [ zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] ]
-Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 plexSort::m#2 plexSort::m#1 ]
-Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:4 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
-Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 plexSort::nxt_y#0 ]
-Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
-Allocated (was zp ZP_WORD:13) zp ZP_WORD:7 [ init::xp#2 init::xp#1 ]
+Uplifting [plexShowSprite] best 77859 combination reg byte y [ plexShowSprite::plex_sprite_idx2#0 ] 
+Coalescing zero page register [ zp ZP_BYTE:5 [ plex_show_idx#18 plex_show_idx#14 ] ] with [ zp ZP_BYTE:9 [ plexSort::m#2 plexSort::m#1 ] ]
+Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#38 plex_sprite_idx#14 ] ] with [ zp ZP_BYTE:25 [ plexSort::nxt_idx#0 ] ]
+Coalescing zero page register [ zp ZP_BYTE:7 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 ] ] with [ zp ZP_BYTE:26 [ plexSort::nxt_y#0 ] ]
+Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ plex_show_idx#18 plex_show_idx#14 plexSort::m#2 plexSort::m#1 ]
+Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ plex_sprite_idx#38 plex_sprite_idx#14 plexSort::nxt_idx#0 ]
+Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:5 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 plexSort::nxt_y#0 ]
+Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ]
+Allocated (was zp ZP_WORD:12) zp ZP_WORD:7 [ init::xp#2 init::xp#1 ]
 Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:9 [ loop::rasterY#0 ]
 
 ASSEMBLER BEFORE OPTIMIZATION
@@ -5769,24 +4022,24 @@ ASSEMBLER BEFORE OPTIMIZATION
   .label YSIN = $2100
   .label PLEX_SCREEN_PTR = SCREEN+$3f8
   .label plex_sprite_idx = 4
-  .label plex_show_idx = 5
-  .label plex_sprite_msb = 6
+  .label plex_show_idx = 3
+  .label plex_sprite_msb = 5
 //SEG2 @begin
 bbegin:
-  jmp b28
-//SEG3 @28
-b28:
-//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
+  jmp b8
+//SEG3 @8
+b8:
+//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
 //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++)     .for (var x=0;x<3; x++)         .byte pic.getSinglecolorByte(x,y)  }}
-//SEG6 [3] phi from @28 to @31 [phi:@28->@31]
-b31_from_b28:
-  jmp b31
-//SEG7 @31
-b31:
+//SEG6 [3] phi from @8 to @11 [phi:@8->@11]
+b11_from_b8:
+  jmp b11
+//SEG7 @11
+b11:
 //SEG8 [4] call main  [ ] ( )
   jsr main
-//SEG9 [5] phi from @31 to @end [phi:@31->@end]
-bend_from_b31:
+//SEG9 [5] phi from @11 to @end [phi:@11->@end]
+bend_from_b11:
   jmp bend
 //SEG10 @end
 bend:
@@ -5814,8 +4067,8 @@ main: {
 //SEG20 loop
 loop: {
     .label sin_idx = 2
-    .label ss = 3
     .label rasterY = 9
+    .label ss = 6
   //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1]
   b1_from_loop:
   //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 
@@ -5864,339 +4117,316 @@ loop: {
   //SEG39 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ) -- vbuyy_neq_vbuc1_then_la1 
     cpy #PLEX_COUNT-1+1
     bne b7_from_b7
-    jmp b18
-  //SEG40 loop::@18
-  b18:
+    jmp b20
+  //SEG40 loop::@20
+  b20:
   //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuz1=vbuz1_plus_1 
     inc sin_idx
   //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
   //SEG43 [23] call plexSort  [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
-  //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort]
-  plexSort_from_b18:
+  //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort]
+  plexSort_from_b20:
     jsr plexSort
-    jmp b26
-  //SEG45 loop::@26
-  b26:
-  //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
-    inc BORDERCOL
-  //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8]
-  b8_from_b26:
-  //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 
+    jmp b30
+  //SEG45 loop::@30
+  b30:
+  //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
+    lda #BLACK
+    sta BORDERCOL
+    jmp b8
+  //SEG47 loop::@8
+  b8:
+  //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2 
+    lda D011
+    and #$80
+  //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuaa_neq_0_then_la1 
+    cmp #0
+    bne b8
+  //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11]
+  b11_from_b8:
+  //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 
     lda #0
     sta ss
-  //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 
+  //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 
     lda #1
     sta plex_sprite_msb
-  //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 
-    lda #0
-    sta plex_show_idx
-  //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 
+  //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 
     lda #0
     sta plex_sprite_idx
-    jmp b8
-  //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8]
-  b8_from_b27:
-  //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy 
-  //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy 
-  //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy 
-  //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy 
-    jmp b8
-  //SEG57 loop::@8
-  b8:
-  //SEG58 [26] call plexShowSprite  [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite]
-  plexShowSprite_from_b8:
-  //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy 
-  //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy 
-  //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy 
-    jsr plexShowSprite
-    jmp b27
-  //SEG63 loop::@27
-  b27:
-  //SEG64 [27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
-    inc ss
-  //SEG65 [28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
-    lda ss
-    cmp #8
-    bne b8_from_b27
-  //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9]
-  b9_from_b27:
-  //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 
-    lda #8
-    sta ss
-    jmp b9
-  //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9]
-  b9_from_b28:
-  //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy 
-    jmp b9
-  //SEG70 loop::@9
-  b9:
-  //SEG71 [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=vbuc2 
+  //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 
+    lda #0
+    sta plex_show_idx
+    jmp b11
+  //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11]
+  b11_from_b31:
+  //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy 
+  //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy 
+  //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy 
+  //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy 
+    jmp b11
+  //SEG60 loop::@11
+  b11:
+  //SEG61 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
     jmp plexShowNextYpos1
-  //SEG72 loop::plexShowNextYpos1
+  //SEG62 loop::plexShowNextYpos1
   plexShowNextYpos1:
-  //SEG73 [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 
+  //SEG63 [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 
     ldy plex_show_idx
     lda PLEX_SORTED_IDX,y
     tay
     lda PLEX_YPOS,y
-    jmp b25
-  //SEG74 loop::@25
-  b25:
-  //SEG75 [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- vbuz1=vbuaa_minus_vbuc1 
+    jmp b29
+  //SEG64 loop::@29
+  b29:
+  //SEG65 [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- vbuz1=vbuaa_minus_vbuc1 
     sec
     sbc #8
     sta rasterY
-    jmp b10
-  //SEG76 loop::@10
-  b10:
-  //SEG77 [33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
+    jmp b12
+  //SEG66 loop::@12
+  b12:
+  //SEG67 [31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
     lda RASTER
     cmp rasterY
-    bcc b10
-    jmp b12
-  //SEG78 loop::@12
-  b12:
-  //SEG79 [34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
+    bcc b12
+    jmp b14
+  //SEG68 loop::@14
+  b14:
+  //SEG69 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
-  //SEG80 [35] call plexShowSprite  [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite]
-  plexShowSprite_from_b12:
-  //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy 
-  //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy 
-  //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy 
+  //SEG70 [33] call plexShowSprite  [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     jsr plexShowSprite
-    jmp b28
-  //SEG85 loop::@28
-  b28:
-  //SEG86 [36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1=_inc_vbuz1 
+    jmp b31
+  //SEG71 loop::@31
+  b31:
+  //SEG72 [34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
     inc ss
-  //SEG87 [37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG73 [35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda ss
     cmp #PLEX_COUNT-1+1
-    bne b9_from_b28
-    jmp b23
-  //SEG88 loop::@23
-  b23:
-  //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
+    bne b11_from_b31
+    jmp b27
+  //SEG74 loop::@27
+  b27:
+  //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
-  //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1]
-  b1_from_b23:
-  //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy 
+  //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1]
+  b1_from_b27:
+  //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy 
     jmp b1
 }
-//SEG92 plexShowSprite
+//SEG78 plexShowSprite
 plexShowSprite: {
-  //SEG93 [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuyy=vbuz1_rol_1 
+  //SEG79 [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuyy=vbuz1_rol_1 
     lda plex_sprite_idx
     asl
     tay
-  //SEG94 [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 
+  //SEG80 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_YPOS,x
     sta SPRITES_YPOS,y
-  //SEG95 [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
+  //SEG81 [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_PTR,x
     ldx plex_sprite_idx
     sta PLEX_SCREEN_PTR,x
-  //SEG96 [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 
+  //SEG82 [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     asl
     tax
-  //SEG97 [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx 
+  //SEG83 [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx 
     lda PLEX_XPOS,x
-  //SEG98 [45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuyy=vbuaa 
+  //SEG84 [42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuyy=vbuaa 
     sta SPRITES_XPOS,y
-  //SEG99 [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx 
+  //SEG85 [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx 
     lda PLEX_XPOS+1,x
-  //SEG100 [47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuaa_neq_0_then_la1 
+  //SEG86 [44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- vbuaa_neq_0_then_la1 
     cmp #0
     bne b1
     jmp b4
-  //SEG101 plexShowSprite::@4
+  //SEG87 plexShowSprite::@4
   b4:
-  //SEG102 [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ) -- vbuaa=vbuc1_bxor_vbuz1 
+  //SEG88 [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ) -- vbuaa=vbuc1_bxor_vbuz1 
     lda plex_sprite_msb
     eor #$ff
-  //SEG103 [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa 
+  //SEG89 [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa 
     and SPRITES_XMSB
     sta SPRITES_XMSB
     jmp b2
-  //SEG104 plexShowSprite::@2
+  //SEG90 plexShowSprite::@2
   b2:
-  //SEG105 [50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ) -- vbuaa=vbuz1_plus_1 
+  //SEG91 [47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ) -- vbuaa=vbuz1_plus_1 
     lda plex_sprite_idx
     clc
     adc #1
-  //SEG106 [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuz1=vbuaa_band_vbuc1 
+  //SEG92 [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ) -- vbuz1=vbuaa_band_vbuc1 
     and #7
     sta plex_sprite_idx
-  //SEG107 [52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG93 [49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ) -- vbuz1=_inc_vbuz1 
     inc plex_show_idx
-  //SEG108 [53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1=vbuz1_rol_1 
+  //SEG94 [50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1=vbuz1_rol_1 
     asl plex_sprite_msb
-  //SEG109 [54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1_neq_0_then_la1 
+  //SEG95 [51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1_neq_0_then_la1 
     lda plex_sprite_msb
     bne b7_from_b2
-  //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
+  //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
   breturn_from_b2:
-  //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
+  //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
     lda #1
     sta plex_sprite_msb
     jmp breturn
-  //SEG112 plexShowSprite::@return
+  //SEG98 plexShowSprite::@return
   breturn:
-  //SEG113 [56] return  [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
+  //SEG99 [53] return  [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     rts
-  //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
+  //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
   b7_from_b2:
     jmp b7
-  //SEG115 plexShowSprite::@7
+  //SEG101 plexShowSprite::@7
   b7:
-  //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
+  //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
   breturn_from_b7:
-  //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
+  //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
     jmp breturn
-  //SEG118 plexShowSprite::@1
+  //SEG104 plexShowSprite::@1
   b1:
-  //SEG119 [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
+  //SEG105 [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
     lda SPRITES_XMSB
     ora plex_sprite_msb
     sta SPRITES_XMSB
     jmp b2
 }
-//SEG120 plexSort
+//SEG106 plexSort
 plexSort: {
     .label nxt_idx = 4
     .label nxt_y = 5
     .label m = 3
-  //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
+  //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
   b1_from_plexSort:
-  //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
+  //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
     lda #0
     sta m
     jmp b1
-  //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
+  //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
   b1_from_b2:
-  //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
+  //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
     jmp b1
-  //SEG125 plexSort::@1
+  //SEG111 plexSort::@1
   b1:
-  //SEG126 [61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG112 [58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     ldy m
     lda PLEX_SORTED_IDX+1,y
     sta nxt_idx
-  //SEG127 [62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG113 [59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     ldy nxt_idx
     lda PLEX_YPOS,y
     sta nxt_y
-  //SEG128 [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
+  //SEG114 [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
     lda nxt_y
     ldx m
     ldy PLEX_SORTED_IDX,x
     cmp PLEX_YPOS,y
     bcs b2
     jmp b10
-  //SEG129 plexSort::@10
+  //SEG115 plexSort::@10
   b10:
-  //SEG130 [64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuxx=vbuz1 
+  //SEG116 [61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuxx=vbuz1 
     ldx m
-  //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
+  //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
   b3_from_b10:
   b3_from_b7:
-  //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
+  //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
     jmp b3
-  //SEG133 plexSort::@3
+  //SEG119 plexSort::@3
   b3:
-  //SEG134 [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx 
+  //SEG120 [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx 
     lda PLEX_SORTED_IDX,x
     sta PLEX_SORTED_IDX+1,x
-  //SEG135 [67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx=_dec_vbuxx 
+  //SEG121 [64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx=_dec_vbuxx 
     dex
-  //SEG136 [68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG122 [65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #$ff
     bne b7
     jmp b5
-  //SEG137 plexSort::@5
+  //SEG123 plexSort::@5
   b5:
-  //SEG138 [69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG124 [66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG139 [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 
+  //SEG125 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 
     lda nxt_idx
     sta PLEX_SORTED_IDX,x
     jmp b2
-  //SEG140 plexSort::@2
+  //SEG126 plexSort::@2
   b2:
-  //SEG141 [71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG127 [68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
     inc m
-  //SEG142 [72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG128 [69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda m
     cmp #PLEX_COUNT-2+1
     bne b1_from_b2
     jmp breturn
-  //SEG143 plexSort::@return
+  //SEG129 plexSort::@return
   breturn:
-  //SEG144 [73] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+  //SEG130 [70] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
     rts
-  //SEG145 plexSort::@7
+  //SEG131 plexSort::@7
   b7:
-  //SEG146 [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 
+  //SEG132 [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 
     lda nxt_y
     ldy PLEX_SORTED_IDX,x
     cmp PLEX_YPOS,y
     bcc b3_from_b7
     jmp b5
 }
-//SEG147 init
+//SEG133 init
 init: {
     .label xp = 7
-  //SEG148 [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+  //SEG134 [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #VIC_DEN|VIC_RSEL|3
     sta D011
-  //SEG149 [76] call plexInit  [ ] ( main:4::init:7 [ ] )
-  //SEG150 [90] phi from init to plexInit [phi:init->plexInit]
+  //SEG135 [73] call plexInit  [ ] ( main:4::init:7 [ ] )
+  //SEG136 [87] phi from init to plexInit [phi:init->plexInit]
   plexInit_from_init:
     jsr plexInit
-  //SEG151 [77] phi from init to init::@1 [phi:init->init::@1]
+  //SEG137 [74] phi from init to init::@1 [phi:init->init::@1]
   b1_from_init:
-  //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
+  //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
     lda #<$20
     sta xp
     lda #>$20
     sta xp+1
-  //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 
+  //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 
     ldx #0
     jmp b1
-  //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
+  //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
   b1_from_b1:
-  //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
-  //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
+  //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
+  //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
     jmp b1
-  //SEG157 init::@1
+  //SEG143 init::@1
   b1:
-  //SEG158 [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
+  //SEG144 [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #$ff&SPRITE/$40
     sta PLEX_PTR,x
-  //SEG159 [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuaa=vbuxx_rol_1 
+  //SEG145 [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuaa=vbuxx_rol_1 
     txa
     asl
-  //SEG160 [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 
+  //SEG146 [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 
     tay
     lda xp
     sta PLEX_XPOS,y
     lda xp+1
     sta PLEX_XPOS+1,y
-  //SEG161 [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
+  //SEG147 [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
     clc
     lda xp
     adc #<$c
@@ -6204,72 +4434,72 @@ init: {
     lda xp+1
     adc #>$c
     sta xp+1
-  //SEG162 [82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG148 [79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG163 [83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG149 [80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #PLEX_COUNT-1+1
     bne b1_from_b1
     jmp b3
-  //SEG164 init::@3
+  //SEG150 init::@3
   b3:
-  //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+  //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #$ff
     sta SPRITES_ENABLE
-  //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
+  //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
   b2_from_b3:
-  //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 
+  //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 
     ldx #0
     jmp b2
-  //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
+  //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
   b2_from_b2:
-  //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
+  //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
     jmp b2
-  //SEG170 init::@2
+  //SEG156 init::@2
   b2:
-  //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
+  //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #GREEN
     sta SPRITES_COLS,x
-  //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG173 [88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG159 [85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #8
     bne b2_from_b2
     jmp breturn
-  //SEG174 init::@return
+  //SEG160 init::@return
   breturn:
-  //SEG175 [89] return  [ ] ( main:4::init:7 [ ] )
+  //SEG161 [86] return  [ ] ( main:4::init:7 [ ] )
     rts
 }
-//SEG176 plexInit
+//SEG162 plexInit
 plexInit: {
-  //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
+  //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
   plexSetScreen1_from_plexInit:
     jmp plexSetScreen1
-  //SEG178 plexInit::plexSetScreen1
+  //SEG164 plexInit::plexSetScreen1
   plexSetScreen1:
-  //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
+  //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
   b1_from_plexSetScreen1:
-  //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 
+  //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 
     ldx #0
     jmp b1
-  //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
+  //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
   b1_from_b1:
-  //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
+  //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
     jmp b1
-  //SEG183 plexInit::@1
+  //SEG169 plexInit::@1
   b1:
-  //SEG184 [93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx 
+  //SEG170 [90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx 
     txa
     sta PLEX_SORTED_IDX,x
-  //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG186 [95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG172 [92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #PLEX_COUNT-1+1
     bne b1_from_b1
     jmp breturn
-  //SEG187 plexInit::@return
+  //SEG173 plexInit::@return
   breturn:
-  //SEG188 [96] return  [ ] ( main:4::init:7::plexInit:76 [ ] )
+  //SEG174 [93] return  [ ] ( main:4::init:7::plexInit:73 [ ] )
     rts
 }
   PLEX_XPOS: .fill 2*PLEX_COUNT, 0
@@ -6277,7 +4507,7 @@ plexInit: {
   PLEX_PTR: .fill PLEX_COUNT, 0
   PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
 .pc = YSIN "Inline"
-  .var min = 51
+  .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
@@ -6291,8 +4521,8 @@ plexInit: {
 
 
 ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b28
-Removing instruction jmp b31
+Removing instruction jmp b8
+Removing instruction jmp b11
 Removing instruction jmp bend
 Removing instruction jmp b1
 Removing instruction jmp breturn
@@ -6300,17 +4530,16 @@ Removing instruction jmp b1
 Removing instruction jmp b4
 Removing instruction jmp b6
 Removing instruction jmp b7
-Removing instruction jmp b18
-Removing instruction jmp b26
+Removing instruction jmp b20
+Removing instruction jmp b30
 Removing instruction jmp b8
-Removing instruction jmp b27
-Removing instruction jmp b9
+Removing instruction jmp b11
 Removing instruction jmp plexShowNextYpos1
-Removing instruction jmp b25
-Removing instruction jmp b10
+Removing instruction jmp b29
 Removing instruction jmp b12
-Removing instruction jmp b28
-Removing instruction jmp b23
+Removing instruction jmp b14
+Removing instruction jmp b31
+Removing instruction jmp b27
 Removing instruction jmp b4
 Removing instruction jmp b2
 Removing instruction jmp breturn
@@ -6334,8 +4563,7 @@ Replacing instruction ldy nxt_idx with TAY
 Removing instruction lda nxt_y
 Succesful ASM optimization Pass5UnnecesaryLoadElimination
 Replacing label b7_from_b7 with b7
-Replacing label b8_from_b27 with b8
-Replacing label b9_from_b28 with b9
+Replacing label b11_from_b31 with b11
 Replacing label b1 with b4
 Replacing label b7_from_b2 with b7
 Replacing label b1_from_b2 with b1
@@ -6344,16 +4572,14 @@ Replacing label b1_from_b1 with b1
 Replacing label b2_from_b2 with b2
 Replacing label b1_from_b1 with b1
 Removing instruction bbegin:
-Removing instruction b28:
-Removing instruction b31_from_b28:
-Removing instruction bend_from_b31:
+Removing instruction b11_from_b8:
+Removing instruction b11:
+Removing instruction bend_from_b11:
 Removing instruction b1_from_main:
 Removing instruction loop_from_b1:
 Removing instruction b1:
 Removing instruction b7_from_b7:
-Removing instruction b8_from_b27:
-Removing instruction plexShowSprite_from_b8:
-Removing instruction b9_from_b28:
+Removing instruction b11_from_b31:
 Removing instruction b7_from_b2:
 Removing instruction breturn_from_b7:
 Removing instruction b1_from_b2:
@@ -6365,26 +4591,23 @@ Removing instruction plexSetScreen1_from_plexInit:
 Removing instruction b1_from_plexSetScreen1:
 Removing instruction b1_from_b1:
 Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b31:
+Removing instruction b8:
 Removing instruction bend:
 Removing instruction b1:
 Removing instruction breturn:
 Removing instruction b1_from_loop:
 Removing instruction b6:
 Removing instruction b7_from_b6:
-Removing instruction b18:
-Removing instruction plexSort_from_b18:
-Removing instruction b26:
-Removing instruction b8_from_b26:
-Removing instruction b27:
-Removing instruction b9_from_b27:
+Removing instruction b20:
+Removing instruction plexSort_from_b20:
+Removing instruction b30:
+Removing instruction b11_from_b8:
 Removing instruction plexShowNextYpos1:
-Removing instruction b25:
-Removing instruction b12:
-Removing instruction plexShowSprite_from_b12:
-Removing instruction b28:
-Removing instruction b23:
-Removing instruction b1_from_b23:
+Removing instruction b29:
+Removing instruction b14:
+Removing instruction b31:
+Removing instruction b27:
+Removing instruction b1_from_b27:
 Removing instruction b4:
 Removing instruction breturn_from_b2:
 Removing instruction b1_from_plexSort:
@@ -6401,8 +4624,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
 Skipping double jump to breturn in bne b7
 Succesful ASM optimization Pass5DoubleJumpElimination
 Removing instruction jmp b7
-Removing instruction jmp b8
-Removing instruction jmp b9
+Removing instruction jmp b11
 Removing instruction jmp b1
 Removing instruction jmp b1
 Removing instruction jmp b2
@@ -6416,8 +4638,8 @@ Removing unreachable instruction jmp breturn
 Succesful ASM optimization Pass5UnreachableCodeElimination
 
 FINAL SYMBOL TABLE
-(label) @28
-(label) @31
+(label) @11
+(label) @8
 (label) @begin
 (label) @end
 (byte) BLACK
@@ -6478,33 +4700,31 @@ FINAL SYMBOL TABLE
 (word) init::xp#1 xp zp ZP_WORD:7 7.333333333333333
 (word) init::xp#2 xp zp ZP_WORD:7 8.25
 (void()) loop()
+(byte~) loop::$4 reg byte a 202.0
 (label) loop::@1
-(label) loop::@10
+(label) loop::@11
 (label) loop::@12
-(label) loop::@18
-(label) loop::@23
-(label) loop::@25
-(label) loop::@26
+(label) loop::@14
+(label) loop::@20
 (label) loop::@27
-(label) loop::@28
+(label) loop::@29
+(label) loop::@30
+(label) loop::@31
 (label) loop::@4
 (label) loop::@6
 (label) loop::@7
 (label) loop::@8
-(label) loop::@9
 (label) loop::plexShowNextYpos1
 (byte) loop::plexShowNextYpos1_return
 (byte) loop::plexShowNextYpos1_return#0 reg byte a 202.0
 (byte) loop::rasterY
 (byte) loop::rasterY#0 rasterY zp ZP_BYTE:9 551.0
 (byte) loop::sin_idx
-(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.2222222222222223
+(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.375
 (byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667
 (byte) loop::ss
-(byte) loop::ss#1 ss zp ZP_BYTE:3 151.5
-(byte) loop::ss#10 ss zp ZP_BYTE:3 28.857142857142858
-(byte) loop::ss#3 ss zp ZP_BYTE:3 151.5
-(byte) loop::ss#4 ss zp ZP_BYTE:3 101.0
+(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5
+(byte) loop::ss#6 ss zp ZP_BYTE:6 28.857142857142858
 (byte) loop::sy
 (byte) loop::sy#1 reg byte y 151.5
 (byte) loop::sy#2 reg byte y 101.0
@@ -6560,31 +4780,29 @@ FINAL SYMBOL TABLE
 (byte) plexSort::s#3 reg byte x 2052.5
 (byte~) plexSort::s#6 reg byte x 202.0
 (byte) plex_show_idx
-(byte) plex_show_idx#13 plex_show_idx zp ZP_BYTE:5 14.999999999999998
-(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 16.944444444444443
-(byte) plex_show_idx#25 plex_show_idx zp ZP_BYTE:5 202.0
+(byte) plex_show_idx#14 plex_show_idx zp ZP_BYTE:3 11.444444444444443
+(byte) plex_show_idx#18 plex_show_idx zp ZP_BYTE:3 11.052631578947366
 (byte) plex_sprite_idx
-(byte) plex_sprite_idx#13 plex_sprite_idx zp ZP_BYTE:4 17.333333333333336
-(byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.736842105263158
-(byte) plex_sprite_idx#24 plex_sprite_idx zp ZP_BYTE:4 202.0
+(byte) plex_sprite_idx#14 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999
+(byte) plex_sprite_idx#38 plex_sprite_idx zp ZP_BYTE:4 6.2941176470588225
 (byte) plex_sprite_msb
-(byte) plex_sprite_msb#14 plex_sprite_msb zp ZP_BYTE:6 13.866666666666665
-(byte) plex_sprite_msb#17 plex_sprite_msb zp ZP_BYTE:6 14.571428571428571
-(byte) plex_sprite_msb#26 plex_sprite_msb zp ZP_BYTE:6 2.0
-(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:6 202.0
+(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:5 20.599999999999998
+(byte) plex_sprite_msb#24 plex_sprite_msb zp ZP_BYTE:5 2.0
+(byte) plex_sprite_msb#38 plex_sprite_msb zp ZP_BYTE:5 5.349999999999999
 
 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
 reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 reg byte y [ loop::sy#2 loop::sy#1 ]
-zp ZP_BYTE:3 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 plexSort::m#2 plexSort::m#1 ]
-zp ZP_BYTE:4 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
-zp ZP_BYTE:5 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 plexSort::nxt_y#0 ]
-zp ZP_BYTE:6 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
+zp ZP_BYTE:3 [ plex_show_idx#18 plex_show_idx#14 plexSort::m#2 plexSort::m#1 ]
+zp ZP_BYTE:4 [ plex_sprite_idx#38 plex_sprite_idx#14 plexSort::nxt_idx#0 ]
+zp ZP_BYTE:5 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 plexSort::nxt_y#0 ]
+zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ]
 reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
 reg byte x [ init::sx#2 init::sx#1 ]
 zp ZP_WORD:7 [ init::xp#2 init::xp#1 ]
 reg byte x [ init::ss#2 init::ss#1 ]
 reg byte x [ plexInit::i#2 plexInit::i#1 ]
+reg byte a [ loop::$4 ]
 reg byte a [ loop::plexShowNextYpos1_return#0 ]
 zp ZP_BYTE:9 [ loop::rasterY#0 ]
 reg byte y [ plexShowSprite::plex_sprite_idx2#0 ]
@@ -6598,7 +4816,7 @@ reg byte a [ init::$6 ]
 
 
 FINAL ASSEMBLER
-Score: 62848
+Score: 62736
 
 //SEG0 Basic Upstart
 .pc = $801 "Basic"
@@ -6623,17 +4841,17 @@ Score: 62848
   .label YSIN = $2100
   .label PLEX_SCREEN_PTR = SCREEN+$3f8
   .label plex_sprite_idx = 4
-  .label plex_show_idx = 5
-  .label plex_sprite_msb = 6
+  .label plex_show_idx = 3
+  .label plex_sprite_msb = 5
 //SEG2 @begin
-//SEG3 @28
-//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 51     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
+//SEG3 @8
+//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50     .var max = 250-21     .var ampl = max-min;     .for(var i=0;i<256;i++)         .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))  }}
 //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++)     .for (var x=0;x<3; x++)         .byte pic.getSinglecolorByte(x,y)  }}
-//SEG6 [3] phi from @28 to @31 [phi:@28->@31]
-//SEG7 @31
+//SEG6 [3] phi from @8 to @11 [phi:@8->@11]
+//SEG7 @11
 //SEG8 [4] call main  [ ] ( )
   jsr main
-//SEG9 [5] phi from @31 to @end [phi:@31->@end]
+//SEG9 [5] phi from @11 to @end [phi:@11->@end]
 //SEG10 @end
 //SEG11 main
 main: {
@@ -6653,8 +4871,8 @@ main: {
 //SEG20 loop
 loop: {
     .label sin_idx = 2
-    .label ss = 3
     .label rasterY = 9
+    .label ss = 6
   //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1]
   //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 
     lda #0
@@ -6693,279 +4911,263 @@ loop: {
   //SEG39 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ( main:4::loop:9 [ loop::sin_idx#6 loop::y_idx#1 loop::sy#1 ] ) -- vbuyy_neq_vbuc1_then_la1 
     cpy #PLEX_COUNT-1+1
     bne b7
-  //SEG40 loop::@18
+  //SEG40 loop::@20
   //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuz1=vbuz1_plus_1 
     inc sin_idx
   //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
   //SEG43 [23] call plexSort  [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] )
-  //SEG44 [59] phi from loop::@18 to plexSort [phi:loop::@18->plexSort]
+  //SEG44 [56] phi from loop::@20 to plexSort [phi:loop::@20->plexSort]
     jsr plexSort
-  //SEG45 loop::@26
-  //SEG46 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
-    inc BORDERCOL
-  //SEG47 [25] phi from loop::@26 to loop::@8 [phi:loop::@26->loop::@8]
-  //SEG48 [25] phi (byte) loop::ss#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#0] -- vbuz1=vbuc1 
-    lda #0
-    sta ss
-  //SEG49 [25] phi (byte) plex_sprite_msb#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@26->loop::@8#1] -- vbuz1=vbuc1 
-    lda #1
-    sta plex_sprite_msb
-  //SEG50 [25] phi (byte) plex_show_idx#25 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#2] -- vbuz1=vbuc1 
-    lda #0
-    sta plex_show_idx
-  //SEG51 [25] phi (byte) plex_sprite_idx#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@26->loop::@8#3] -- vbuz1=vbuc1 
-    sta plex_sprite_idx
-  //SEG52 [25] phi from loop::@27 to loop::@8 [phi:loop::@27->loop::@8]
-  //SEG53 [25] phi (byte) loop::ss#4 = (byte) loop::ss#1 [phi:loop::@27->loop::@8#0] -- register_copy 
-  //SEG54 [25] phi (byte) plex_sprite_msb#29 = (byte) plex_sprite_msb#17 [phi:loop::@27->loop::@8#1] -- register_copy 
-  //SEG55 [25] phi (byte) plex_show_idx#25 = (byte) plex_show_idx#15 [phi:loop::@27->loop::@8#2] -- register_copy 
-  //SEG56 [25] phi (byte) plex_sprite_idx#24 = (byte) plex_sprite_idx#15 [phi:loop::@27->loop::@8#3] -- register_copy 
-  //SEG57 loop::@8
-  b8:
-  //SEG58 [26] call plexShowSprite  [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
-  //SEG59 [39] phi from loop::@8 to plexShowSprite [phi:loop::@8->plexShowSprite]
-  //SEG60 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#29 [phi:loop::@8->plexShowSprite#0] -- register_copy 
-  //SEG61 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#25 [phi:loop::@8->plexShowSprite#1] -- register_copy 
-  //SEG62 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#24 [phi:loop::@8->plexShowSprite#2] -- register_copy 
-    jsr plexShowSprite
-  //SEG63 loop::@27
-  //SEG64 [27] (byte) loop::ss#1 ← ++ (byte) loop::ss#4 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
-    inc ss
-  //SEG65 [28] if((byte) loop::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
-    lda ss
-    cmp #8
-    bne b8
-  //SEG66 [29] phi from loop::@27 to loop::@9 [phi:loop::@27->loop::@9]
-  //SEG67 [29] phi (byte) loop::ss#10 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:loop::@27->loop::@9#0] -- vbuz1=vbuc1 
-    lda #8
-    sta ss
-  //SEG68 [29] phi from loop::@28 to loop::@9 [phi:loop::@28->loop::@9]
-  //SEG69 [29] phi (byte) loop::ss#10 = (byte) loop::ss#3 [phi:loop::@28->loop::@9#0] -- register_copy 
-  //SEG70 loop::@9
-  b9:
-  //SEG71 [30] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=vbuc2 
+  //SEG45 loop::@30
+  //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
-  //SEG72 loop::plexShowNextYpos1
-  //SEG73 [31] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#15)) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::plexShowNextYpos1_return#0 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 
+  //SEG47 loop::@8
+  b8:
+  //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (byte/word/signed word/dword/signed dword) 128 [ loop::sin_idx#1 loop::$4 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::$4 ] ) -- vbuaa=_deref_pbuc1_band_vbuc2 
+    lda D011
+    and #$80
+  //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- vbuaa_neq_0_then_la1 
+    cmp #0
+    bne b8
+  //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11]
+  //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 
+    lda #0
+    sta ss
+  //SEG52 [27] phi (byte) plex_sprite_msb#38 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 
+    lda #1
+    sta plex_sprite_msb
+  //SEG53 [27] phi (byte) plex_sprite_idx#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 
+    lda #0
+    sta plex_sprite_idx
+  //SEG54 [27] phi (byte) plex_show_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 
+    sta plex_show_idx
+  //SEG55 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11]
+  //SEG56 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy 
+  //SEG57 [27] phi (byte) plex_sprite_msb#38 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy 
+  //SEG58 [27] phi (byte) plex_sprite_idx#38 = (byte) plex_sprite_idx#14 [phi:loop::@31->loop::@11#2] -- register_copy 
+  //SEG59 [27] phi (byte) plex_show_idx#18 = (byte) plex_show_idx#14 [phi:loop::@31->loop::@11#3] -- register_copy 
+  //SEG60 loop::@11
+  b11:
+  //SEG61 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=vbuc2 
+    lda #BLACK
+    sta BORDERCOL
+  //SEG62 loop::plexShowNextYpos1
+  //SEG63 [29] (byte) loop::plexShowNextYpos1_return#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::plexShowNextYpos1_return#0 ] ) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 
     ldy plex_show_idx
     lda PLEX_SORTED_IDX,y
     tay
     lda PLEX_YPOS,y
-  //SEG74 loop::@25
-  //SEG75 [32] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- vbuz1=vbuaa_minus_vbuc1 
+  //SEG64 loop::@29
+  //SEG65 [30] (byte) loop::rasterY#0 ← (byte) loop::plexShowNextYpos1_return#0 - (byte/signed byte/word/signed word/dword/signed dword) 8 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- vbuz1=vbuaa_minus_vbuc1 
     sec
     sbc #8
     sta rasterY
-  //SEG76 loop::@10
-  b10:
-  //SEG77 [33] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
+  //SEG66 loop::@12
+  b12:
+  //SEG67 [31] if(*((const byte*) RASTER#0)<(byte) loop::rasterY#0) goto loop::@12 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 loop::rasterY#0 ] ) -- _deref_pbuc1_lt_vbuz1_then_la1 
     lda RASTER
     cmp rasterY
-    bcc b10
-  //SEG78 loop::@12
-  //SEG79 [34] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
+    bcc b12
+  //SEG68 loop::@14
+  //SEG69 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 loop::ss#6 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
     inc BORDERCOL
-  //SEG80 [35] call plexShowSprite  [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#10 ] )
-  //SEG81 [39] phi from loop::@12 to plexShowSprite [phi:loop::@12->plexShowSprite]
-  //SEG82 [39] phi (byte) plex_sprite_msb#14 = (byte) plex_sprite_msb#17 [phi:loop::@12->plexShowSprite#0] -- register_copy 
-  //SEG83 [39] phi (byte) plex_show_idx#13 = (byte) plex_show_idx#15 [phi:loop::@12->plexShowSprite#1] -- register_copy 
-  //SEG84 [39] phi (byte) plex_sprite_idx#13 = (byte) plex_sprite_idx#15 [phi:loop::@12->plexShowSprite#2] -- register_copy 
+  //SEG70 [33] call plexShowSprite  [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     jsr plexShowSprite
-  //SEG85 loop::@28
-  //SEG86 [36] (byte) loop::ss#3 ← ++ (byte) loop::ss#10 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG71 loop::@31
+  //SEG72 [34] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1=_inc_vbuz1 
     inc ss
-  //SEG87 [37] if((byte) loop::ss#3!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 loop::ss#3 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG73 [35] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 loop::ss#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda ss
     cmp #PLEX_COUNT-1+1
-    bne b9
-  //SEG88 loop::@23
-  //SEG89 [38] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
+    bne b11
+  //SEG74 loop::@27
+  //SEG75 [36] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) -- _deref_pbuc1=vbuc2 
     lda #BLACK
     sta BORDERCOL
-  //SEG90 [12] phi from loop::@23 to loop::@1 [phi:loop::@23->loop::@1]
-  //SEG91 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@23->loop::@1#0] -- register_copy 
+  //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1]
+  //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy 
     jmp b4
 }
-//SEG92 plexShowSprite
+//SEG78 plexShowSprite
 plexShowSprite: {
-  //SEG93 [40] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuyy=vbuz1_rol_1 
+  //SEG79 [37] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- vbuyy=vbuz1_rol_1 
     lda plex_sprite_idx
     asl
     tay
-  //SEG94 [41] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 
+  //SEG80 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuz1 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_YPOS,x
     sta SPRITES_YPOS,y
-  //SEG95 [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#13) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13)) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
+  //SEG81 [39] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#38) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18)) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     tax
     lda PLEX_PTR,x
     ldx plex_sprite_idx
     sta PLEX_SCREEN_PTR,x
-  //SEG96 [43] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#13) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 
+  //SEG82 [40] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#18) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 
     ldx plex_show_idx
     lda PLEX_SORTED_IDX,x
     asl
     tax
-  //SEG97 [44] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx 
+  //SEG83 [41] (byte~) plexShowSprite::$2 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 plexShowSprite::$2 ] ) -- vbuaa=_lo_pwuc1_derefidx_vbuxx 
     lda PLEX_XPOS,x
-  //SEG98 [45] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuyy=vbuaa 
+  //SEG84 [42] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$2 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::xpos_idx#0 ] ) -- pbuc1_derefidx_vbuyy=vbuaa 
     sta SPRITES_XPOS,y
-  //SEG99 [46] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$3 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx 
+  //SEG85 [43] (byte~) plexShowSprite::$3 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$3 ] ) -- vbuaa=_hi_pwuc1_derefidx_vbuxx 
     lda PLEX_XPOS+1,x
-  //SEG100 [47] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuaa_neq_0_then_la1 
+  //SEG86 [44] if((byte~) plexShowSprite::$3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- vbuaa_neq_0_then_la1 
     cmp #0
     bne b1
-  //SEG101 plexShowSprite::@4
-  //SEG102 [48] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$5 ] ) -- vbuaa=vbuc1_bxor_vbuz1 
+  //SEG87 plexShowSprite::@4
+  //SEG88 [45] (byte/word/dword~) plexShowSprite::$5 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 plexShowSprite::$5 ] ) -- vbuaa=vbuc1_bxor_vbuz1 
     lda plex_sprite_msb
     eor #$ff
-  //SEG103 [49] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa 
+  //SEG89 [46] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$5 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_band_vbuaa 
     and SPRITES_XMSB
     sta SPRITES_XMSB
-  //SEG104 plexShowSprite::@2
+  //SEG90 plexShowSprite::@2
   b2:
-  //SEG105 [50] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_show_idx#13 plex_sprite_msb#14 plexShowSprite::$6 ] ) -- vbuaa=vbuz1_plus_1 
+  //SEG91 [47] (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 ← (byte) plex_sprite_idx#38 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plexShowSprite::$6 ] ) -- vbuaa=vbuz1_plus_1 
     lda plex_sprite_idx
     clc
     adc #1
-  //SEG106 [51] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#13 plex_sprite_msb#14 ] ) -- vbuz1=vbuaa_band_vbuc1 
+  //SEG92 [48] (byte) plex_sprite_idx#14 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_msb#38 plex_sprite_idx#14 ] ) -- vbuz1=vbuaa_band_vbuc1 
     and #7
     sta plex_sprite_idx
-  //SEG107 [52] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#13 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#14 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG93 [49] (byte) plex_show_idx#14 ← ++ (byte) plex_show_idx#18 [ plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_sprite_msb#38 plex_show_idx#14 plex_sprite_idx#14 ] ) -- vbuz1=_inc_vbuz1 
     inc plex_show_idx
-  //SEG108 [53] (byte) plex_sprite_msb#26 ← (byte) plex_sprite_msb#14 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1=vbuz1_rol_1 
+  //SEG94 [50] (byte) plex_sprite_msb#24 ← (byte) plex_sprite_msb#38 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1=vbuz1_rol_1 
     asl plex_sprite_msb
-  //SEG109 [54] if((byte) plex_sprite_msb#26!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#26 ] ) -- vbuz1_neq_0_then_la1 
+  //SEG95 [51] if((byte) plex_sprite_msb#24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@7 [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#24 ] ) -- vbuz1_neq_0_then_la1 
     lda plex_sprite_msb
     bne breturn
-  //SEG110 [55] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
-  //SEG111 [55] phi (byte) plex_sprite_msb#17 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
+  //SEG96 [52] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return]
+  //SEG97 [52] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 
     lda #1
     sta plex_sprite_msb
-  //SEG112 plexShowSprite::@return
+  //SEG98 plexShowSprite::@return
   breturn:
-  //SEG113 [56] return  [ plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#15 plex_show_idx#15 plex_sprite_msb#17 ] )
+  //SEG99 [53] return  [ plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#14 plex_sprite_idx#14 plex_sprite_msb#16 ] )
     rts
-  //SEG114 [57] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
-  //SEG115 plexShowSprite::@7
-  //SEG116 [55] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
-  //SEG117 [55] phi (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#26 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
-  //SEG118 plexShowSprite::@1
+  //SEG100 [54] phi from plexShowSprite::@2 to plexShowSprite::@7 [phi:plexShowSprite::@2->plexShowSprite::@7]
+  //SEG101 plexShowSprite::@7
+  //SEG102 [52] phi from plexShowSprite::@7 to plexShowSprite::@return [phi:plexShowSprite::@7->plexShowSprite::@return]
+  //SEG103 [52] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#24 [phi:plexShowSprite::@7->plexShowSprite::@return#0] -- register_copy 
+  //SEG104 plexShowSprite::@1
   b1:
-  //SEG119 [58] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#14 [ plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ( main:4::loop:9::plexShowSprite:26 [ loop::sin_idx#1 loop::ss#4 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] main:4::loop:9::plexShowSprite:35 [ loop::sin_idx#1 loop::ss#10 plex_sprite_idx#13 plex_show_idx#13 plex_sprite_msb#14 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
+  //SEG105 [55] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#38 [ plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ( main:4::loop:9::plexShowSprite:33 [ loop::sin_idx#1 loop::ss#6 plex_show_idx#18 plex_sprite_idx#38 plex_sprite_msb#38 ] ) -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 
     lda SPRITES_XMSB
     ora plex_sprite_msb
     sta SPRITES_XMSB
     jmp b2
 }
-//SEG120 plexSort
+//SEG106 plexSort
 plexSort: {
     .label nxt_idx = 4
     .label nxt_y = 5
     .label m = 3
-  //SEG121 [60] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
-  //SEG122 [60] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
+  //SEG107 [57] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1]
+  //SEG108 [57] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 
     lda #0
     sta m
-  //SEG123 [60] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
-  //SEG124 [60] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
-  //SEG125 plexSort::@1
+  //SEG109 [57] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1]
+  //SEG110 [57] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy 
+  //SEG111 plexSort::@1
   b1:
-  //SEG126 [61] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG112 [58] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) [ plexSort::m#2 plexSort::nxt_idx#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     ldy m
     lda PLEX_SORTED_IDX+1,y
     sta nxt_idx
-  //SEG127 [62] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
+  //SEG113 [59] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
     tay
     lda PLEX_YPOS,y
     sta nxt_y
-  //SEG128 [63] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
+  //SEG114 [60] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 ] ) -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 
     ldx m
     ldy PLEX_SORTED_IDX,x
     cmp PLEX_YPOS,y
     bcs b2
-  //SEG129 plexSort::@10
-  //SEG130 [64] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuxx=vbuz1 
-  //SEG131 [65] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
-  //SEG132 [65] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
-  //SEG133 plexSort::@3
+  //SEG115 plexSort::@10
+  //SEG116 [61] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#6 ] ) -- vbuxx=vbuz1 
+  //SEG117 [62] phi from plexSort::@10 plexSort::@7 to plexSort::@3 [phi:plexSort::@10/plexSort::@7->plexSort::@3]
+  //SEG118 [62] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@10/plexSort::@7->plexSort::@3#0] -- register_copy 
+  //SEG119 plexSort::@3
   b3:
-  //SEG134 [66] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx 
+  //SEG120 [63] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx 
     lda PLEX_SORTED_IDX,x
     sta PLEX_SORTED_IDX+1,x
-  //SEG135 [67] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx=_dec_vbuxx 
+  //SEG121 [64] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx=_dec_vbuxx 
     dex
-  //SEG136 [68] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG122 [65] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@7 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #$ff
     bne b7
-  //SEG137 plexSort::@5
+  //SEG123 plexSort::@5
   b5:
-  //SEG138 [69] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG124 [66] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::s#2 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG139 [70] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 
+  //SEG125 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 [ plexSort::m#2 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 
     lda nxt_idx
     sta PLEX_SORTED_IDX,x
-  //SEG140 plexSort::@2
+  //SEG126 plexSort::@2
   b2:
-  //SEG141 [71] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
+  //SEG127 [68] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1=_inc_vbuz1 
     inc m
-  //SEG142 [72] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
+  //SEG128 [69] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 [ plexSort::m#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#1 ] ) -- vbuz1_neq_vbuc1_then_la1 
     lda m
     cmp #PLEX_COUNT-2+1
     bne b1
-  //SEG143 plexSort::@return
-  //SEG144 [73] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
+  //SEG129 plexSort::@return
+  //SEG130 [70] return  [ ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 ] )
     rts
-  //SEG145 plexSort::@7
+  //SEG131 plexSort::@7
   b7:
-  //SEG146 [74] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 
+  //SEG132 [71] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 [ plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ( main:4::loop:9::plexSort:23 [ loop::sin_idx#1 plexSort::m#2 plexSort::nxt_idx#0 plexSort::nxt_y#0 plexSort::s#1 ] ) -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 
     lda nxt_y
     ldy PLEX_SORTED_IDX,x
     cmp PLEX_YPOS,y
     bcc b3
     jmp b5
 }
-//SEG147 init
+//SEG133 init
 init: {
     .label xp = 7
-  //SEG148 [75] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+  //SEG134 [72] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #VIC_DEN|VIC_RSEL|3
     sta D011
-  //SEG149 [76] call plexInit  [ ] ( main:4::init:7 [ ] )
-  //SEG150 [90] phi from init to plexInit [phi:init->plexInit]
+  //SEG135 [73] call plexInit  [ ] ( main:4::init:7 [ ] )
+  //SEG136 [87] phi from init to plexInit [phi:init->plexInit]
     jsr plexInit
-  //SEG151 [77] phi from init to init::@1 [phi:init->init::@1]
-  //SEG152 [77] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
+  //SEG137 [74] phi from init to init::@1 [phi:init->init::@1]
+  //SEG138 [74] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 
     lda #<$20
     sta xp
     lda #>$20
     sta xp+1
-  //SEG153 [77] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 
+  //SEG139 [74] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 
     ldx #0
-  //SEG154 [77] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
-  //SEG155 [77] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
-  //SEG156 [77] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
-  //SEG157 init::@1
+  //SEG140 [74] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
+  //SEG141 [74] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy 
+  //SEG142 [74] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy 
+  //SEG143 init::@1
   b1:
-  //SEG158 [78] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
+  //SEG144 [75] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #$ff&SPRITE/$40
     sta PLEX_PTR,x
-  //SEG159 [79] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuaa=vbuxx_rol_1 
+  //SEG145 [76] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::sx#2 init::xp#2 init::$6 ] ( main:4::init:7 [ init::sx#2 init::xp#2 init::$6 ] ) -- vbuaa=vbuxx_rol_1 
     txa
     asl
-  //SEG160 [80] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 
+  //SEG146 [77] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 [ init::sx#2 init::xp#2 ] ( main:4::init:7 [ init::sx#2 init::xp#2 ] ) -- pwuc1_derefidx_vbuaa=vwuz1 
     tay
     lda xp
     sta PLEX_XPOS,y
     lda xp+1
     sta PLEX_XPOS+1,y
-  //SEG161 [81] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
+  //SEG147 [78] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 
     clc
     lda xp
     adc #<$c
@@ -6973,55 +5175,55 @@ init: {
     lda xp+1
     adc #>$c
     sta xp+1
-  //SEG162 [82] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG148 [79] (byte) init::sx#1 ← ++ (byte) init::sx#2 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG163 [83] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG149 [80] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 [ init::sx#1 init::xp#1 ] ( main:4::init:7 [ init::sx#1 init::xp#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #PLEX_COUNT-1+1
     bne b1
-  //SEG164 init::@3
-  //SEG165 [84] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
+  //SEG150 init::@3
+  //SEG151 [81] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:4::init:7 [ ] ) -- _deref_pbuc1=vbuc2 
     lda #$ff
     sta SPRITES_ENABLE
-  //SEG166 [85] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
-  //SEG167 [85] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 
+  //SEG152 [82] phi from init::@3 to init::@2 [phi:init::@3->init::@2]
+  //SEG153 [82] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 
     ldx #0
-  //SEG168 [85] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
-  //SEG169 [85] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
-  //SEG170 init::@2
+  //SEG154 [82] phi from init::@2 to init::@2 [phi:init::@2->init::@2]
+  //SEG155 [82] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy 
+  //SEG156 init::@2
   b2:
-  //SEG171 [86] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
+  //SEG157 [83] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #GREEN
     sta SPRITES_COLS,x
-  //SEG172 [87] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG158 [84] (byte) init::ss#1 ← ++ (byte) init::ss#2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG173 [88] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG159 [85] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 [ init::ss#1 ] ( main:4::init:7 [ init::ss#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #8
     bne b2
-  //SEG174 init::@return
-  //SEG175 [89] return  [ ] ( main:4::init:7 [ ] )
+  //SEG160 init::@return
+  //SEG161 [86] return  [ ] ( main:4::init:7 [ ] )
     rts
 }
-//SEG176 plexInit
+//SEG162 plexInit
 plexInit: {
-  //SEG177 [91] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
-  //SEG178 plexInit::plexSetScreen1
-  //SEG179 [92] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
-  //SEG180 [92] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 
+  //SEG163 [88] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1]
+  //SEG164 plexInit::plexSetScreen1
+  //SEG165 [89] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1]
+  //SEG166 [89] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 
     ldx #0
-  //SEG181 [92] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
-  //SEG182 [92] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
-  //SEG183 plexInit::@1
+  //SEG167 [89] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1]
+  //SEG168 [89] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy 
+  //SEG169 plexInit::@1
   b1:
-  //SEG184 [93] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:76 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx 
+  //SEG170 [90] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 [ plexInit::i#2 ] ( main:4::init:7::plexInit:73 [ plexInit::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx 
     txa
     sta PLEX_SORTED_IDX,x
-  //SEG185 [94] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx 
+  //SEG171 [91] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx=_inc_vbuxx 
     inx
-  //SEG186 [95] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:76 [ plexInit::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
+  //SEG172 [92] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 [ plexInit::i#1 ] ( main:4::init:7::plexInit:73 [ plexInit::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 
     cpx #PLEX_COUNT-1+1
     bne b1
-  //SEG187 plexInit::@return
-  //SEG188 [96] return  [ ] ( main:4::init:7::plexInit:76 [ ] )
+  //SEG173 plexInit::@return
+  //SEG174 [93] return  [ ] ( main:4::init:7::plexInit:73 [ ] )
     rts
 }
   PLEX_XPOS: .fill 2*PLEX_COUNT, 0
@@ -7029,7 +5231,7 @@ plexInit: {
   PLEX_PTR: .fill PLEX_COUNT, 0
   PLEX_SORTED_IDX: .fill PLEX_COUNT, 0
 .pc = YSIN "Inline"
-  .var min = 51
+  .var min = 50
     .var max = 250-21
     .var ampl = max-min;
     .for(var i=0;i<256;i++)
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym
index 632e62686..3b749aebe 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/simple-multiplexer.sym
@@ -1,5 +1,5 @@
-(label) @28
-(label) @31
+(label) @11
+(label) @8
 (label) @begin
 (label) @end
 (byte) BLACK
@@ -60,33 +60,31 @@
 (word) init::xp#1 xp zp ZP_WORD:7 7.333333333333333
 (word) init::xp#2 xp zp ZP_WORD:7 8.25
 (void()) loop()
+(byte~) loop::$4 reg byte a 202.0
 (label) loop::@1
-(label) loop::@10
+(label) loop::@11
 (label) loop::@12
-(label) loop::@18
-(label) loop::@23
-(label) loop::@25
-(label) loop::@26
+(label) loop::@14
+(label) loop::@20
 (label) loop::@27
-(label) loop::@28
+(label) loop::@29
+(label) loop::@30
+(label) loop::@31
 (label) loop::@4
 (label) loop::@6
 (label) loop::@7
 (label) loop::@8
-(label) loop::@9
 (label) loop::plexShowNextYpos1
 (byte) loop::plexShowNextYpos1_return
 (byte) loop::plexShowNextYpos1_return#0 reg byte a 202.0
 (byte) loop::rasterY
 (byte) loop::rasterY#0 rasterY zp ZP_BYTE:9 551.0
 (byte) loop::sin_idx
-(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.2222222222222223
+(byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.375
 (byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667
 (byte) loop::ss
-(byte) loop::ss#1 ss zp ZP_BYTE:3 151.5
-(byte) loop::ss#10 ss zp ZP_BYTE:3 28.857142857142858
-(byte) loop::ss#3 ss zp ZP_BYTE:3 151.5
-(byte) loop::ss#4 ss zp ZP_BYTE:3 101.0
+(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5
+(byte) loop::ss#6 ss zp ZP_BYTE:6 28.857142857142858
 (byte) loop::sy
 (byte) loop::sy#1 reg byte y 151.5
 (byte) loop::sy#2 reg byte y 101.0
@@ -142,31 +140,29 @@
 (byte) plexSort::s#3 reg byte x 2052.5
 (byte~) plexSort::s#6 reg byte x 202.0
 (byte) plex_show_idx
-(byte) plex_show_idx#13 plex_show_idx zp ZP_BYTE:5 14.999999999999998
-(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 16.944444444444443
-(byte) plex_show_idx#25 plex_show_idx zp ZP_BYTE:5 202.0
+(byte) plex_show_idx#14 plex_show_idx zp ZP_BYTE:3 11.444444444444443
+(byte) plex_show_idx#18 plex_show_idx zp ZP_BYTE:3 11.052631578947366
 (byte) plex_sprite_idx
-(byte) plex_sprite_idx#13 plex_sprite_idx zp ZP_BYTE:4 17.333333333333336
-(byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.736842105263158
-(byte) plex_sprite_idx#24 plex_sprite_idx zp ZP_BYTE:4 202.0
+(byte) plex_sprite_idx#14 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999
+(byte) plex_sprite_idx#38 plex_sprite_idx zp ZP_BYTE:4 6.2941176470588225
 (byte) plex_sprite_msb
-(byte) plex_sprite_msb#14 plex_sprite_msb zp ZP_BYTE:6 13.866666666666665
-(byte) plex_sprite_msb#17 plex_sprite_msb zp ZP_BYTE:6 14.571428571428571
-(byte) plex_sprite_msb#26 plex_sprite_msb zp ZP_BYTE:6 2.0
-(byte) plex_sprite_msb#29 plex_sprite_msb zp ZP_BYTE:6 202.0
+(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:5 20.599999999999998
+(byte) plex_sprite_msb#24 plex_sprite_msb zp ZP_BYTE:5 2.0
+(byte) plex_sprite_msb#38 plex_sprite_msb zp ZP_BYTE:5 5.349999999999999
 
 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ]
 reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
 reg byte y [ loop::sy#2 loop::sy#1 ]
-zp ZP_BYTE:3 [ loop::ss#4 loop::ss#1 loop::ss#10 loop::ss#3 plexSort::m#2 plexSort::m#1 ]
-zp ZP_BYTE:4 [ plex_sprite_idx#13 plex_sprite_idx#24 plex_sprite_idx#15 plexSort::nxt_idx#0 ]
-zp ZP_BYTE:5 [ plex_show_idx#13 plex_show_idx#25 plex_show_idx#15 plexSort::nxt_y#0 ]
-zp ZP_BYTE:6 [ plex_sprite_msb#14 plex_sprite_msb#29 plex_sprite_msb#17 plex_sprite_msb#26 ]
+zp ZP_BYTE:3 [ plex_show_idx#18 plex_show_idx#14 plexSort::m#2 plexSort::m#1 ]
+zp ZP_BYTE:4 [ plex_sprite_idx#38 plex_sprite_idx#14 plexSort::nxt_idx#0 ]
+zp ZP_BYTE:5 [ plex_sprite_msb#38 plex_sprite_msb#16 plex_sprite_msb#24 plexSort::nxt_y#0 ]
+zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ]
 reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
 reg byte x [ init::sx#2 init::sx#1 ]
 zp ZP_WORD:7 [ init::xp#2 init::xp#1 ]
 reg byte x [ init::ss#2 init::ss#1 ]
 reg byte x [ plexInit::i#2 plexInit::i#1 ]
+reg byte a [ loop::$4 ]
 reg byte a [ loop::plexShowNextYpos1_return#0 ]
 zp ZP_BYTE:9 [ loop::rasterY#0 ]
 reg byte y [ plexShowSprite::plex_sprite_idx2#0 ]