From 5c2d1c48d911f6ff516947c7bd3f0c6dd8c9f153 Mon Sep 17 00:00:00 2001
From: Jesper Gravgaard <jg@ramboll.com>
Date: Thu, 1 Oct 2020 11:01:49 +0200
Subject: [PATCH] Updated test data

---
 .../ref/complex/nes-balls/kickballs-3.asm     |  338 +-
 .../ref/complex/nes-balls/kickballs-3.cfg     |  218 +-
 .../ref/complex/nes-balls/kickballs-3.log     | 3413 +++++++++--------
 .../ref/complex/nes-balls/kickballs-3.sym     |  215 +-
 4 files changed, 2160 insertions(+), 2024 deletions(-)

diff --git a/src/test/ref/complex/nes-balls/kickballs-3.asm b/src/test/ref/complex/nes-balls/kickballs-3.asm
index f27cb1e04..574a22177 100644
--- a/src/test/ref/complex/nes-balls/kickballs-3.asm
+++ b/src/test/ref/complex/nes-balls/kickballs-3.asm
@@ -1,13 +1,3 @@
-//#pragma emulator("java -jar /Applications/Nintaco_bin_2020-05-01/Nintaco.jar")
-// Nintendo Entertainment System (NES
-// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
-// https://github.com/gregkrsak/first_nes
-// Ricoh 2C02 - NES Picture Processing Unit (PPU)
-// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
-// https://en.wikipedia.org/wiki/Picture_Processing_Unit
-// https://wiki.nesdev.com/w/index.php/PPU_registers
-// http://nesdev.com/2C02%20technical%20reference.TXT
-// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018. 
   // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
 // https://sadistech.com/nesromtool/romdoc.html
 // https://forums.nesdev.com/viewtopic.php?f=2&t=9896
@@ -76,10 +66,10 @@
   .label PPU = $2000
   // NES CPU and audion processing unit (APU)
   .label APU = $4000
-  .label scroll_y = $c
-  .label vblank_hit = $d
+  .label scroll_y = $d
+  .label vblank_hit = $e
   // The random state variable
-  .label rand_state = $a
+  .label rand_state = $b
 .segment Code
 __start: {
     // scroll_y = 0
@@ -121,46 +111,49 @@ vblank: {
     rti
 }
 main: {
-    .label __9 = $36
-    .label __10 = $36
-    .label __11 = $36
-    .label __20 = $21
-    .label __23 = $27
-    .label __25 = $29
-    .label __26 = $2b
-    .label __31 = $30
-    .label __32 = $34
-    .label __33 = $f
-    .label __36 = $38
-    .label __44 = $f
-    .label __56 = $30
+    .label __9 = $3b
+    .label __10 = $3b
+    .label __11 = $3b
+    .label __20 = $26
+    .label __23 = $2c
+    .label __25 = $2e
+    .label __26 = $30
+    .label __31 = $35
+    .label __32 = $39
+    .label __33 = $14
+    .label __36 = $3d
+    .label __38 = $10
+    .label __44 = $14
+    .label __56 = $35
     .label i = 2
     .label timer_2 = 4
-    .label h_bar = $e
+    .label h_bar = $f
     .label active_balls = 5
-    .label sprite_idx = 9
-    .label i_1 = 7
-    .label timer = 6
-    .label __59 = $3a
-    .label __60 = $38
-    .label __61 = $11
-    .label __62 = $13
-    .label __63 = $15
-    .label __64 = $17
-    .label __65 = $19
-    .label __66 = $1b
-    .label __67 = $1d
-    .label __68 = $1f
-    .label __69 = $21
-    .label __70 = $27
-    .label __71 = $29
-    .label __72 = $23
-    .label __73 = $25
-    .label __74 = $34
-    .label __75 = $f
-    .label __76 = $2c
-    .label __77 = $2e
-    .label __78 = $32
+    .label sprite_idx = $a
+    .label i_1 = 8
+    .label timer = 7
+    .label __59 = $3f
+    .label __60 = $3d
+    .label __61 = $12
+    .label __62 = $10
+    .label __63 = $16
+    .label __64 = $18
+    .label __65 = $1a
+    .label __66 = $1c
+    .label __67 = $1e
+    .label __68 = $20
+    .label __69 = $22
+    .label __70 = $24
+    .label __71 = $26
+    .label __72 = $2c
+    .label __73 = $2e
+    .label __74 = $28
+    .label __75 = $2a
+    .label __76 = $39
+    .label __77 = $14
+    .label __78 = $31
+    .label __79 = $33
+    .label __80 = $37
     // asm
     cld
     ldx #$ff
@@ -287,6 +280,7 @@ main: {
     lda #0
     sta.z timer
     sta.z active_balls
+    sta.z active_balls+1
     sta.z timer_2
   __b4:
     // timer_2++;
@@ -303,9 +297,12 @@ main: {
     // scroll_y = h_bar ^ 0xFF
     sta.z scroll_y
     // if (active_balls < MAX_BALLS)
+    lda.z active_balls+1
+    bne __b5
     lda.z active_balls
     cmp #$32
     bcs __b5
+  !:
     // if (timer++ == RELEASE_TIMER)
     ldx.z timer
     inx
@@ -316,18 +313,47 @@ main: {
   !__b25:
     // active_balls++;
     inc.z active_balls
+    bne !+
+    inc.z active_balls+1
+  !:
     // balls[active_balls].x_position = 0
     lda.z active_balls
     asl
-    asl
-    asl
-    tax
+    sta.z __38
+    lda.z active_balls+1
+    rol
+    sta.z __38+1
+    asl.z __38
+    rol.z __38+1
+    asl.z __38
+    rol.z __38+1
+    lda.z __38
+    clc
+    adc #<balls
+    sta.z __61
+    lda.z __38+1
+    adc #>balls
+    sta.z __61+1
     lda #0
-    sta balls,x
-    sta balls+1,x
+    tay
+    sta (__61),y
+    tya
+    iny
+    sta (__61),y
     // balls[active_balls].y_position = 0
-    sta balls+2,x
-    sta balls+2+1,x
+    clc
+    lda.z __62
+    adc #<balls+2
+    sta.z __62
+    lda.z __62+1
+    adc #>balls+2
+    sta.z __62+1
+    lda #0
+    tay
+    sta (__62),y
+    tya
+    iny
+    sta (__62),y
     sta.z timer
   __b5:
     lda #0
@@ -337,6 +363,8 @@ main: {
   __b6:
     // for (i = 0; i < active_balls; i++)
     lda.z i_1+1
+    cmp.z active_balls+1
+    bcc __b7
     bne !+
     lda.z i_1
     cmp.z active_balls
@@ -372,64 +400,40 @@ main: {
     lda.z __44
     clc
     adc #<balls
-    sta.z __61
-    lda.z __44+1
-    adc #>balls
-    sta.z __61+1
-    lda.z __44
-    clc
-    adc #<balls+4
-    sta.z __62
-    lda.z __44+1
-    adc #>balls+4
-    sta.z __62+1
-    lda.z __44
-    clc
-    adc #<balls
     sta.z __63
     lda.z __44+1
     adc #>balls
     sta.z __63+1
-    ldy #0
-    lda (__61),y
+    lda.z __44
     clc
-    adc (__62),y
-    sta (__63),y
+    adc #<balls+4
+    sta.z __64
+    lda.z __44+1
+    adc #>balls+4
+    sta.z __64+1
+    lda.z __44
+    clc
+    adc #<balls
+    sta.z __65
+    lda.z __44+1
+    adc #>balls
+    sta.z __65+1
+    ldy #0
+    lda (__63),y
+    clc
+    adc (__64),y
+    sta (__65),y
     iny
-    lda (__61),y
-    adc (__62),y
-    sta (__63),y
+    lda (__63),y
+    adc (__64),y
+    sta (__65),y
     // balls[i].y_velocity += WEIGHT
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __64
-    lda.z __44+1
-    adc #>balls+6
-    sta.z __64+1
-    lda.z __44
-    clc
-    adc #<balls+6
-    sta.z __65
-    lda.z __44+1
-    adc #>balls+6
-    sta.z __65+1
-    ldy #0
-    lda (__64),y
-    clc
-    adc #<$10
-    sta (__65),y
-    iny
-    lda (__64),y
-    adc #>$10
-    sta (__65),y
-    // balls[i].y_position += (balls[i].y_velocity += WEIGHT)
-    lda.z __44
-    clc
-    adc #<balls+2
     sta.z __66
     lda.z __44+1
-    adc #>balls+2
+    adc #>balls+6
     sta.z __66+1
     lda.z __44
     clc
@@ -438,6 +442,16 @@ main: {
     lda.z __44+1
     adc #>balls+6
     sta.z __67+1
+    ldy #0
+    lda (__66),y
+    clc
+    adc #<$10
+    sta (__67),y
+    iny
+    lda (__66),y
+    adc #>$10
+    sta (__67),y
+    // balls[i].y_position += (balls[i].y_velocity += WEIGHT)
     lda.z __44
     clc
     adc #<balls+2
@@ -445,23 +459,37 @@ main: {
     lda.z __44+1
     adc #>balls+2
     sta.z __68+1
-    ldy #0
-    lda (__66),y
+    lda.z __44
     clc
-    adc (__67),y
-    sta (__68),y
+    adc #<balls+6
+    sta.z __69
+    lda.z __44+1
+    adc #>balls+6
+    sta.z __69+1
+    lda.z __44
+    clc
+    adc #<balls+2
+    sta.z __70
+    lda.z __44+1
+    adc #>balls+2
+    sta.z __70+1
+    ldy #0
+    lda (__68),y
+    clc
+    adc (__69),y
+    sta (__70),y
     iny
-    lda (__66),y
-    adc (__67),y
-    sta (__68),y
+    lda (__68),y
+    adc (__69),y
+    sta (__70),y
     // balls[i].x_position >> 8
     lda.z __44
     clc
     adc #<balls
-    sta.z __69
+    sta.z __71
     lda.z __44+1
     adc #>balls
-    sta.z __69+1
+    sta.z __71+1
     ldy #1
     lda (__20),y
     sta.z __20
@@ -478,34 +506,34 @@ main: {
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __72
+    sta.z __74
     lda.z __44+1
     adc #>balls+4
-    sta.z __72+1
+    sta.z __74+1
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __73
+    sta.z __75
     lda.z __44+1
     adc #>balls+4
-    sta.z __73+1
+    sta.z __75+1
     ldy #0
     lda #<$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     iny
     lda #>$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
   __b9:
     // balls[i].y_position >> 8
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __70
+    sta.z __72
     lda.z __44+1
     adc #>balls+2
-    sta.z __70+1
+    sta.z __72+1
     ldy #1
     lda (__23),y
     sta.z __23
@@ -514,10 +542,10 @@ main: {
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __71
+    sta.z __73
     lda.z __44+1
     adc #>balls+2
-    sta.z __71+1
+    sta.z __73+1
     ldy #1
     lda (__25),y
     sta.z __25
@@ -544,25 +572,25 @@ main: {
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __76
+    sta.z __78
     lda.z __44+1
     adc #>balls+6
-    sta.z __76+1
+    sta.z __78+1
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __77
+    sta.z __79
     lda.z __44+1
     adc #>balls+6
-    sta.z __77+1
+    sta.z __79+1
     ldy #0
     lda #<$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     iny
     lda #>$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     // h_bar - 2
     lda.z h_bar
     sec
@@ -579,25 +607,25 @@ main: {
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __78
+    sta.z __80
     lda.z __44+1
     adc #>balls+2
-    sta.z __78+1
+    sta.z __80+1
     ldy #0
     lda.z __31
-    sta (__78),y
+    sta (__80),y
     iny
     lda.z __31+1
-    sta (__78),y
+    sta (__80),y
   __b10:
     // balls[i].y_position >> 8
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __74
+    sta.z __76
     lda.z __44+1
     adc #>balls+2
-    sta.z __74+1
+    sta.z __76+1
     ldy #1
     lda (__32),y
     sta.z __32
@@ -618,12 +646,12 @@ main: {
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,x
     // balls[i].x_position >> 8
     clc
-    lda.z __75
+    lda.z __77
     adc #<balls
-    sta.z __75
-    lda.z __75+1
+    sta.z __77
+    lda.z __77+1
     adc #>balls
-    sta.z __75+1
+    sta.z __77+1
     ldy #1
     lda (__33),y
     sta.z __33
@@ -709,12 +737,12 @@ main: {
 // - ppuData : Pointer in the PPU memory
 // - cpuData : Pointer to the CPU memory (RAM of ROM)
 // - size : The number of bytes to transfer
-// ppuDataTransfer(void* zp($11) cpuData)
+// ppuDataTransfer(void* zp($12) cpuData)
 ppuDataTransfer: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label cpuSrc = $11
-    .label i = $13
-    .label cpuData = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label cpuSrc = $12
+    .label i = $14
+    .label cpuData = $12
     // >ppuData
     lda.z ppuDataPrepare1_ppuData+1
     // PPU->PPUADDR = >ppuData
@@ -757,11 +785,11 @@ ppuDataTransfer: {
 // Fill a number of bytes in the PPU memory
 // - ppuData : Pointer in the PPU memory
 // - size : The number of bytes to transfer
-// ppuDataFill(word zp($11) size)
+// ppuDataFill(word zp($12) size)
 ppuDataFill: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label i = $13
-    .label size = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label i = $14
+    .label size = $12
     // >ppuData
     lda.z ppuDataPrepare1_ppuData+1
     // PPU->PPUADDR = >ppuData
@@ -802,10 +830,10 @@ ppuDataFill: {
 // Information https://en.wikipedia.org/wiki/Xorshift
 // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html
 rand: {
-    .label __0 = $3c
-    .label __1 = $3e
-    .label __2 = $40
-    .label return = $36
+    .label __0 = $41
+    .label __1 = $43
+    .label __2 = $45
+    .label return = $3b
     // rand_state << 7
     lda.z rand_state+1
     lsr
diff --git a/src/test/ref/complex/nes-balls/kickballs-3.cfg b/src/test/ref/complex/nes-balls/kickballs-3.cfg
index 009c822fc..562439954 100644
--- a/src/test/ref/complex/nes-balls/kickballs-3.cfg
+++ b/src/test/ref/complex/nes-balls/kickballs-3.cfg
@@ -109,7 +109,7 @@ main::@1: scope:[main]  from main::@18 main::@23
   to:main::@3
 main::@3: scope:[main]  from main::@1 main::@14
   [50] (byte) main::timer#3 ← phi( main::@1/(byte) 0 main::@14/(byte) main::timer#15 )
-  [50] (byte) main::active_balls#2 ← phi( main::@1/(byte) 0 main::@14/(byte) main::active_balls#8 )
+  [50] (word) main::active_balls#2 ← phi( main::@1/(word) 0 main::@14/(word) main::active_balls#8 )
   [50] (byte) main::timer_2#2 ← phi( main::@1/(byte) 0 main::@14/(byte) main::timer_2#1 )
   to:main::@4
 main::@4: scope:[main]  from main::@3
@@ -117,187 +117,189 @@ main::@4: scope:[main]  from main::@3
   [52] (byte) main::h_bar#1 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (byte) $60
   [53] (byte~) main::$14 ← (byte) main::h_bar#1 ^ (byte) $ff
   [54] (volatile byte) scroll_y ← (byte~) main::$14
-  [55] if((byte) main::active_balls#2>=(byte) $32) goto main::@5
+  [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5
   to:main::@15
 main::@15: scope:[main]  from main::@4
   [56] (byte) main::timer#1 ← ++ (byte) main::timer#3
   [57] if((byte) main::timer#3!=(byte) 9) goto main::@25
   to:main::@16
 main::@16: scope:[main]  from main::@15
-  [58] (byte) main::active_balls#1 ← ++ (byte) main::active_balls#2
-  [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3
-  [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0
-  [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0
+  [58] (word) main::active_balls#1 ← ++ (word) main::active_balls#2
+  [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3
+  [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38
+  [61] *((word*~) main::$61) ← (byte) 0
+  [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38
+  [63] *((word*~) main::$62) ← (byte) 0
   to:main::@5
 main::@5: scope:[main]  from main::@16 main::@25 main::@4
-  [62] (byte) main::timer#15 ← phi( main::@25/(byte) main::timer#21 main::@16/(byte) 0 main::@4/(byte) main::timer#3 )
-  [62] (byte) main::active_balls#8 ← phi( main::@25/(byte) main::active_balls#2 main::@16/(byte) main::active_balls#1 main::@4/(byte) main::active_balls#2 )
+  [64] (byte) main::timer#15 ← phi( main::@25/(byte) main::timer#21 main::@16/(byte) 0 main::@4/(byte) main::timer#3 )
+  [64] (word) main::active_balls#8 ← phi( main::@25/(word) main::active_balls#2 main::@16/(word) main::active_balls#1 main::@4/(word) main::active_balls#2 )
   to:main::@6
 main::@6: scope:[main]  from main::@10 main::@5
-  [63] (byte) main::sprite_idx#3 ← phi( main::@10/(byte) main::sprite_idx#2 main::@5/(byte) 0 )
-  [63] (word) main::i#10 ← phi( main::@10/(word) main::i#4 main::@5/(byte) 0 )
-  [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7
+  [65] (byte) main::sprite_idx#3 ← phi( main::@10/(byte) main::sprite_idx#2 main::@5/(byte) 0 )
+  [65] (word) main::i#10 ← phi( main::@10/(word) main::i#4 main::@5/(byte) 0 )
+  [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7
   to:main::@8
 main::@8: scope:[main]  from main::@6
-  [65] *((byte*) 8193) ← (byte) $98
+  [67] *((byte*) 8193) ← (byte) $98
   to:main::@13
 main::@13: scope:[main]  from main::@13 main::@8
-  [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13
+  [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13
   to:main::@14
 main::@14: scope:[main]  from main::@13
-  [67] (volatile byte) vblank_hit ← (byte) 0
-  [68] *((byte*) 8193) ← (byte) $18
+  [69] (volatile byte) vblank_hit ← (byte) 0
+  [70] *((byte*) 8193) ← (byte) $18
   to:main::@3
 main::@7: scope:[main]  from main::@6
-  [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3
-  [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3
   [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62)
-  [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10
-  [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64)
+  [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10
   [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67)
-  [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8
-  [83] if((word~) main::$20>=(byte) 8) goto main::@9
+  [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69)
+  [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8
+  [85] if((word~) main::$20>=(byte) 8) goto main::@9
   to:main::@11
 main::@11: scope:[main]  from main::@7
-  [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
-  [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
-  [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff
+  [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff
   to:main::@9
 main::@9: scope:[main]  from main::@11 main::@7
-  [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8
-  [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8
-  [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8
-  [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10
+  [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8
+  [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8
+  [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8
+  [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10
   to:main::@24
 main::@24: scope:[main]  from main::@9
-  [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10
+  [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10
   to:main::@12
 main::@12: scope:[main]  from main::@24
-  [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff
-  [97] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2
-  [98] (word~) main::$56 ← (word)(byte~) main::$30
-  [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8
-  [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [101] *((word*~) main::$78) ← (word~) main::$31
+  [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff
+  [99] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2
+  [100] (word~) main::$56 ← (word)(byte~) main::$30
+  [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8
+  [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [103] *((word*~) main::$80) ← (word~) main::$31
   to:main::@10
 main::@10: scope:[main]  from main::@12 main::@24 main::@9
-  [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8
-  [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2
-  [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32
-  [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a
-  [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3
-  [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8
-  [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33
-  [111] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3
-  [112] (word) main::i#4 ← ++ (word) main::i#10
+  [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8
+  [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2
+  [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32
+  [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a
+  [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3
+  [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8
+  [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33
+  [113] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3
+  [114] (word) main::i#4 ← ++ (word) main::i#10
   to:main::@6
 main::@25: scope:[main]  from main::@15
-  [113] (byte) main::timer#21 ← (byte) main::timer#1
+  [115] (byte) main::timer#21 ← (byte) main::timer#1
   to:main::@5
 main::@2: scope:[main]  from main::@1
-  [114] phi()
-  [115] call rand 
-  [116] (word) rand::return#2 ← (word) rand::return#0
+  [116] phi()
+  [117] call rand 
+  [118] (word) rand::return#2 ← (word) rand::return#0
   to:main::@22
 main::@22: scope:[main]  from main::@2
-  [117] (word~) main::$9 ← (word) rand::return#2
-  [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff
-  [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3
-  [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36
-  [121] *((word*~) main::$59) ← (word~) main::$10
-  [122] call rand 
-  [123] (word) rand::return#3 ← (word) rand::return#0
+  [119] (word~) main::$9 ← (word) rand::return#2
+  [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff
+  [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3
+  [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36
+  [123] *((word*~) main::$59) ← (word~) main::$10
+  [124] call rand 
+  [125] (word) rand::return#3 ← (word) rand::return#0
   to:main::@23
 main::@23: scope:[main]  from main::@22
-  [124] (word~) main::$11 ← (word) rand::return#3
-  [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff
-  [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36
-  [127] *((word*~) main::$60) ← (byte~) main::$12
-  [128] (word) main::i#2 ← ++ (word) main::i#14
+  [126] (word~) main::$11 ← (word) rand::return#3
+  [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff
+  [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36
+  [129] *((word*~) main::$60) ← (byte~) main::$12
+  [130] (word) main::i#2 ← ++ (word) main::i#14
   to:main::@1
 
 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size)
 ppuDataTransfer: scope:[ppuDataTransfer]  from main::@17 main::@21
-  [129] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap )
-  [129] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 )
+  [131] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap )
+  [131] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 )
   to:ppuDataTransfer::ppuDataPrepare1
 ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer]  from ppuDataTransfer
-  [130] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
-  [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0
-  [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
-  [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1
+  [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
+  [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0
+  [134] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
+  [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1
   to:ppuDataTransfer::@3
 ppuDataTransfer::@3: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPrepare1
-  [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
+  [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
   to:ppuDataTransfer::@1
 ppuDataTransfer::@1: scope:[ppuDataTransfer]  from ppuDataTransfer::@3 ppuDataTransfer::@4
-  [135] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 )
-  [135] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 )
-  [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2
+  [137] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 )
+  [137] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 )
+  [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2
   to:ppuDataTransfer::@return
 ppuDataTransfer::@return: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
-  [137] return 
+  [139] return 
   to:@return
 ppuDataTransfer::@2: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
-  [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2)
+  [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2)
   to:ppuDataTransfer::ppuDataPut1
 ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer]  from ppuDataTransfer::@2
-  [139] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0
+  [141] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0
   to:ppuDataTransfer::@4
 ppuDataTransfer::@4: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPut1
-  [140] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2
-  [141] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2
+  [142] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2
+  [143] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2
   to:ppuDataTransfer::@1
 
 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size)
 ppuDataFill: scope:[ppuDataFill]  from main::@19 main::@20
-  [142] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 )
-  [142] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 )
+  [144] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 )
+  [144] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 )
   to:ppuDataFill::ppuDataPrepare1
 ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill]  from ppuDataFill
-  [143] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
-  [144] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0
-  [145] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
-  [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1
+  [145] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
+  [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0
+  [147] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
+  [148] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1
   to:ppuDataFill::@1
 ppuDataFill::@1: scope:[ppuDataFill]  from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1
-  [147] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 )
-  [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1
+  [149] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 )
+  [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1
   to:ppuDataFill::@return
 ppuDataFill::@return: scope:[ppuDataFill]  from ppuDataFill::@1
-  [149] return 
+  [151] return 
   to:@return
 ppuDataFill::ppuDataPut1: scope:[ppuDataFill]  from ppuDataFill::@1
-  [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0
+  [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0
   to:ppuDataFill::@2
 ppuDataFill::@2: scope:[ppuDataFill]  from ppuDataFill::ppuDataPut1
-  [151] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2
+  [153] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2
   to:ppuDataFill::@1
 
 (word()) rand()
 rand: scope:[rand]  from main::@2 main::@22
-  [152] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 )
-  [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7
-  [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0
-  [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9
-  [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1
-  [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8
-  [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2
-  [159] (word) rand::return#0 ← (word) rand_state#11
+  [154] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 )
+  [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7
+  [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0
+  [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9
+  [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1
+  [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8
+  [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2
+  [161] (word) rand::return#0 ← (word) rand_state#11
   to:rand::@return
 rand::@return: scope:[rand]  from rand
-  [160] return 
+  [162] return 
   to:@return
diff --git a/src/test/ref/complex/nes-balls/kickballs-3.log b/src/test/ref/complex/nes-balls/kickballs-3.log
index 09e3ecf64..39184079e 100644
--- a/src/test/ref/complex/nes-balls/kickballs-3.log
+++ b/src/test/ref/complex/nes-balls/kickballs-3.log
@@ -294,7 +294,7 @@ main::@19: scope:[main]  from main::enableVideoOutput1
   (byte*~) main::$54 ← (byte*~) main::$55 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUCTRL
   *((byte*~) main::$54) ← (number) $88
   (word) main::i#0 ← (word) 0
-  (byte) main::active_balls#0 ← (byte) 0
+  (word) main::active_balls#0 ← (word) 0
   (byte) main::timer#0 ← (byte) 0
   (byte) main::timer_2#0 ← (byte) 0
   (byte) main::h_bar#0 ← (byte) $80
@@ -303,7 +303,7 @@ main::@19: scope:[main]  from main::enableVideoOutput1
   to:main::@1
 main::@1: scope:[main]  from main::@19 main::@25
   (byte) main::timer#6 ← phi( main::@19/(byte) main::timer#0 main::@25/(byte) main::timer#8 )
-  (byte) main::active_balls#9 ← phi( main::@19/(byte) main::active_balls#0 main::@25/(byte) main::active_balls#13 )
+  (word) main::active_balls#9 ← phi( main::@19/(word) main::active_balls#0 main::@25/(word) main::active_balls#13 )
   (byte) main::timer_2#4 ← phi( main::@19/(byte) main::timer_2#0 main::@25/(byte) main::timer_2#6 )
   (word) rand_state#20 ← phi( main::@19/(word) rand_state#22 main::@25/(word) rand_state#5 )
   (word) main::i#5 ← phi( main::@19/(word) main::i#1 main::@25/(word) main::i#2 )
@@ -312,7 +312,7 @@ main::@1: scope:[main]  from main::@19 main::@25
   to:main::@3
 main::@2: scope:[main]  from main::@1
   (byte) main::timer#12 ← phi( main::@1/(byte) main::timer#6 )
-  (byte) main::active_balls#19 ← phi( main::@1/(byte) main::active_balls#9 )
+  (word) main::active_balls#19 ← phi( main::@1/(word) main::active_balls#9 )
   (byte) main::timer_2#10 ← phi( main::@1/(byte) main::timer_2#4 )
   (word) main::i#14 ← phi( main::@1/(word) main::i#5 )
   (word) rand_state#17 ← phi( main::@1/(word) rand_state#20 )
@@ -321,7 +321,7 @@ main::@2: scope:[main]  from main::@1
   to:main::@24
 main::@24: scope:[main]  from main::@2
   (byte) main::timer#10 ← phi( main::@2/(byte) main::timer#12 )
-  (byte) main::active_balls#17 ← phi( main::@2/(byte) main::active_balls#19 )
+  (word) main::active_balls#17 ← phi( main::@2/(word) main::active_balls#19 )
   (byte) main::timer_2#8 ← phi( main::@2/(byte) main::timer_2#10 )
   (word) main::i#6 ← phi( main::@2/(word) main::i#14 )
   (word) rand_state#12 ← phi( main::@2/(word) rand_state#3 )
@@ -336,7 +336,7 @@ main::@24: scope:[main]  from main::@2
   to:main::@25
 main::@25: scope:[main]  from main::@24
   (byte) main::timer#8 ← phi( main::@24/(byte) main::timer#10 )
-  (byte) main::active_balls#13 ← phi( main::@24/(byte) main::active_balls#17 )
+  (word) main::active_balls#13 ← phi( main::@24/(word) main::active_balls#17 )
   (byte) main::timer_2#6 ← phi( main::@24/(byte) main::timer_2#8 )
   (word) main::i#7 ← phi( main::@24/(word) main::i#6 )
   (word) rand_state#13 ← phi( main::@24/(word) rand_state#3 )
@@ -351,7 +351,7 @@ main::@25: scope:[main]  from main::@24
 main::@3: scope:[main]  from main::@1 main::@15
   (word) rand_state#21 ← phi( main::@1/(word) rand_state#20 main::@15/(word) rand_state#23 )
   (byte) main::timer#5 ← phi( main::@1/(byte) main::timer#6 main::@15/(byte) main::timer#7 )
-  (byte) main::active_balls#5 ← phi( main::@1/(byte) main::active_balls#9 main::@15/(byte) main::active_balls#10 )
+  (word) main::active_balls#5 ← phi( main::@1/(word) main::active_balls#9 main::@15/(word) main::active_balls#10 )
   (byte) main::timer_2#3 ← phi( main::@1/(byte) main::timer_2#4 main::@15/(byte) main::timer_2#5 )
   (bool~) main::$57 ← (number) 0 != (number) 1
   if((bool~) main::$57) goto main::@4
@@ -359,14 +359,14 @@ main::@3: scope:[main]  from main::@1 main::@15
 main::@4: scope:[main]  from main::@3
   (word) rand_state#36 ← phi( main::@3/(word) rand_state#21 )
   (byte) main::timer#4 ← phi( main::@3/(byte) main::timer#5 )
-  (byte) main::active_balls#2 ← phi( main::@3/(byte) main::active_balls#5 )
+  (word) main::active_balls#2 ← phi( main::@3/(word) main::active_balls#5 )
   (byte) main::timer_2#2 ← phi( main::@3/(byte) main::timer_2#3 )
   (byte) main::timer_2#1 ← ++ (byte) main::timer_2#2
   (number~) main::$13 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (number) $60
   (byte) main::h_bar#1 ← (number~) main::$13
   (number~) main::$14 ← (byte) main::h_bar#1 ^ (number) $ff
   (volatile byte) scroll_y ← (number~) main::$14
-  (bool~) main::$15 ← (byte) main::active_balls#2 < (number) $32
+  (bool~) main::$15 ← (word) main::active_balls#2 < (number) $32
   (bool~) main::$16 ← ! (bool~) main::$15
   if((bool~) main::$16) goto main::@6
   to:main::@16
@@ -379,7 +379,7 @@ main::@6: scope:[main]  from main::@16 main::@17 main::@4
   (byte) main::timer#15 ← phi( main::@16/(byte) main::timer#1 main::@17/(byte) main::timer#2 main::@4/(byte) main::timer#4 )
   (byte) main::timer_2#13 ← phi( main::@16/(byte) main::timer_2#14 main::@17/(byte) main::timer_2#15 main::@4/(byte) main::timer_2#1 )
   (byte) main::h_bar#8 ← phi( main::@16/(byte) main::h_bar#9 main::@17/(byte) main::h_bar#10 main::@4/(byte) main::h_bar#1 )
-  (byte) main::active_balls#8 ← phi( main::@16/(byte) main::active_balls#6 main::@17/(byte) main::active_balls#1 main::@4/(byte) main::active_balls#2 )
+  (word) main::active_balls#8 ← phi( main::@16/(word) main::active_balls#6 main::@17/(word) main::active_balls#1 main::@4/(word) main::active_balls#2 )
   (byte) main::sprite_idx#1 ← (number) 0
   (word) main::i#3 ← (number) 0
   to:main::@7
@@ -387,7 +387,7 @@ main::@16: scope:[main]  from main::@4
   (word) rand_state#34 ← phi( main::@4/(word) rand_state#36 )
   (byte) main::timer_2#14 ← phi( main::@4/(byte) main::timer_2#1 )
   (byte) main::h_bar#9 ← phi( main::@4/(byte) main::h_bar#1 )
-  (byte) main::active_balls#6 ← phi( main::@4/(byte) main::active_balls#2 )
+  (word) main::active_balls#6 ← phi( main::@4/(word) main::active_balls#2 )
   (byte) main::timer#3 ← phi( main::@4/(byte) main::timer#4 )
   (bool~) main::$17 ← (byte) main::timer#3 == (number) 9
   (byte) main::timer#1 ← ++ (byte) main::timer#3
@@ -398,13 +398,13 @@ main::@17: scope:[main]  from main::@16
   (word) rand_state#35 ← phi( main::@16/(word) rand_state#34 )
   (byte) main::timer_2#15 ← phi( main::@16/(byte) main::timer_2#14 )
   (byte) main::h_bar#10 ← phi( main::@16/(byte) main::h_bar#9 )
-  (byte) main::active_balls#3 ← phi( main::@16/(byte) main::active_balls#6 )
+  (word) main::active_balls#3 ← phi( main::@16/(word) main::active_balls#6 )
   (byte) main::timer#2 ← (number) 0
-  (byte) main::active_balls#1 ← ++ (byte) main::active_balls#3
-  (byte~) main::$37 ← (byte) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
-  *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (byte~) main::$37) ← (number) 0
-  (byte~) main::$38 ← (byte) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
-  *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (byte~) main::$38) ← (number) 0
+  (word) main::active_balls#1 ← ++ (word) main::active_balls#3
+  (word~) main::$37 ← (word) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
+  *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$37) ← (number) 0
+  (word~) main::$38 ← (word) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
+  *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$38) ← (number) 0
   to:main::@6
 main::@7: scope:[main]  from main::@11 main::@6
   (word) rand_state#29 ← phi( main::@11/(word) rand_state#31 main::@6/(word) rand_state#32 )
@@ -412,16 +412,16 @@ main::@7: scope:[main]  from main::@11 main::@6
   (byte) main::timer_2#11 ← phi( main::@11/(byte) main::timer_2#12 main::@6/(byte) main::timer_2#13 )
   (byte) main::sprite_idx#8 ← phi( main::@11/(byte) main::sprite_idx#2 main::@6/(byte) main::sprite_idx#1 )
   (byte) main::h_bar#6 ← phi( main::@11/(byte) main::h_bar#7 main::@6/(byte) main::h_bar#8 )
-  (byte) main::active_balls#4 ← phi( main::@11/(byte) main::active_balls#7 main::@6/(byte) main::active_balls#8 )
+  (word) main::active_balls#4 ← phi( main::@11/(word) main::active_balls#7 main::@6/(word) main::active_balls#8 )
   (word) main::i#8 ← phi( main::@11/(word) main::i#4 main::@6/(word) main::i#3 )
-  (bool~) main::$19 ← (word) main::i#8 < (byte) main::active_balls#4
+  (bool~) main::$19 ← (word) main::i#8 < (word) main::active_balls#4
   if((bool~) main::$19) goto main::@8
   to:main::@9
 main::@8: scope:[main]  from main::@7
   (word) rand_state#41 ← phi( main::@7/(word) rand_state#29 )
   (byte) main::timer#19 ← phi( main::@7/(byte) main::timer#13 )
   (byte) main::timer_2#19 ← phi( main::@7/(byte) main::timer_2#11 )
-  (byte) main::active_balls#15 ← phi( main::@7/(byte) main::active_balls#4 )
+  (word) main::active_balls#15 ← phi( main::@7/(word) main::active_balls#4 )
   (byte) main::sprite_idx#7 ← phi( main::@7/(byte) main::sprite_idx#8 )
   (byte) main::h_bar#5 ← phi( main::@7/(byte) main::h_bar#6 )
   (word) main::i#9 ← phi( main::@7/(word) main::i#8 )
@@ -440,7 +440,7 @@ main::@8: scope:[main]  from main::@7
 main::@9: scope:[main]  from main::@7
   (word) rand_state#27 ← phi( main::@7/(word) rand_state#29 )
   (byte) main::timer#11 ← phi( main::@7/(byte) main::timer#13 )
-  (byte) main::active_balls#18 ← phi( main::@7/(byte) main::active_balls#4 )
+  (word) main::active_balls#18 ← phi( main::@7/(word) main::active_balls#4 )
   (byte) main::timer_2#9 ← phi( main::@7/(byte) main::timer_2#11 )
   *((byte*)(number) $2001) ← (number) $98
   to:main::@14
@@ -448,7 +448,7 @@ main::@10: scope:[main]  from main::@12 main::@8
   (word) rand_state#37 ← phi( main::@12/(word) rand_state#40 main::@8/(word) rand_state#41 )
   (byte) main::timer#16 ← phi( main::@12/(byte) main::timer#18 main::@8/(byte) main::timer#19 )
   (byte) main::timer_2#16 ← phi( main::@12/(byte) main::timer_2#18 main::@8/(byte) main::timer_2#19 )
-  (byte) main::active_balls#11 ← phi( main::@12/(byte) main::active_balls#14 main::@8/(byte) main::active_balls#15 )
+  (word) main::active_balls#11 ← phi( main::@12/(word) main::active_balls#14 main::@8/(word) main::active_balls#15 )
   (byte) main::sprite_idx#4 ← phi( main::@12/(byte) main::sprite_idx#6 main::@8/(byte) main::sprite_idx#7 )
   (byte) main::h_bar#2 ← phi( main::@12/(byte) main::h_bar#4 main::@8/(byte) main::h_bar#5 )
   (word) main::i#10 ← phi( main::@12/(word) main::i#11 main::@8/(word) main::i#9 )
@@ -467,7 +467,7 @@ main::@12: scope:[main]  from main::@8
   (word) rand_state#40 ← phi( main::@8/(word) rand_state#41 )
   (byte) main::timer#18 ← phi( main::@8/(byte) main::timer#19 )
   (byte) main::timer_2#18 ← phi( main::@8/(byte) main::timer_2#19 )
-  (byte) main::active_balls#14 ← phi( main::@8/(byte) main::active_balls#15 )
+  (word) main::active_balls#14 ← phi( main::@8/(word) main::active_balls#15 )
   (byte) main::sprite_idx#6 ← phi( main::@8/(byte) main::sprite_idx#7 )
   (byte) main::h_bar#4 ← phi( main::@8/(byte) main::h_bar#5 )
   (word) main::i#11 ← phi( main::@8/(word) main::i#9 )
@@ -479,7 +479,7 @@ main::@11: scope:[main]  from main::@10 main::@13
   (byte) main::timer#14 ← phi( main::@10/(byte) main::timer#16 main::@13/(byte) main::timer#17 )
   (byte) main::timer_2#12 ← phi( main::@10/(byte) main::timer_2#16 main::@13/(byte) main::timer_2#17 )
   (byte) main::h_bar#7 ← phi( main::@10/(byte) main::h_bar#2 main::@13/(byte) main::h_bar#3 )
-  (byte) main::active_balls#7 ← phi( main::@10/(byte) main::active_balls#11 main::@13/(byte) main::active_balls#12 )
+  (word) main::active_balls#7 ← phi( main::@10/(word) main::active_balls#11 main::@13/(word) main::active_balls#12 )
   (byte) main::sprite_idx#3 ← phi( main::@10/(byte) main::sprite_idx#4 main::@13/(byte) main::sprite_idx#5 )
   (word) main::i#12 ← phi( main::@10/(word) main::i#10 main::@13/(word) main::i#13 )
   (word~) main::$46 ← (word) main::i#12 * (const byte) SIZEOF_STRUCT_$0
@@ -501,7 +501,7 @@ main::@13: scope:[main]  from main::@10
   (word) rand_state#38 ← phi( main::@10/(word) rand_state#37 )
   (byte) main::timer#17 ← phi( main::@10/(byte) main::timer#16 )
   (byte) main::timer_2#17 ← phi( main::@10/(byte) main::timer_2#16 )
-  (byte) main::active_balls#12 ← phi( main::@10/(byte) main::active_balls#11 )
+  (word) main::active_balls#12 ← phi( main::@10/(word) main::active_balls#11 )
   (byte) main::sprite_idx#5 ← phi( main::@10/(byte) main::sprite_idx#4 )
   (byte) main::h_bar#3 ← phi( main::@10/(byte) main::h_bar#2 )
   (word) main::i#13 ← phi( main::@10/(word) main::i#10 )
@@ -516,7 +516,7 @@ main::@13: scope:[main]  from main::@10
 main::@14: scope:[main]  from main::@14 main::@9
   (word) rand_state#25 ← phi( main::@14/(word) rand_state#25 main::@9/(word) rand_state#27 )
   (byte) main::timer#9 ← phi( main::@14/(byte) main::timer#9 main::@9/(byte) main::timer#11 )
-  (byte) main::active_balls#16 ← phi( main::@14/(byte) main::active_balls#16 main::@9/(byte) main::active_balls#18 )
+  (word) main::active_balls#16 ← phi( main::@14/(word) main::active_balls#16 main::@9/(word) main::active_balls#18 )
   (byte) main::timer_2#7 ← phi( main::@14/(byte) main::timer_2#7 main::@9/(byte) main::timer_2#9 )
   (bool~) main::$58 ← (number) 0 != (volatile byte) vblank_hit
   (bool~) main::$34 ← ! (bool~) main::$58
@@ -525,7 +525,7 @@ main::@14: scope:[main]  from main::@14 main::@9
 main::@15: scope:[main]  from main::@14
   (word) rand_state#23 ← phi( main::@14/(word) rand_state#25 )
   (byte) main::timer#7 ← phi( main::@14/(byte) main::timer#9 )
-  (byte) main::active_balls#10 ← phi( main::@14/(byte) main::active_balls#16 )
+  (word) main::active_balls#10 ← phi( main::@14/(word) main::active_balls#16 )
   (byte) main::timer_2#5 ← phi( main::@14/(byte) main::timer_2#7 )
   (volatile byte) vblank_hit ← (number) 0
   *((byte*)(number) $2001) ← (number) $18
@@ -700,8 +700,8 @@ SYMBOL TABLE SSA
 (bool~) main::$34
 (word~) main::$35
 (word~) main::$36
-(byte~) main::$37
-(byte~) main::$38
+(word~) main::$37
+(word~) main::$38
 (word~) main::$39
 (word~) main::$40
 (word~) main::$41
@@ -751,27 +751,27 @@ SYMBOL TABLE SSA
 (label) main::@8
 (label) main::@9
 (label) main::@return
-(byte) main::active_balls
-(byte) main::active_balls#0
-(byte) main::active_balls#1
-(byte) main::active_balls#10
-(byte) main::active_balls#11
-(byte) main::active_balls#12
-(byte) main::active_balls#13
-(byte) main::active_balls#14
-(byte) main::active_balls#15
-(byte) main::active_balls#16
-(byte) main::active_balls#17
-(byte) main::active_balls#18
-(byte) main::active_balls#19
-(byte) main::active_balls#2
-(byte) main::active_balls#3
-(byte) main::active_balls#4
-(byte) main::active_balls#5
-(byte) main::active_balls#6
-(byte) main::active_balls#7
-(byte) main::active_balls#8
-(byte) main::active_balls#9
+(word) main::active_balls
+(word) main::active_balls#0
+(word) main::active_balls#1
+(word) main::active_balls#10
+(word) main::active_balls#11
+(word) main::active_balls#12
+(word) main::active_balls#13
+(word) main::active_balls#14
+(word) main::active_balls#15
+(word) main::active_balls#16
+(word) main::active_balls#17
+(word) main::active_balls#18
+(word) main::active_balls#19
+(word) main::active_balls#2
+(word) main::active_balls#3
+(word) main::active_balls#4
+(word) main::active_balls#5
+(word) main::active_balls#6
+(word) main::active_balls#7
+(word) main::active_balls#8
+(word) main::active_balls#9
 (label) main::enableVideoOutput1
 (byte*~) main::enableVideoOutput1_$0
 (byte*~) main::enableVideoOutput1_$1
@@ -1151,14 +1151,14 @@ Adding number conversion cast (unumber) $60 in (number~) main::$13 ← *((const
 Adding number conversion cast (unumber) main::$13 in (number~) main::$13 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (unumber)(number) $60
 Adding number conversion cast (unumber) $ff in (number~) main::$14 ← (byte) main::h_bar#1 ^ (number) $ff
 Adding number conversion cast (unumber) main::$14 in (number~) main::$14 ← (byte) main::h_bar#1 ^ (unumber)(number) $ff
-Adding number conversion cast (unumber) $32 in (bool~) main::$15 ← (byte) main::active_balls#2 < (number) $32
+Adding number conversion cast (unumber) $32 in (bool~) main::$15 ← (word) main::active_balls#2 < (number) $32
 Adding number conversion cast (snumber) 0 in (signed word) main::return#0 ← (number) 0
 Adding number conversion cast (unumber) 0 in (byte) main::sprite_idx#1 ← (number) 0
 Adding number conversion cast (unumber) 0 in (word) main::i#3 ← (number) 0
 Adding number conversion cast (unumber) 9 in (bool~) main::$17 ← (byte) main::timer#3 == (number) 9
 Adding number conversion cast (unumber) 0 in (byte) main::timer#2 ← (number) 0
-Adding number conversion cast (unumber) 0 in *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (byte~) main::$37) ← (number) 0
-Adding number conversion cast (unumber) 0 in *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (byte~) main::$38) ← (number) 0
+Adding number conversion cast (unumber) 0 in *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$37) ← (number) 0
+Adding number conversion cast (unumber) 0 in *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$38) ← (number) 0
 Adding number conversion cast (unumber) $10 in *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) + (number) $10
 Adding number conversion cast (unumber) 8 in (word~) main::$20 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$42) >> (number) 8
 Adding number conversion cast (unumber) 8 in (bool~) main::$21 ← (word~) main::$20 < (number) 8
@@ -1206,8 +1206,8 @@ Inlining cast (signed word) main::return#0 ← (snumber)(number) 0
 Inlining cast (byte) main::sprite_idx#1 ← (unumber)(number) 0
 Inlining cast (word) main::i#3 ← (unumber)(number) 0
 Inlining cast (byte) main::timer#2 ← (unumber)(number) 0
-Inlining cast *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (byte~) main::$37) ← (unumber)(number) 0
-Inlining cast *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (byte~) main::$38) ← (unumber)(number) 0
+Inlining cast *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$37) ← (unumber)(number) 0
+Inlining cast *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$38) ← (unumber)(number) 0
 Inlining cast *((byte*)(number) $2001) ← (unumber)(number) $98
 Inlining cast *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (unumber)(number) $a
 Inlining cast *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$49) ← (unumber)(number) 3
@@ -1376,7 +1376,7 @@ Inferred type updated to byte in (unumber~) main::$26 ← (byte) main::h_bar#2 +
 Inferred type updated to byte in (unumber~) main::$30 ← (byte) main::h_bar#3 - (byte) 2
 Inversing boolean not [87] (bool~) main::initNES1_waitForVBlank1_$1 ← (byte) 0 == (byte~) main::initNES1_waitForVBlank1_$0 from [86] (bool~) main::initNES1_waitForVBlank1_$4 ← (byte) 0 != (byte~) main::initNES1_waitForVBlank1_$0
 Inversing boolean not [109] (bool~) main::initNES1_waitForVBlank2_$1 ← (byte) 0 == (byte~) main::initNES1_waitForVBlank2_$0 from [108] (bool~) main::initNES1_waitForVBlank2_$4 ← (byte) 0 != (byte~) main::initNES1_waitForVBlank2_$0
-Inversing boolean not [185] (bool~) main::$16 ← (byte) main::active_balls#2 >= (byte) $32 from [184] (bool~) main::$15 ← (byte) main::active_balls#2 < (byte) $32
+Inversing boolean not [185] (bool~) main::$16 ← (word) main::active_balls#2 >= (byte) $32 from [184] (bool~) main::$15 ← (word) main::active_balls#2 < (byte) $32
 Inversing boolean not [195] (bool~) main::$18 ← (byte) main::timer#3 != (byte) 9 from [193] (bool~) main::$17 ← (byte) main::timer#3 == (byte) 9
 Inversing boolean not [217] (bool~) main::$22 ← (word~) main::$20 >= (byte) 8 from [216] (bool~) main::$21 ← (word~) main::$20 < (byte) 8
 Inversing boolean not [260] (bool~) main::$34 ← (byte) 0 == (volatile byte) vblank_hit from [259] (bool~) main::$58 ← (byte) 0 != (volatile byte) vblank_hit
@@ -1462,24 +1462,24 @@ Identical Phi Values (word) rand_state#46 (word) rand_state#48
 Identical Phi Values (word) rand_state#44 (word) rand_state#46
 Identical Phi Values (word) rand_state#22 (word) rand_state#44
 Identical Phi Values (byte) main::timer_2#10 (byte) main::timer_2#0
-Identical Phi Values (byte) main::active_balls#13 (byte) main::active_balls#0
+Identical Phi Values (word) main::active_balls#13 (word) main::active_balls#0
 Identical Phi Values (byte) main::timer#10 (byte) main::timer#0
 Identical Phi Values (word) rand_state#12 (word) rand_state#11
 Identical Phi Values (word) rand_state#13 (word) rand_state#11
-Identical Phi Values (byte) main::active_balls#11 (byte) main::active_balls#8
+Identical Phi Values (word) main::active_balls#11 (word) main::active_balls#8
 Identical Phi Values (byte) main::h_bar#2 (byte) main::h_bar#1
 Identical Phi Values (byte) main::timer_2#11 (byte) main::timer_2#1
 Identical Phi Values (byte) main::timer#11 (byte) main::timer#15
 Identical Phi Values (word) rand_state#27 (word) rand_state#14
 Identical Phi Values (byte) main::timer_2#5 (byte) main::timer_2#11
-Identical Phi Values (byte) main::active_balls#10 (byte) main::active_balls#11
+Identical Phi Values (word) main::active_balls#10 (word) main::active_balls#11
 Identical Phi Values (byte) main::timer#7 (byte) main::timer#11
 Identical Phi Values (word) rand_state#23 (word) rand_state#27
 Identical Phi Values (word) rand_state#15 (word) rand_state#14
 Successful SSA optimization Pass2IdenticalPhiElimination
 Identical Phi Values (word) rand_state#14 (word) rand_state#17
 Successful SSA optimization Pass2IdenticalPhiElimination
-Identified duplicate assignment right side [202] (byte~) main::$38 ← (byte) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
+Identified duplicate assignment right side [202] (word~) main::$38 ← (word) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
 Identified duplicate assignment right side [210] (word~) main::$40 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
 Identified duplicate assignment right side [212] (word~) main::$41 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
 Identified duplicate assignment right side [214] (word~) main::$42 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
@@ -1497,9 +1497,9 @@ Simple Condition (bool~) main::initNES1_$5 [79] if((byte) 0!=(byte) main::initNE
 Simple Condition (bool~) main::initNES1_waitForVBlank2_$1 [85] if((byte) 0==(byte~) main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1
 Simple Condition (bool~) main::$8 [121] if((word) main::i#14<(byte) $32) goto main::@2
 Simple Condition (bool~) main::$57 [139] if((number) 0!=(number) 1) goto main::@4
-Simple Condition (bool~) main::$16 [145] if((byte) main::active_balls#2>=(byte) $32) goto main::@6
+Simple Condition (bool~) main::$16 [145] if((word) main::active_balls#2>=(byte) $32) goto main::@6
 Simple Condition (bool~) main::$18 [152] if((byte) main::timer#3!=(byte) 9) goto main::@6
-Simple Condition (bool~) main::$19 [161] if((word) main::i#10<(byte) main::active_balls#8) goto main::@8
+Simple Condition (bool~) main::$19 [161] if((word) main::i#10<(word) main::active_balls#8) goto main::@8
 Simple Condition (bool~) main::$22 [171] if((word~) main::$20>=(byte) 8) goto main::@10
 Simple Condition (bool~) main::$34 [208] if((byte) 0==(volatile byte) vblank_hit) goto main::@14
 Successful SSA optimization Pass2ConditionalJumpSimplification
@@ -1558,7 +1558,7 @@ Constant (const byte*) main::enableVideoOutput1_$2 = (byte*)PPU
 Constant (const byte*) main::enableVideoOutput1_$3 = (byte*)PPU
 Constant (const byte*) main::$55 = (byte*)PPU
 Constant (const word) main::i#0 = 0
-Constant (const byte) main::active_balls#0 = 0
+Constant (const word) main::active_balls#0 = 0
 Constant (const byte) main::timer#0 = 0
 Constant (const byte) main::timer_2#0 = 0
 Constant (const byte) main::h_bar#0 = $80
@@ -1600,23 +1600,25 @@ Converting *(pointer+n) to pointer[n] [225] *((byte*~) vblank::ppuSpriteBufferDm
 Successful SSA optimization Pass2InlineDerefIdx
 De-inlining pointer[w] to *(pointer+w)   [128] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$35) ← (word~) main::$10
 De-inlining pointer[w] to *(pointer+w)   [135] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$36) ← (byte~) main::$12
+De-inlining pointer[w] to *(pointer+w)   [156] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$37) ← (byte) 0
+De-inlining pointer[w] to *(pointer+w)   [158] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$38) ← (byte) 0
 De-inlining pointer[w] to *(pointer+w)   [163] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$39)
-De-inlining pointer[w] to *(pointer+w)   [163] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) ← *((word*~) main::$61) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$39)
-De-inlining pointer[w] to *(pointer+w)   [163] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) ← *((word*~) main::$61) + *((word*~) main::$62)
+De-inlining pointer[w] to *(pointer+w)   [163] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) ← *((word*~) main::$63) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$39)
+De-inlining pointer[w] to *(pointer+w)   [163] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39) ← *((word*~) main::$63) + *((word*~) main::$64)
 De-inlining pointer[w] to *(pointer+w)   [165] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) + (byte) $10
-De-inlining pointer[w] to *(pointer+w)   [165] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) ← *((word*~) main::$64) + (byte) $10
+De-inlining pointer[w] to *(pointer+w)   [165] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$40) ← *((word*~) main::$66) + (byte) $10
 De-inlining pointer[w] to *(pointer+w)   [167] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$41)
-De-inlining pointer[w] to *(pointer+w)   [167] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) ← *((word*~) main::$66) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$41)
-De-inlining pointer[w] to *(pointer+w)   [167] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) ← *((word*~) main::$66) + *((word*~) main::$67)
+De-inlining pointer[w] to *(pointer+w)   [167] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) ← *((word*~) main::$68) + *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$41)
+De-inlining pointer[w] to *(pointer+w)   [167] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$41) ← *((word*~) main::$68) + *((word*~) main::$69)
 De-inlining pointer[w] to *(pointer+w)   [169] (word~) main::$20 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$42) >> (byte) 8
 De-inlining pointer[w] to *(pointer+w)   [174] (word~) main::$23 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$43) >> (byte) 8
 De-inlining pointer[w] to *(pointer+w)   [177] (word~) main::$25 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$44) >> (byte) 8
 De-inlining pointer[w] to *(pointer+w)   [184] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$45) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$45) ^ (word) $ffff
-De-inlining pointer[w] to *(pointer+w)   [184] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$45) ← *((word*~) main::$72) ^ (word) $ffff
+De-inlining pointer[w] to *(pointer+w)   [184] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_VELOCITY + (word~) main::$45) ← *((word*~) main::$74) ^ (word) $ffff
 De-inlining pointer[w] to *(pointer+w)   [186] (word~) main::$32 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$46) >> (byte) 8
 De-inlining pointer[w] to *(pointer+w)   [194] (word~) main::$33 ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$50) >> (byte) 8
 De-inlining pointer[w] to *(pointer+w)   [200] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$52) ← *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$52) ^ (word) $ffff
-De-inlining pointer[w] to *(pointer+w)   [200] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$52) ← *((word*~) main::$76) ^ (word) $ffff
+De-inlining pointer[w] to *(pointer+w)   [200] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_VELOCITY + (word~) main::$52) ← *((word*~) main::$78) ^ (word) $ffff
 De-inlining pointer[w] to *(pointer+w)   [205] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_Y_POSITION + (word~) main::$53) ← (word~) main::$31
 Successful SSA optimization Pass2DeInlineWordDerefIdx
 Simplifying expression containing zero main::initNES1_disableVideoOutput1_$2 in [51] (byte*~) main::initNES1_disableVideoOutput1_$0 ← (const byte*) main::initNES1_disableVideoOutput1_$2 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUCTRL
@@ -1626,12 +1628,12 @@ Simplifying expression containing zero main::enableVideoOutput1_$2 in [104] (byt
 Simplifying expression containing zero main::enableVideoOutput1_$2 in [105] *((const byte*) main::enableVideoOutput1_$2 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUCTRL) ← (byte) $80
 Simplifying expression containing zero main::$55 in [110] (byte*~) main::$54 ← (const byte*) main::$55 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUCTRL
 Simplifying expression containing zero main::$55 in [111] *((const byte*) main::$55 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUCTRL) ← (byte) $88
-Simplifying expression containing zero (word*)balls in [156] *((word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (byte~) main::$37) ← (byte) 0
-Simplifying expression containing zero (word*)balls in (word*~) main::$61 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39
+Simplifying expression containing zero (word*)balls in (word*~) main::$61 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$37
 Simplifying expression containing zero (word*)balls in (word*~) main::$63 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39
-Simplifying expression containing zero (word*)balls in (word*~) main::$69 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$42
+Simplifying expression containing zero (word*)balls in (word*~) main::$65 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$39
+Simplifying expression containing zero (word*)balls in (word*~) main::$71 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$42
 Simplifying expression containing zero (byte*)SPRITE_BUFFER in [188] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_Y + (byte~) main::$47) ← (byte)(word~) main::$32
-Simplifying expression containing zero (word*)balls in (word*~) main::$75 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$50
+Simplifying expression containing zero (word*)balls in (word*~) main::$77 ← (word*)(const struct $0*) balls+(const byte) OFFSET_STRUCT_$0_X_POSITION + (word~) main::$50
 Successful SSA optimization PassNSimplifyExpressionWithZero
 Eliminating unused variable (byte*~) ppuDataFill::ppuDataPrepare1_$2 and assignment [2] (byte*~) ppuDataFill::ppuDataPrepare1_$2 ← (const byte*) ppuDataFill::ppuDataPrepare1_$4 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR
 Eliminating unused variable (byte*~) ppuDataFill::ppuDataPrepare1_$3 and assignment [5] (byte*~) ppuDataFill::ppuDataPrepare1_$3 ← (const byte*) ppuDataFill::ppuDataPrepare1_$5 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR
@@ -1647,10 +1649,10 @@ Eliminating unused variable (byte*~) main::initNES1_waitForVBlank2_$2 and assign
 Eliminating unused variable (byte*~) main::enableVideoOutput1_$0 and assignment [69] (byte*~) main::enableVideoOutput1_$0 ← (const byte*) main::enableVideoOutput1_$2
 Eliminating unused variable (byte*~) main::enableVideoOutput1_$1 and assignment [71] (byte*~) main::enableVideoOutput1_$1 ← (const byte*) main::enableVideoOutput1_$3 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUMASK
 Eliminating unused variable (byte*~) main::$54 and assignment [73] (byte*~) main::$54 ← (const byte*) main::$55
-Eliminating unused variable (byte*~) vblank::$1 and assignment [171] (byte*~) vblank::$1 ← (const byte*) vblank::$3 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
-Eliminating unused variable (byte*~) vblank::$2 and assignment [173] (byte*~) vblank::$2 ← (const byte*) vblank::$4 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
-Eliminating unused variable (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$1 and assignment [175] (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$1 ← (const byte*) vblank::ppuSpriteBufferDmaTransfer1_$3 + (const byte) OFFSET_STRUCT_RICOH_2C02_OAMADDR
-Eliminating unused variable (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$2 and assignment [178] (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$2 ← (const byte*) vblank::ppuSpriteBufferDmaTransfer1_$4 + (const byte) OFFSET_STRUCT_RICOH_2A03_OAMDMA
+Eliminating unused variable (byte*~) vblank::$1 and assignment [173] (byte*~) vblank::$1 ← (const byte*) vblank::$3 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
+Eliminating unused variable (byte*~) vblank::$2 and assignment [175] (byte*~) vblank::$2 ← (const byte*) vblank::$4 + (const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
+Eliminating unused variable (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$1 and assignment [177] (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$1 ← (const byte*) vblank::ppuSpriteBufferDmaTransfer1_$3 + (const byte) OFFSET_STRUCT_RICOH_2C02_OAMADDR
+Eliminating unused variable (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$2 and assignment [180] (byte*~) vblank::ppuSpriteBufferDmaTransfer1_$2 ← (const byte*) vblank::ppuSpriteBufferDmaTransfer1_$4 + (const byte) OFFSET_STRUCT_RICOH_2A03_OAMDMA
 Eliminating unused constant (const word) main::i#0
 Eliminating unused constant (const byte) main::h_bar#0
 Eliminating unused constant (const byte) main::sprite_idx#0
@@ -1676,13 +1678,13 @@ Alias main::$50 = main::$46
 Alias main::$53 = main::$52 
 Successful SSA optimization Pass2AliasElimination
 Alias candidate removed (volatile)scroll_y = main::$14 
-Simple Condition (bool~) main::$24 [117] if((word~) main::$23>=(byte) main::h_bar#1) goto main::@26
-Simple Condition (bool~) main::$27 [157] if((word~) main::$25<(byte~) main::$26) goto main::@13
+Simple Condition (bool~) main::$24 [119] if((word~) main::$23>=(byte) main::h_bar#1) goto main::@26
+Simple Condition (bool~) main::$27 [159] if((word~) main::$25<(byte~) main::$26) goto main::@13
 Successful SSA optimization Pass2ConditionalJumpSimplification
-Negating conditional jump and destination [117] if((word~) main::$23<(byte) main::h_bar#1) goto main::@11
-Negating conditional jump and destination [157] if((word~) main::$25>=(byte~) main::$26) goto main::@11
+Negating conditional jump and destination [119] if((word~) main::$23<(byte) main::h_bar#1) goto main::@11
+Negating conditional jump and destination [159] if((word~) main::$25>=(byte~) main::$26) goto main::@11
 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
-Constant right-side identified [149] (byte~) vblank::ppuSpriteBufferDmaTransfer1_$0 ← > (const struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer#0
+Constant right-side identified [151] (byte~) vblank::ppuSpriteBufferDmaTransfer1_$0 ← > (const struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer#0
 Successful SSA optimization Pass2ConstantRValueConsolidation
 Constant (const byte) vblank::ppuSpriteBufferDmaTransfer1_$0 = >vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer#0
 Successful SSA optimization Pass2ConstantIdentification
@@ -1701,13 +1703,13 @@ Inlining Noop Cast [15] (byte*) ppuDataTransfer::cpuSrc#0 ← (byte*)(nomodify v
 Successful SSA optimization Pass2NopCastInlining
 Rewriting multiplication to use shift [67] (word~) main::$35 ← (word) main::i#14 * (const byte) SIZEOF_STRUCT_$0
 Rewriting multiplication to use shift [74] (word~) main::$36 ← (word) main::i#14 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [88] (byte~) main::$38 ← (byte) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [93] (word~) main::$40 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [109] (word~) main::$44 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [116] (word~) main::$45 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [120] (word~) main::$50 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
-Rewriting multiplication to use shift [123] (byte~) main::$48 ← (byte) main::sprite_idx#3 * (const byte) SIZEOF_STRUCT_SPRITEDATA
-Rewriting multiplication to use shift [132] (word~) main::$53 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [88] (word~) main::$38 ← (word) main::active_balls#1 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [95] (word~) main::$40 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [111] (word~) main::$44 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [118] (word~) main::$45 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [122] (word~) main::$50 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
+Rewriting multiplication to use shift [125] (byte~) main::$48 ← (byte) main::sprite_idx#3 * (const byte) SIZEOF_STRUCT_SPRITEDATA
+Rewriting multiplication to use shift [134] (word~) main::$53 ← (word) main::i#10 * (const byte) SIZEOF_STRUCT_$0
 Successful SSA optimization Pass2MultiplyToShiftRewriting
 Inlining constant with var siblings (const word) ppuDataFill::i#0
 Inlining constant with different constant siblings (const nomodify void*) ppuDataFill::ppuData#0
@@ -1724,7 +1726,7 @@ Inlining constant with var siblings (const word) ppuDataTransfer::size#1
 Inlining constant with different constant siblings (const nomodify void*) ppuDataTransfer::ppuData#1
 Inlining constant with var siblings (const nomodify void*) ppuDataTransfer::cpuData#1
 Inlining constant with var siblings (const byte) main::initNES1_i#0
-Inlining constant with var siblings (const byte) main::active_balls#0
+Inlining constant with var siblings (const word) main::active_balls#0
 Inlining constant with var siblings (const byte) main::timer#0
 Inlining constant with var siblings (const byte) main::timer_2#0
 Inlining constant with var siblings (const word) main::i#1
@@ -1734,7 +1736,7 @@ Inlining constant with var siblings (const byte) main::timer#2
 Inlining constant with var siblings (const word) rand_state#19
 Constant inlined OFFSET_STRUCT_$0_Y_POSITION = (byte) 2
 Constant inlined ppuDataTransfer::i#0 = (word) 0
-Constant inlined main::active_balls#0 = (byte) 0
+Constant inlined main::active_balls#0 = (word) 0
 Constant inlined OFFSET_STRUCT_$0_X_VELOCITY = (byte) 4
 Constant inlined main::enableVideoOutput1_$3 = (byte*)(const struct RICOH_2C02*) PPU
 Constant inlined main::enableVideoOutput1_$2 = (byte*)(const struct RICOH_2C02*) PPU
@@ -1801,10 +1803,10 @@ Identical Phi Values (byte) ppuDataFill::val#4 (byte) 0
 Identical Phi Values (word) ppuDataTransfer::size#3 (byte) $20*(const byte) SIZEOF_BYTE
 Successful SSA optimization Pass2IdenticalPhiElimination
 Identified duplicate assignment right side [73] (word~) main::$36 ← (word) main::i#14 << (byte) 3
-Identified duplicate assignment right side [108] (word~) main::$44 ← (word) main::i#10 << (byte) 3
-Identified duplicate assignment right side [115] (word~) main::$45 ← (word) main::i#10 << (byte) 3
-Identified duplicate assignment right side [119] (word~) main::$50 ← (word) main::i#10 << (byte) 3
-Identified duplicate assignment right side [131] (word~) main::$53 ← (word) main::i#10 << (byte) 3
+Identified duplicate assignment right side [110] (word~) main::$44 ← (word) main::i#10 << (byte) 3
+Identified duplicate assignment right side [117] (word~) main::$45 ← (word) main::i#10 << (byte) 3
+Identified duplicate assignment right side [121] (word~) main::$50 ← (word) main::i#10 << (byte) 3
+Identified duplicate assignment right side [133] (word~) main::$53 ← (word) main::i#10 << (byte) 3
 Successful SSA optimization Pass2DuplicateRValueIdentification
 Eliminating unused constant (const byte) SIZEOF_STRUCT_SPRITEDATA
 Successful SSA optimization PassNEliminateUnusedVars
@@ -1833,27 +1835,27 @@ Adding NOP phi() at start of ppuDataFill::@3
 Adding NOP phi() at start of ppuDataFill::@2
 CALL GRAPH
 Calls in [__start] to main:4 
-Calls in [main] to ppuDataTransfer:40 ppuDataFill:42 ppuDataFill:44 ppuDataTransfer:46 rand:127 rand:135 
+Calls in [main] to ppuDataTransfer:40 ppuDataFill:42 ppuDataFill:44 ppuDataTransfer:46 rand:129 rand:137 
 
 Created 18 initial phi equivalence classes
-Coalesced [65] main::active_balls#22 ← main::active_balls#1
-Coalesced [73] main::timer_2#20 ← main::timer_2#1
-Coalesced [74] main::active_balls#20 ← main::active_balls#8
-Coalesced [75] main::timer#20 ← main::timer#15
-Coalesced [120] main::i#16 ← main::i#4
-Coalesced [121] main::sprite_idx#9 ← main::sprite_idx#2
-Coalesced (already) [122] main::active_balls#21 ← main::active_balls#2
-Not coalescing [123] main::timer#21 ← main::timer#1
-Coalesced (already) [124] main::active_balls#23 ← main::active_balls#2
-Coalesced (already) [125] main::timer#22 ← main::timer#3
-Coalesced [126] rand_state#54 ← rand_state#17
-Coalesced [134] rand_state#55 ← rand_state#11
-Coalesced [142] main::i#15 ← main::i#2
-Coalesced (already) [143] rand_state#56 ← rand_state#11
-Coalesced [144] main::initNES1_i#3 ← main::initNES1_i#1
-Coalesced [158] ppuDataTransfer::i#6 ← ppuDataTransfer::i#1
-Coalesced [159] ppuDataTransfer::cpuSrc#7 ← ppuDataTransfer::cpuSrc#1
-Coalesced [172] ppuDataFill::i#6 ← ppuDataFill::i#1
+Coalesced [67] main::active_balls#22 ← main::active_balls#1
+Coalesced [75] main::timer_2#20 ← main::timer_2#1
+Coalesced [76] main::active_balls#20 ← main::active_balls#8
+Coalesced [77] main::timer#20 ← main::timer#15
+Coalesced [122] main::i#16 ← main::i#4
+Coalesced [123] main::sprite_idx#9 ← main::sprite_idx#2
+Coalesced (already) [124] main::active_balls#21 ← main::active_balls#2
+Not coalescing [125] main::timer#21 ← main::timer#1
+Coalesced (already) [126] main::active_balls#23 ← main::active_balls#2
+Coalesced (already) [127] main::timer#22 ← main::timer#3
+Coalesced [128] rand_state#54 ← rand_state#17
+Coalesced [136] rand_state#55 ← rand_state#11
+Coalesced [144] main::i#15 ← main::i#2
+Coalesced (already) [145] rand_state#56 ← rand_state#11
+Coalesced [146] main::initNES1_i#3 ← main::initNES1_i#1
+Coalesced [160] ppuDataTransfer::i#6 ← ppuDataTransfer::i#1
+Coalesced [161] ppuDataTransfer::cpuSrc#7 ← ppuDataTransfer::cpuSrc#1
+Coalesced [174] ppuDataFill::i#6 ← ppuDataFill::i#1
 Coalesced down to 16 phi equivalence classes
 Culled Empty Block (label) __start::@2
 Culled Empty Block (label) main::initNES1_@6
@@ -2007,7 +2009,7 @@ main::@1: scope:[main]  from main::@18 main::@23
   to:main::@3
 main::@3: scope:[main]  from main::@1 main::@14
   [50] (byte) main::timer#3 ← phi( main::@1/(byte) 0 main::@14/(byte) main::timer#15 )
-  [50] (byte) main::active_balls#2 ← phi( main::@1/(byte) 0 main::@14/(byte) main::active_balls#8 )
+  [50] (word) main::active_balls#2 ← phi( main::@1/(word) 0 main::@14/(word) main::active_balls#8 )
   [50] (byte) main::timer_2#2 ← phi( main::@1/(byte) 0 main::@14/(byte) main::timer_2#1 )
   to:main::@4
 main::@4: scope:[main]  from main::@3
@@ -2015,189 +2017,191 @@ main::@4: scope:[main]  from main::@3
   [52] (byte) main::h_bar#1 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (byte) $60
   [53] (byte~) main::$14 ← (byte) main::h_bar#1 ^ (byte) $ff
   [54] (volatile byte) scroll_y ← (byte~) main::$14
-  [55] if((byte) main::active_balls#2>=(byte) $32) goto main::@5
+  [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5
   to:main::@15
 main::@15: scope:[main]  from main::@4
   [56] (byte) main::timer#1 ← ++ (byte) main::timer#3
   [57] if((byte) main::timer#3!=(byte) 9) goto main::@25
   to:main::@16
 main::@16: scope:[main]  from main::@15
-  [58] (byte) main::active_balls#1 ← ++ (byte) main::active_balls#2
-  [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3
-  [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0
-  [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0
+  [58] (word) main::active_balls#1 ← ++ (word) main::active_balls#2
+  [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3
+  [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38
+  [61] *((word*~) main::$61) ← (byte) 0
+  [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38
+  [63] *((word*~) main::$62) ← (byte) 0
   to:main::@5
 main::@5: scope:[main]  from main::@16 main::@25 main::@4
-  [62] (byte) main::timer#15 ← phi( main::@25/(byte) main::timer#21 main::@16/(byte) 0 main::@4/(byte) main::timer#3 )
-  [62] (byte) main::active_balls#8 ← phi( main::@25/(byte) main::active_balls#2 main::@16/(byte) main::active_balls#1 main::@4/(byte) main::active_balls#2 )
+  [64] (byte) main::timer#15 ← phi( main::@25/(byte) main::timer#21 main::@16/(byte) 0 main::@4/(byte) main::timer#3 )
+  [64] (word) main::active_balls#8 ← phi( main::@25/(word) main::active_balls#2 main::@16/(word) main::active_balls#1 main::@4/(word) main::active_balls#2 )
   to:main::@6
 main::@6: scope:[main]  from main::@10 main::@5
-  [63] (byte) main::sprite_idx#3 ← phi( main::@10/(byte) main::sprite_idx#2 main::@5/(byte) 0 )
-  [63] (word) main::i#10 ← phi( main::@10/(word) main::i#4 main::@5/(byte) 0 )
-  [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7
+  [65] (byte) main::sprite_idx#3 ← phi( main::@10/(byte) main::sprite_idx#2 main::@5/(byte) 0 )
+  [65] (word) main::i#10 ← phi( main::@10/(word) main::i#4 main::@5/(byte) 0 )
+  [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7
   to:main::@8
 main::@8: scope:[main]  from main::@6
-  [65] *((byte*) 8193) ← (byte) $98
+  [67] *((byte*) 8193) ← (byte) $98
   to:main::@13
 main::@13: scope:[main]  from main::@13 main::@8
-  [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13
+  [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13
   to:main::@14
 main::@14: scope:[main]  from main::@13
-  [67] (volatile byte) vblank_hit ← (byte) 0
-  [68] *((byte*) 8193) ← (byte) $18
+  [69] (volatile byte) vblank_hit ← (byte) 0
+  [70] *((byte*) 8193) ← (byte) $18
   to:main::@3
 main::@7: scope:[main]  from main::@6
-  [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3
-  [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3
   [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62)
-  [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10
-  [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64)
+  [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10
   [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67)
-  [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8
-  [83] if((word~) main::$20>=(byte) 8) goto main::@9
+  [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69)
+  [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8
+  [85] if((word~) main::$20>=(byte) 8) goto main::@9
   to:main::@11
 main::@11: scope:[main]  from main::@7
-  [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
-  [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
-  [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff
+  [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44
+  [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff
   to:main::@9
 main::@9: scope:[main]  from main::@11 main::@7
-  [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8
-  [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8
-  [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8
-  [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10
+  [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8
+  [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8
+  [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8
+  [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10
   to:main::@24
 main::@24: scope:[main]  from main::@9
-  [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10
+  [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10
   to:main::@12
 main::@12: scope:[main]  from main::@24
-  [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
-  [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff
-  [97] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2
-  [98] (word~) main::$56 ← (word)(byte~) main::$30
-  [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8
-  [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [101] *((word*~) main::$78) ← (word~) main::$31
+  [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44
+  [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff
+  [99] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2
+  [100] (word~) main::$56 ← (word)(byte~) main::$30
+  [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8
+  [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [103] *((word*~) main::$80) ← (word~) main::$31
   to:main::@10
 main::@10: scope:[main]  from main::@12 main::@24 main::@9
-  [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
-  [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8
-  [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2
-  [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32
-  [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a
-  [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3
-  [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44
-  [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8
-  [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33
-  [111] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3
-  [112] (word) main::i#4 ← ++ (word) main::i#10
+  [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44
+  [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8
+  [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2
+  [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32
+  [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a
+  [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3
+  [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44
+  [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8
+  [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33
+  [113] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3
+  [114] (word) main::i#4 ← ++ (word) main::i#10
   to:main::@6
 main::@25: scope:[main]  from main::@15
-  [113] (byte) main::timer#21 ← (byte) main::timer#1
+  [115] (byte) main::timer#21 ← (byte) main::timer#1
   to:main::@5
 main::@2: scope:[main]  from main::@1
-  [114] phi()
-  [115] call rand 
-  [116] (word) rand::return#2 ← (word) rand::return#0
+  [116] phi()
+  [117] call rand 
+  [118] (word) rand::return#2 ← (word) rand::return#0
   to:main::@22
 main::@22: scope:[main]  from main::@2
-  [117] (word~) main::$9 ← (word) rand::return#2
-  [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff
-  [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3
-  [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36
-  [121] *((word*~) main::$59) ← (word~) main::$10
-  [122] call rand 
-  [123] (word) rand::return#3 ← (word) rand::return#0
+  [119] (word~) main::$9 ← (word) rand::return#2
+  [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff
+  [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3
+  [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36
+  [123] *((word*~) main::$59) ← (word~) main::$10
+  [124] call rand 
+  [125] (word) rand::return#3 ← (word) rand::return#0
   to:main::@23
 main::@23: scope:[main]  from main::@22
-  [124] (word~) main::$11 ← (word) rand::return#3
-  [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff
-  [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36
-  [127] *((word*~) main::$60) ← (byte~) main::$12
-  [128] (word) main::i#2 ← ++ (word) main::i#14
+  [126] (word~) main::$11 ← (word) rand::return#3
+  [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff
+  [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36
+  [129] *((word*~) main::$60) ← (byte~) main::$12
+  [130] (word) main::i#2 ← ++ (word) main::i#14
   to:main::@1
 
 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size)
 ppuDataTransfer: scope:[ppuDataTransfer]  from main::@17 main::@21
-  [129] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap )
-  [129] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 )
+  [131] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap )
+  [131] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 )
   to:ppuDataTransfer::ppuDataPrepare1
 ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer]  from ppuDataTransfer
-  [130] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
-  [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0
-  [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
-  [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1
+  [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
+  [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0
+  [134] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0
+  [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1
   to:ppuDataTransfer::@3
 ppuDataTransfer::@3: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPrepare1
-  [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
+  [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
   to:ppuDataTransfer::@1
 ppuDataTransfer::@1: scope:[ppuDataTransfer]  from ppuDataTransfer::@3 ppuDataTransfer::@4
-  [135] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 )
-  [135] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 )
-  [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2
+  [137] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 )
+  [137] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 )
+  [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2
   to:ppuDataTransfer::@return
 ppuDataTransfer::@return: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
-  [137] return 
+  [139] return 
   to:@return
 ppuDataTransfer::@2: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
-  [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2)
+  [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2)
   to:ppuDataTransfer::ppuDataPut1
 ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer]  from ppuDataTransfer::@2
-  [139] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0
+  [141] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0
   to:ppuDataTransfer::@4
 ppuDataTransfer::@4: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPut1
-  [140] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2
-  [141] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2
+  [142] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2
+  [143] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2
   to:ppuDataTransfer::@1
 
 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size)
 ppuDataFill: scope:[ppuDataFill]  from main::@19 main::@20
-  [142] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 )
-  [142] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 )
+  [144] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 )
+  [144] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 )
   to:ppuDataFill::ppuDataPrepare1
 ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill]  from ppuDataFill
-  [143] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
-  [144] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0
-  [145] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
-  [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1
+  [145] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
+  [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0
+  [147] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0
+  [148] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1
   to:ppuDataFill::@1
 ppuDataFill::@1: scope:[ppuDataFill]  from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1
-  [147] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 )
-  [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1
+  [149] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 )
+  [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1
   to:ppuDataFill::@return
 ppuDataFill::@return: scope:[ppuDataFill]  from ppuDataFill::@1
-  [149] return 
+  [151] return 
   to:@return
 ppuDataFill::ppuDataPut1: scope:[ppuDataFill]  from ppuDataFill::@1
-  [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0
+  [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0
   to:ppuDataFill::@2
 ppuDataFill::@2: scope:[ppuDataFill]  from ppuDataFill::ppuDataPut1
-  [151] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2
+  [153] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2
   to:ppuDataFill::@1
 
 (word()) rand()
 rand: scope:[rand]  from main::@2 main::@22
-  [152] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 )
-  [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7
-  [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0
-  [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9
-  [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1
-  [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8
-  [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2
-  [159] (word) rand::return#0 ← (word) rand_state#11
+  [154] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 )
+  [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7
+  [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0
+  [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9
+  [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1
+  [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8
+  [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2
+  [161] (word) rand::return#0 ← (word) rand_state#11
   to:rand::@return
 rand::@return: scope:[rand]  from rand
-  [160] return 
+  [162] return 
   to:@return
 
 
@@ -2257,37 +2261,39 @@ VARIABLE REGISTER WEIGHTS
 (word~) main::$32 500.5
 (word~) main::$33 1001.0
 (word~) main::$36 43.285714285714285
-(byte~) main::$38 151.5
+(word~) main::$38 101.0
 (word~) main::$44 487.6666666666668
 (byte~) main::$48 834.1666666666667
 (word~) main::$56 2002.0
 (word*~) main::$59 202.0
 (word*~) main::$60 202.0
-(word*~) main::$61 667.3333333333334
-(word*~) main::$62 1001.0
-(word*~) main::$63 2002.0
+(word*~) main::$61 202.0
+(word*~) main::$62 202.0
+(word*~) main::$63 667.3333333333334
 (word*~) main::$64 1001.0
 (word*~) main::$65 2002.0
-(word*~) main::$66 667.3333333333334
-(word*~) main::$67 1001.0
-(word*~) main::$68 2002.0
-(word*~) main::$69 2002.0
+(word*~) main::$66 1001.0
+(word*~) main::$67 2002.0
+(word*~) main::$68 667.3333333333334
+(word*~) main::$69 1001.0
 (word*~) main::$70 2002.0
 (word*~) main::$71 2002.0
-(word*~) main::$72 1001.0
+(word*~) main::$72 2002.0
 (word*~) main::$73 2002.0
-(word*~) main::$74 2002.0
+(word*~) main::$74 1001.0
 (word*~) main::$75 2002.0
-(word*~) main::$76 1001.0
+(word*~) main::$76 2002.0
 (word*~) main::$77 2002.0
-(word*~) main::$78 2002.0
+(word*~) main::$78 1001.0
+(word*~) main::$79 2002.0
+(word*~) main::$80 2002.0
 (word~) main::$9 202.0
-(byte) main::active_balls
-(byte) main::active_balls#1 75.75
-(byte) main::active_balls#2 56.11111111111111
-(byte) main::active_balls#8 27.54901960784314
+(word) main::active_balls
+(word) main::active_balls#1 50.5
+(word) main::active_balls#2 56.11111111111111
+(word) main::active_balls#8 27.54901960784314
 (byte) main::h_bar
-(byte) main::h_bar#1 55.258620689655174
+(byte) main::h_bar#1 53.41666666666667
 (word) main::i
 (word) main::i#10 88.97777777777777
 (word) main::i#14 25.25
@@ -2308,7 +2314,7 @@ VARIABLE REGISTER WEIGHTS
 (byte) main::timer#21 202.0
 (byte) main::timer#3 57.714285714285715
 (byte) main::timer_2
-(byte) main::timer_2#1 4.80952380952381
+(byte) main::timer_2#1 4.661538461538462
 (byte) main::timer_2#2 202.0
 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size)
 (word) ppuDataFill::i
@@ -2367,7 +2373,7 @@ VARIABLE REGISTER WEIGHTS
 (volatile byte) scroll_y loadstore 105.0
 interrupt(HARDWARE_STACK)(void()) vblank()
 (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer
-(volatile byte) vblank_hit loadstore 9.008130081300813
+(volatile byte) vblank_hit loadstore 8.863999999999999
 
 Initial phi equivalence classes
 [ main::initNES1_i#2 main::initNES1_i#1 ]
@@ -2393,9 +2399,9 @@ Added variable main::h_bar#1 to live range equivalence class [ main::h_bar#1 ]
 Added variable main::$14 to live range equivalence class [ main::$14 ]
 Added variable main::timer#1 to live range equivalence class [ main::timer#1 ]
 Added variable main::$38 to live range equivalence class [ main::$38 ]
-Added variable main::$44 to live range equivalence class [ main::$44 ]
 Added variable main::$61 to live range equivalence class [ main::$61 ]
 Added variable main::$62 to live range equivalence class [ main::$62 ]
+Added variable main::$44 to live range equivalence class [ main::$44 ]
 Added variable main::$63 to live range equivalence class [ main::$63 ]
 Added variable main::$64 to live range equivalence class [ main::$64 ]
 Added variable main::$65 to live range equivalence class [ main::$65 ]
@@ -2403,24 +2409,26 @@ Added variable main::$66 to live range equivalence class [ main::$66 ]
 Added variable main::$67 to live range equivalence class [ main::$67 ]
 Added variable main::$68 to live range equivalence class [ main::$68 ]
 Added variable main::$69 to live range equivalence class [ main::$69 ]
-Added variable main::$20 to live range equivalence class [ main::$20 ]
-Added variable main::$72 to live range equivalence class [ main::$72 ]
-Added variable main::$73 to live range equivalence class [ main::$73 ]
 Added variable main::$70 to live range equivalence class [ main::$70 ]
-Added variable main::$23 to live range equivalence class [ main::$23 ]
 Added variable main::$71 to live range equivalence class [ main::$71 ]
+Added variable main::$20 to live range equivalence class [ main::$20 ]
+Added variable main::$74 to live range equivalence class [ main::$74 ]
+Added variable main::$75 to live range equivalence class [ main::$75 ]
+Added variable main::$72 to live range equivalence class [ main::$72 ]
+Added variable main::$23 to live range equivalence class [ main::$23 ]
+Added variable main::$73 to live range equivalence class [ main::$73 ]
 Added variable main::$25 to live range equivalence class [ main::$25 ]
 Added variable main::$26 to live range equivalence class [ main::$26 ]
-Added variable main::$76 to live range equivalence class [ main::$76 ]
-Added variable main::$77 to live range equivalence class [ main::$77 ]
+Added variable main::$78 to live range equivalence class [ main::$78 ]
+Added variable main::$79 to live range equivalence class [ main::$79 ]
 Added variable main::$30 to live range equivalence class [ main::$30 ]
 Added variable main::$56 to live range equivalence class [ main::$56 ]
 Added variable main::$31 to live range equivalence class [ main::$31 ]
-Added variable main::$78 to live range equivalence class [ main::$78 ]
-Added variable main::$74 to live range equivalence class [ main::$74 ]
+Added variable main::$80 to live range equivalence class [ main::$80 ]
+Added variable main::$76 to live range equivalence class [ main::$76 ]
 Added variable main::$32 to live range equivalence class [ main::$32 ]
 Added variable main::$48 to live range equivalence class [ main::$48 ]
-Added variable main::$75 to live range equivalence class [ main::$75 ]
+Added variable main::$77 to live range equivalence class [ main::$77 ]
 Added variable main::$33 to live range equivalence class [ main::$33 ]
 Added variable rand::return#2 to live range equivalence class [ rand::return#2 ]
 Added variable main::$9 to live range equivalence class [ main::$9 ]
@@ -2466,9 +2474,9 @@ Complete equivalence classes
 [ main::$14 ]
 [ main::timer#1 ]
 [ main::$38 ]
-[ main::$44 ]
 [ main::$61 ]
 [ main::$62 ]
+[ main::$44 ]
 [ main::$63 ]
 [ main::$64 ]
 [ main::$65 ]
@@ -2476,24 +2484,26 @@ Complete equivalence classes
 [ main::$67 ]
 [ main::$68 ]
 [ main::$69 ]
-[ main::$20 ]
-[ main::$72 ]
-[ main::$73 ]
 [ main::$70 ]
-[ main::$23 ]
 [ main::$71 ]
+[ main::$20 ]
+[ main::$74 ]
+[ main::$75 ]
+[ main::$72 ]
+[ main::$23 ]
+[ main::$73 ]
 [ main::$25 ]
 [ main::$26 ]
-[ main::$76 ]
-[ main::$77 ]
+[ main::$78 ]
+[ main::$79 ]
 [ main::$30 ]
 [ main::$56 ]
 [ main::$31 ]
-[ main::$78 ]
-[ main::$74 ]
+[ main::$80 ]
+[ main::$76 ]
 [ main::$32 ]
 [ main::$48 ]
-[ main::$75 ]
+[ main::$77 ]
 [ main::$33 ]
 [ rand::return#2 ]
 [ main::$9 ]
@@ -2518,89 +2528,81 @@ Complete equivalence classes
 Allocated zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ]
 Allocated zp[2]:3 [ main::i#14 main::i#2 ]
 Allocated zp[1]:5 [ main::timer_2#2 main::timer_2#1 ]
-Allocated zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-Allocated zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
-Allocated zp[2]:8 [ main::i#10 main::i#4 ]
-Allocated zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
-Allocated zp[2]:11 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
-Allocated zp[2]:13 [ ppuDataTransfer::cpuData#2 ]
-Allocated zp[2]:15 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
-Allocated zp[2]:17 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
-Allocated zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ]
-Allocated zp[2]:21 [ ppuDataFill::size#3 ]
-Allocated zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ]
-Allocated zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 ]
-Allocated zp[1]:27 [ scroll_y ]
-Allocated zp[1]:28 [ vblank_hit ]
-Allocated zp[1]:29 [ main::initNES1_waitForVBlank1_$0 ]
-Allocated zp[1]:30 [ main::initNES1_waitForVBlank2_$0 ]
-Allocated zp[1]:31 [ main::h_bar#1 ]
-Allocated zp[1]:32 [ main::$14 ]
-Allocated zp[1]:33 [ main::timer#1 ]
-Allocated zp[1]:34 [ main::$38 ]
-Allocated zp[2]:35 [ main::$44 ]
+Allocated zp[2]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
+Allocated zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ]
+Allocated zp[2]:9 [ main::i#10 main::i#4 ]
+Allocated zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ]
+Allocated zp[2]:12 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
+Allocated zp[2]:14 [ ppuDataTransfer::cpuData#2 ]
+Allocated zp[2]:16 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
+Allocated zp[2]:18 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
+Allocated zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ]
+Allocated zp[2]:22 [ ppuDataFill::size#3 ]
+Allocated zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ]
+Allocated zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 ]
+Allocated zp[1]:28 [ scroll_y ]
+Allocated zp[1]:29 [ vblank_hit ]
+Allocated zp[1]:30 [ main::initNES1_waitForVBlank1_$0 ]
+Allocated zp[1]:31 [ main::initNES1_waitForVBlank2_$0 ]
+Allocated zp[1]:32 [ main::h_bar#1 ]
+Allocated zp[1]:33 [ main::$14 ]
+Allocated zp[1]:34 [ main::timer#1 ]
+Allocated zp[2]:35 [ main::$38 ]
 Allocated zp[2]:37 [ main::$61 ]
 Allocated zp[2]:39 [ main::$62 ]
-Allocated zp[2]:41 [ main::$63 ]
-Allocated zp[2]:43 [ main::$64 ]
-Allocated zp[2]:45 [ main::$65 ]
-Allocated zp[2]:47 [ main::$66 ]
-Allocated zp[2]:49 [ main::$67 ]
-Allocated zp[2]:51 [ main::$68 ]
-Allocated zp[2]:53 [ main::$69 ]
-Allocated zp[2]:55 [ main::$20 ]
-Allocated zp[2]:57 [ main::$72 ]
-Allocated zp[2]:59 [ main::$73 ]
-Allocated zp[2]:61 [ main::$70 ]
-Allocated zp[2]:63 [ main::$23 ]
-Allocated zp[2]:65 [ main::$71 ]
-Allocated zp[2]:67 [ main::$25 ]
-Allocated zp[1]:69 [ main::$26 ]
-Allocated zp[2]:70 [ main::$76 ]
-Allocated zp[2]:72 [ main::$77 ]
-Allocated zp[1]:74 [ main::$30 ]
-Allocated zp[2]:75 [ main::$56 ]
-Allocated zp[2]:77 [ main::$31 ]
-Allocated zp[2]:79 [ main::$78 ]
-Allocated zp[2]:81 [ main::$74 ]
-Allocated zp[2]:83 [ main::$32 ]
-Allocated zp[1]:85 [ main::$48 ]
-Allocated zp[2]:86 [ main::$75 ]
-Allocated zp[2]:88 [ main::$33 ]
-Allocated zp[2]:90 [ rand::return#2 ]
-Allocated zp[2]:92 [ main::$9 ]
-Allocated zp[2]:94 [ main::$10 ]
-Allocated zp[2]:96 [ main::$36 ]
-Allocated zp[2]:98 [ main::$59 ]
-Allocated zp[2]:100 [ rand::return#3 ]
-Allocated zp[2]:102 [ main::$11 ]
-Allocated zp[1]:104 [ main::$12 ]
-Allocated zp[2]:105 [ main::$60 ]
-Allocated zp[1]:107 [ ppuDataTransfer::ppuDataPrepare1_$0 ]
-Allocated zp[1]:108 [ ppuDataTransfer::ppuDataPrepare1_$1 ]
-Allocated zp[1]:109 [ ppuDataTransfer::ppuDataPut1_val#0 ]
-Allocated zp[1]:110 [ ppuDataFill::ppuDataPrepare1_$0 ]
-Allocated zp[1]:111 [ ppuDataFill::ppuDataPrepare1_$1 ]
-Allocated zp[2]:112 [ rand::$0 ]
-Allocated zp[2]:114 [ rand_state#0 ]
-Allocated zp[2]:116 [ rand::$1 ]
-Allocated zp[2]:118 [ rand_state#1 ]
-Allocated zp[2]:120 [ rand::$2 ]
-Allocated zp[2]:122 [ rand::return#0 ]
+Allocated zp[2]:41 [ main::$44 ]
+Allocated zp[2]:43 [ main::$63 ]
+Allocated zp[2]:45 [ main::$64 ]
+Allocated zp[2]:47 [ main::$65 ]
+Allocated zp[2]:49 [ main::$66 ]
+Allocated zp[2]:51 [ main::$67 ]
+Allocated zp[2]:53 [ main::$68 ]
+Allocated zp[2]:55 [ main::$69 ]
+Allocated zp[2]:57 [ main::$70 ]
+Allocated zp[2]:59 [ main::$71 ]
+Allocated zp[2]:61 [ main::$20 ]
+Allocated zp[2]:63 [ main::$74 ]
+Allocated zp[2]:65 [ main::$75 ]
+Allocated zp[2]:67 [ main::$72 ]
+Allocated zp[2]:69 [ main::$23 ]
+Allocated zp[2]:71 [ main::$73 ]
+Allocated zp[2]:73 [ main::$25 ]
+Allocated zp[1]:75 [ main::$26 ]
+Allocated zp[2]:76 [ main::$78 ]
+Allocated zp[2]:78 [ main::$79 ]
+Allocated zp[1]:80 [ main::$30 ]
+Allocated zp[2]:81 [ main::$56 ]
+Allocated zp[2]:83 [ main::$31 ]
+Allocated zp[2]:85 [ main::$80 ]
+Allocated zp[2]:87 [ main::$76 ]
+Allocated zp[2]:89 [ main::$32 ]
+Allocated zp[1]:91 [ main::$48 ]
+Allocated zp[2]:92 [ main::$77 ]
+Allocated zp[2]:94 [ main::$33 ]
+Allocated zp[2]:96 [ rand::return#2 ]
+Allocated zp[2]:98 [ main::$9 ]
+Allocated zp[2]:100 [ main::$10 ]
+Allocated zp[2]:102 [ main::$36 ]
+Allocated zp[2]:104 [ main::$59 ]
+Allocated zp[2]:106 [ rand::return#3 ]
+Allocated zp[2]:108 [ main::$11 ]
+Allocated zp[1]:110 [ main::$12 ]
+Allocated zp[2]:111 [ main::$60 ]
+Allocated zp[1]:113 [ ppuDataTransfer::ppuDataPrepare1_$0 ]
+Allocated zp[1]:114 [ ppuDataTransfer::ppuDataPrepare1_$1 ]
+Allocated zp[1]:115 [ ppuDataTransfer::ppuDataPut1_val#0 ]
+Allocated zp[1]:116 [ ppuDataFill::ppuDataPrepare1_$0 ]
+Allocated zp[1]:117 [ ppuDataFill::ppuDataPrepare1_$1 ]
+Allocated zp[2]:118 [ rand::$0 ]
+Allocated zp[2]:120 [ rand_state#0 ]
+Allocated zp[2]:122 [ rand::$1 ]
+Allocated zp[2]:124 [ rand_state#1 ]
+Allocated zp[2]:126 [ rand::$2 ]
+Allocated zp[2]:128 [ rand::return#0 ]
 
 INITIAL ASM
 Target platform is nes / MOS6502X
   // File Comments
-//#pragma emulator("java -jar /Applications/Nintaco_bin_2020-05-01/Nintaco.jar")
-// Nintendo Entertainment System (NES
-// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
-// https://github.com/gregkrsak/first_nes
-// Ricoh 2C02 - NES Picture Processing Unit (PPU)
-// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
-// https://en.wikipedia.org/wiki/Picture_Processing_Unit
-// https://wiki.nesdev.com/w/index.php/PPU_registers
-// http://nesdev.com/2C02%20technical%20reference.TXT
-// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018. 
   // Upstart
   // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
 // https://sadistech.com/nesromtool/romdoc.html
@@ -2671,14 +2673,14 @@ Target platform is nes / MOS6502X
   .label PPU = $2000
   // NES CPU and audion processing unit (APU)
   .label APU = $4000
-  .label scroll_y = $1b
-  .label vblank_hit = $1c
+  .label scroll_y = $1c
+  .label vblank_hit = $1d
   // The random state variable
-  .label rand_state = $72
+  .label rand_state = $78
   // The random state variable
-  .label rand_state_1 = $76
+  .label rand_state_1 = $7c
   // The random state variable
-  .label rand_state_2 = $19
+  .label rand_state_2 = $1a
 .segment Code
   // __start
 __start: {
@@ -2749,55 +2751,57 @@ vblank: {
 }
   // main
 main: {
-    .label __9 = $5c
-    .label __10 = $5e
-    .label __11 = $66
-    .label __12 = $68
-    .label __14 = $20
-    .label __20 = $37
-    .label __23 = $3f
-    .label __25 = $43
-    .label __26 = $45
-    .label __30 = $4a
-    .label __31 = $4d
-    .label __32 = $53
-    .label __33 = $58
-    .label __36 = $60
-    .label __38 = $22
-    .label __44 = $23
-    .label __48 = $55
-    .label __56 = $4b
-    .label initNES1_waitForVBlank1___0 = $1d
-    .label initNES1_waitForVBlank2___0 = $1e
+    .label __9 = $62
+    .label __10 = $64
+    .label __11 = $6c
+    .label __12 = $6e
+    .label __14 = $21
+    .label __20 = $3d
+    .label __23 = $45
+    .label __25 = $49
+    .label __26 = $4b
+    .label __30 = $50
+    .label __31 = $53
+    .label __32 = $59
+    .label __33 = $5e
+    .label __36 = $66
+    .label __38 = $23
+    .label __44 = $29
+    .label __48 = $5b
+    .label __56 = $51
+    .label initNES1_waitForVBlank1___0 = $1e
+    .label initNES1_waitForVBlank2___0 = $1f
     .label initNES1_i = 2
     .label i = 3
     .label timer_2 = 5
-    .label h_bar = $1f
-    .label timer = $21
+    .label h_bar = $20
+    .label timer = $22
     .label active_balls = 6
-    .label sprite_idx = $a
-    .label i_1 = 8
-    .label timer_1 = 7
-    .label __59 = $62
-    .label __60 = $69
+    .label sprite_idx = $b
+    .label i_1 = 9
+    .label timer_1 = 8
+    .label __59 = $68
+    .label __60 = $6f
     .label __61 = $25
     .label __62 = $27
-    .label __63 = $29
-    .label __64 = $2b
-    .label __65 = $2d
-    .label __66 = $2f
-    .label __67 = $31
-    .label __68 = $33
-    .label __69 = $35
-    .label __70 = $3d
-    .label __71 = $41
-    .label __72 = $39
-    .label __73 = $3b
-    .label __74 = $51
-    .label __75 = $56
-    .label __76 = $46
-    .label __77 = $48
-    .label __78 = $4f
+    .label __63 = $2b
+    .label __64 = $2d
+    .label __65 = $2f
+    .label __66 = $31
+    .label __67 = $33
+    .label __68 = $35
+    .label __69 = $37
+    .label __70 = $39
+    .label __71 = $3b
+    .label __72 = $43
+    .label __73 = $47
+    .label __74 = $3f
+    .label __75 = $41
+    .label __76 = $57
+    .label __77 = $5c
+    .label __78 = $4c
+    .label __79 = $4e
+    .label __80 = $55
     jmp initNES1
     // main::initNES1
   initNES1:
@@ -2922,14 +2926,14 @@ main: {
   __b17:
     // [38] call ppuDataTransfer 
   // Transfer the palette
-    // [129] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
+    // [131] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
   ppuDataTransfer_from___b17:
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<palette
     sta.z ppuDataTransfer.cpuData
     lda #>palette
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<PPU_PALETTE
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>PPU_PALETTE
@@ -2942,14 +2946,14 @@ main: {
   __b19:
     // [40] call ppuDataFill 
   // Fill the PPU attribute table
-    // [142] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
+    // [144] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
   ppuDataFill_from___b19:
-    // [142] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
+    // [144] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
     lda #<$20*$1e
     sta.z ppuDataFill.size
     lda #>$20*$1e
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_NAME_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_NAME_TABLE_0
@@ -2961,14 +2965,14 @@ main: {
     // main::@20
   __b20:
     // [42] call ppuDataFill 
-    // [142] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
+    // [144] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
   ppuDataFill_from___b20:
-    // [142] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
+    // [144] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
     lda #<$40
     sta.z ppuDataFill.size
     lda #>$40
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_ATTRIBUTE_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_ATTRIBUTE_TABLE_0
@@ -2980,14 +2984,14 @@ main: {
     // main::@21
   __b21:
     // [44] call ppuDataTransfer 
-    // [129] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
+    // [131] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
   ppuDataTransfer_from___b21:
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<h_bar_tilemap
     sta.z ppuDataTransfer.cpuData
     lda #>h_bar_tilemap
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<$2040
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>$2040
@@ -3036,9 +3040,11 @@ main: {
     // [50] phi (byte) main::timer#3 = (byte) 0 [phi:main::@1->main::@3#0] -- vbuz1=vbuc1 
     lda #0
     sta.z timer_1
-    // [50] phi (byte) main::active_balls#2 = (byte) 0 [phi:main::@1->main::@3#1] -- vbuz1=vbuc1 
-    lda #0
+    // [50] phi (word) main::active_balls#2 = (word) 0 [phi:main::@1->main::@3#1] -- vwuz1=vwuc1 
+    lda #<0
     sta.z active_balls
+    lda #>0
+    sta.z active_balls+1
     // [50] phi (byte) main::timer_2#2 = (byte) 0 [phi:main::@1->main::@3#2] -- vbuz1=vbuc1 
     lda #0
     sta.z timer_2
@@ -3063,10 +3069,13 @@ main: {
     // [54] (volatile byte) scroll_y ← (byte~) main::$14 -- vbuz1=vbuz2 
     lda.z __14
     sta.z scroll_y
-    // [55] if((byte) main::active_balls#2>=(byte) $32) goto main::@5 -- vbuz1_ge_vbuc1_then_la1 
+    // [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5 -- vwuz1_ge_vbuc1_then_la1 
+    lda.z active_balls+1
+    bne __b5_from___b4
     lda.z active_balls
     cmp #$32
     bcs __b5_from___b4
+  !:
     jmp __b15
     // main::@15
   __b15:
@@ -3081,47 +3090,73 @@ main: {
     jmp __b16
     // main::@16
   __b16:
-    // [58] (byte) main::active_balls#1 ← ++ (byte) main::active_balls#2 -- vbuz1=_inc_vbuz1 
+    // [58] (word) main::active_balls#1 ← ++ (word) main::active_balls#2 -- vwuz1=_inc_vwuz1 
     inc.z active_balls
-    // [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3 -- vbuz1=vbuz2_rol_3 
+    bne !+
+    inc.z active_balls+1
+  !:
+    // [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z active_balls
     asl
-    asl
-    asl
     sta.z __38
-    // [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 
+    lda.z active_balls+1
+    rol
+    sta.z __38+1
+    asl.z __38
+    rol.z __38+1
+    asl.z __38
+    rol.z __38+1
+    // [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __38
+    clc
+    adc #<balls
+    sta.z __61
+    lda.z __38+1
+    adc #>balls
+    sta.z __61+1
+    // [61] *((word*~) main::$61) ← (byte) 0 -- _deref_pwuz1=vbuc1 
     lda #0
-    ldy.z __38
-    sta balls,y
+    ldy #0
+    sta (__61),y
+    tya
+    iny
+    sta (__61),y
+    // [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __38
+    clc
+    adc #<balls+2
+    sta.z __62
+    lda.z __38+1
+    adc #>balls+2
+    sta.z __62+1
+    // [63] *((word*~) main::$62) ← (byte) 0 -- _deref_pwuz1=vbuc1 
     lda #0
-    sta balls+1,y
-    // [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 
-    lda #0
-    ldy.z __38
-    sta balls+2,y
-    lda #0
-    sta balls+2+1,y
-    // [62] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
+    ldy #0
+    sta (__62),y
+    tya
+    iny
+    sta (__62),y
+    // [64] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
   __b5_from___b16:
-    // [62] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
+    // [64] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
     lda #0
     sta.z timer_1
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
     jmp __b5
-    // [62] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
+    // [64] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
   __b5_from___b25:
   __b5_from___b4:
-    // [62] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
+    // [64] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
     jmp __b5
     // main::@5
   __b5:
-    // [63] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
+    // [65] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
   __b6_from___b5:
-    // [63] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
+    // [65] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
     lda #0
     sta.z sprite_idx
-    // [63] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
+    // [65] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
     lda #<0
     sta.z i_1
     lda #>0
@@ -3129,8 +3164,10 @@ main: {
     jmp __b6
     // main::@6
   __b6:
-    // [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7 -- vwuz1_lt_vbuz2_then_la1 
+    // [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i_1+1
+    cmp.z active_balls+1
+    bcc __b7
     bne !+
     lda.z i_1
     cmp.z active_balls
@@ -3139,35 +3176,35 @@ main: {
     jmp __b8
     // main::@8
   __b8:
-    // [65] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
+    // [67] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
     lda #$98
     sta $2001
     jmp __b13
     // main::@13
   __b13:
-    // [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
+    // [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
     lda #0
     cmp.z vblank_hit
     beq __b13
     jmp __b14
     // main::@14
   __b14:
-    // [67] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
+    // [69] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
     // wait for vblank
     lda #0
     sta.z vblank_hit
-    // [68] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
+    // [70] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
     lda #$18
     sta $2001
     // [50] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
   __b3_from___b14:
     // [50] phi (byte) main::timer#3 = (byte) main::timer#15 [phi:main::@14->main::@3#0] -- register_copy 
-    // [50] phi (byte) main::active_balls#2 = (byte) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
+    // [50] phi (word) main::active_balls#2 = (word) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
     // [50] phi (byte) main::timer_2#2 = (byte) main::timer_2#1 [phi:main::@14->main::@3#2] -- register_copy 
     jmp __b3
     // main::@7
   __b7:
-    // [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i_1
     asl
     sta.z __44
@@ -3178,22 +3215,6 @@ main: {
     rol.z __44+1
     asl.z __44
     rol.z __44+1
-    // [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls
-    sta.z __61
-    lda.z __44+1
-    adc #>balls
-    sta.z __61+1
-    // [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+4
-    sta.z __62
-    lda.z __44+1
-    adc #>balls+4
-    sta.z __62+1
     // [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -3202,51 +3223,41 @@ main: {
     lda.z __44+1
     adc #>balls
     sta.z __63+1
-    // [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__61),y
-    clc
-    adc (__62),y
-    sta (__63),y
-    iny
-    lda (__61),y
-    adc (__62),y
-    sta (__63),y
-    // [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
-    adc #<balls+6
+    adc #<balls+4
     sta.z __64
     lda.z __44+1
-    adc #>balls+6
+    adc #>balls+4
     sta.z __64+1
-    // [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls
+    sta.z __65
+    lda.z __44+1
+    adc #>balls
+    sta.z __65+1
+    // [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__63),y
+    clc
+    adc (__64),y
+    sta (__65),y
+    iny
+    lda (__63),y
+    adc (__64),y
+    sta (__65),y
+    // [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __65
-    lda.z __44+1
-    adc #>balls+6
-    sta.z __65+1
-    // [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
-    ldy #0
-    lda (__64),y
-    clc
-    adc #<$10
-    sta (__65),y
-    iny
-    lda (__64),y
-    adc #>$10
-    sta (__65),y
-    // [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+2
     sta.z __66
     lda.z __44+1
-    adc #>balls+2
+    adc #>balls+6
     sta.z __66+1
-    // [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
@@ -3254,6 +3265,16 @@ main: {
     lda.z __44+1
     adc #>balls+6
     sta.z __67+1
+    // [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
+    ldy #0
+    lda (__66),y
+    clc
+    adc #<$10
+    sta (__67),y
+    iny
+    lda (__66),y
+    adc #>$10
+    sta (__67),y
     // [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -3262,31 +3283,47 @@ main: {
     lda.z __44+1
     adc #>balls+2
     sta.z __68+1
-    // [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__66),y
+    // [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
     clc
-    adc (__67),y
-    sta (__68),y
+    adc #<balls+6
+    sta.z __69
+    lda.z __44+1
+    adc #>balls+6
+    sta.z __69+1
+    // [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls+2
+    sta.z __70
+    lda.z __44+1
+    adc #>balls+2
+    sta.z __70+1
+    // [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__68),y
+    clc
+    adc (__69),y
+    sta (__70),y
     iny
-    lda (__66),y
-    adc (__67),y
-    sta (__68),y
-    // [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda (__68),y
+    adc (__69),y
+    sta (__70),y
+    // [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls
-    sta.z __69
+    sta.z __71
     lda.z __44+1
     adc #>balls
-    sta.z __69+1
-    // [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
+    sta.z __71+1
+    // [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
     ldy #1
-    lda (__69),y
+    lda (__71),y
     sta.z __20
     lda #0
     sta.z __20+1
-    // [83] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
+    // [85] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
     lda.z __20+1
     bne __b9
     lda.z __20
@@ -3296,67 +3333,67 @@ main: {
     jmp __b11
     // main::@11
   __b11:
-    // [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __72
+    sta.z __74
     lda.z __44+1
     adc #>balls+4
-    sta.z __72+1
-    // [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __74+1
+    // [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __73
+    sta.z __75
     lda.z __44+1
     adc #>balls+4
-    sta.z __73+1
-    // [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __75+1
+    // [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     iny
     lda #>$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     jmp __b9
     // main::@9
   __b9:
-    // [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __70
+    sta.z __72
     lda.z __44+1
     adc #>balls+2
-    sta.z __70+1
-    // [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
+    sta.z __72+1
+    // [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
     ldy #1
-    lda (__70),y
+    lda (__72),y
     sta.z __23
     lda #0
     sta.z __23+1
-    // [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __71
+    sta.z __73
     lda.z __44+1
     adc #>balls+2
-    sta.z __71+1
-    // [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
+    sta.z __73+1
+    // [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
     ldy #1
-    lda (__71),y
+    lda (__73),y
     sta.z __25
     lda #0
     sta.z __25+1
-    // [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
+    // [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
     lax.z h_bar
     axs #-[8]
     stx.z __26
-    // [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
+    // [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
     lda.z __23+1
     bne !+
     lda.z __23
@@ -3366,7 +3403,7 @@ main: {
     jmp __b24
     // main::@24
   __b24:
-    // [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
+    // [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
     lda.z __25+1
     bne __b10
     lda.z __25
@@ -3376,142 +3413,142 @@ main: {
     jmp __b12
     // main::@12
   __b12:
-    // [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __76
+    sta.z __78
     lda.z __44+1
     adc #>balls+6
-    sta.z __76+1
-    // [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __78+1
+    // [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __77
+    sta.z __79
     lda.z __44+1
     adc #>balls+6
-    sta.z __77+1
-    // [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __79+1
+    // [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     iny
     lda #>$ffff
-    eor (__76),y
-    sta (__77),y
-    // [97] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuz1=vbuz2_minus_2 
+    eor (__78),y
+    sta (__79),y
+    // [99] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuz1=vbuz2_minus_2 
     lda.z h_bar
     sec
     sbc #2
     sta.z __30
-    // [98] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuz2 
+    // [100] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuz2 
     lda.z __30
     sta.z __56
     lda #0
     sta.z __56+1
-    // [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz2_rol_8 
+    // [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz2_rol_8 
     lda.z __56
     sta.z __31+1
     lda #0
     sta.z __31
-    // [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __78
+    sta.z __80
     lda.z __44+1
     adc #>balls+2
-    sta.z __78+1
-    // [101] *((word*~) main::$78) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
+    sta.z __80+1
+    // [103] *((word*~) main::$80) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __31
-    sta (__78),y
+    sta (__80),y
     iny
     lda.z __31+1
-    sta (__78),y
+    sta (__80),y
     jmp __b10
     // main::@10
   __b10:
-    // [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __74
+    sta.z __76
     lda.z __44+1
     adc #>balls+2
-    sta.z __74+1
-    // [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
+    sta.z __76+1
+    // [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
     ldy #1
-    lda (__74),y
+    lda (__76),y
     sta.z __32
     lda #0
     sta.z __32+1
-    // [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    // [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuz1=vbuz2_rol_2 
     lda.z sprite_idx
     asl
     asl
     sta.z __48
-    // [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 
+    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 
     ldy.z __48
     lda.z __32
     sta SPRITE_BUFFER,y
-    // [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuz1=vbuc2 
+    // [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuz1=vbuc2 
     lda #$a
     ldy.z __48
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,y
-    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuz1=vbuc2 
+    // [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuz1=vbuc2 
     lda #3
     ldy.z __48
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,y
-    // [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls
-    sta.z __75
+    sta.z __77
     lda.z __44+1
     adc #>balls
-    sta.z __75+1
-    // [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
+    sta.z __77+1
+    // [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8 -- vwuz1=_deref_pwuz2_ror_8 
     ldy #1
-    lda (__75),y
+    lda (__77),y
     sta.z __33
     lda #0
     sta.z __33+1
-    // [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 
+    // [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 
     ldy.z __48
     lda.z __33
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,y
-    // [111] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
+    // [113] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
     inc.z sprite_idx
-    // [112] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
+    // [114] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
     inc.z i_1
     bne !+
     inc.z i_1+1
   !:
-    // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
+    // [65] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
   __b6_from___b10:
-    // [63] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
-    // [63] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
+    // [65] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
+    // [65] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
     jmp __b6
     // main::@25
   __b25:
-    // [113] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuz2 
+    // [115] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuz2 
     lda.z timer
     sta.z timer_1
     jmp __b5_from___b25
-    // [114] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+    // [116] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
   __b2_from___b1:
     jmp __b2
     // main::@2
   __b2:
-    // [115] call rand 
-    // [152] phi from main::@2 to rand [phi:main::@2->rand]
+    // [117] call rand 
+    // [154] phi from main::@2 to rand [phi:main::@2->rand]
   rand_from___b2:
-    // [152] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
+    // [154] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
     jsr rand
-    // [116] (word) rand::return#2 ← (word) rand::return#0 -- vwuz1=vwuz2 
+    // [118] (word) rand::return#2 ← (word) rand::return#0 -- vwuz1=vwuz2 
     lda.z rand.return
     sta.z rand.return_1
     lda.z rand.return+1
@@ -3519,19 +3556,19 @@ main: {
     jmp __b22
     // main::@22
   __b22:
-    // [117] (word~) main::$9 ← (word) rand::return#2 -- vwuz1=vwuz2 
+    // [119] (word~) main::$9 ← (word) rand::return#2 -- vwuz1=vwuz2 
     lda.z rand.return_1
     sta.z __9
     lda.z rand.return_1+1
     sta.z __9+1
-    // [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz2_band_vwuc1 
+    // [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz2_band_vwuc1 
     lda.z __9
     and #<$3ff
     sta.z __10
     lda.z __9+1
     and #>$3ff
     sta.z __10+1
-    // [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i
     asl
     sta.z __36
@@ -3542,7 +3579,7 @@ main: {
     rol.z __36+1
     asl.z __36
     rol.z __36+1
-    // [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
+    // [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __36
     clc
     adc #<balls+4
@@ -3550,19 +3587,19 @@ main: {
     lda.z __36+1
     adc #>balls+4
     sta.z __59+1
-    // [121] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
+    // [123] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __10
     sta (__59),y
     iny
     lda.z __10+1
     sta (__59),y
-    // [122] call rand 
-    // [152] phi from main::@22 to rand [phi:main::@22->rand]
+    // [124] call rand 
+    // [154] phi from main::@22 to rand [phi:main::@22->rand]
   rand_from___b22:
-    // [152] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
+    // [154] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
     jsr rand
-    // [123] (word) rand::return#3 ← (word) rand::return#0 -- vwuz1=vwuz2 
+    // [125] (word) rand::return#3 ← (word) rand::return#0 -- vwuz1=vwuz2 
     lda.z rand.return
     sta.z rand.return_2
     lda.z rand.return+1
@@ -3570,16 +3607,16 @@ main: {
     jmp __b23
     // main::@23
   __b23:
-    // [124] (word~) main::$11 ← (word) rand::return#3 -- vwuz1=vwuz2 
+    // [126] (word~) main::$11 ← (word) rand::return#3 -- vwuz1=vwuz2 
     lda.z rand.return_2
     sta.z __11
     lda.z rand.return_2+1
     sta.z __11+1
-    // [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 
+    // [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 
     lda #$ff
     and.z __11
     sta.z __12
-    // [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
+    // [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __36
     clc
     adc #<balls+6
@@ -3587,14 +3624,14 @@ main: {
     lda.z __36+1
     adc #>balls+6
     sta.z __60+1
-    // [127] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuz2 
+    // [129] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuz2 
     lda.z __12
     ldy #0
     sta (__60),y
     tya
     iny
     sta (__60),y
-    // [128] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
+    // [130] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
@@ -3610,42 +3647,42 @@ main: {
 // - ppuData : Pointer in the PPU memory
 // - cpuData : Pointer to the CPU memory (RAM of ROM)
 // - size : The number of bytes to transfer
-// ppuDataTransfer(void* zp($d) cpuData)
+// ppuDataTransfer(void* zp($e) cpuData)
 ppuDataTransfer: {
-    .label ppuDataPrepare1___0 = $6b
-    .label ppuDataPrepare1___1 = $6c
-    .label ppuDataPrepare1_ppuData = $b
-    .label ppuDataPut1_val = $6d
-    .label cpuSrc = $11
-    .label i = $f
-    .label cpuData = $d
+    .label ppuDataPrepare1___0 = $71
+    .label ppuDataPrepare1___1 = $72
+    .label ppuDataPrepare1_ppuData = $c
+    .label ppuDataPut1_val = $73
+    .label cpuSrc = $12
+    .label i = $10
+    .label cpuData = $e
     jmp ppuDataPrepare1
     // ppuDataTransfer::ppuDataPrepare1
   ppuDataPrepare1:
-    // [130] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 
+    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 
     lda.z ppuDataPrepare1_ppuData+1
     sta.z ppuDataPrepare1___0
-    // [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 
+    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 
     lda.z ppuDataPrepare1___0
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 
+    // [134] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 
     lda.z ppuDataPrepare1_ppuData
     sta.z ppuDataPrepare1___1
-    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 
+    // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 
     lda.z ppuDataPrepare1___1
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
     jmp __b3
     // ppuDataTransfer::@3
   __b3:
-    // [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 -- pbuz1=pbuz2 
+    // [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 -- pbuz1=pbuz2 
     lda.z cpuData
     sta.z cpuSrc
     lda.z cpuData+1
     sta.z cpuSrc+1
-    // [135] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
+    // [137] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
   __b1_from___b3:
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     lda #>0
@@ -3653,7 +3690,7 @@ ppuDataTransfer: {
     jmp __b1
     // ppuDataTransfer::@1
   __b1:
-    // [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
+    // [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
     lda.z i+1
     bne !+
     lda.z i
@@ -3663,68 +3700,68 @@ ppuDataTransfer: {
     jmp __breturn
     // ppuDataTransfer::@return
   __breturn:
-    // [137] return 
+    // [139] return 
     rts
     // ppuDataTransfer::@2
   __b2:
-    // [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuz1=_deref_pbuz2 
+    // [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuz1=_deref_pbuz2 
     ldy #0
     lda (cpuSrc),y
     sta.z ppuDataPut1_val
     jmp ppuDataPut1
     // ppuDataTransfer::ppuDataPut1
   ppuDataPut1:
-    // [139] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuz1 
+    // [141] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuz1 
     lda.z ppuDataPut1_val
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     jmp __b4
     // ppuDataTransfer::@4
   __b4:
-    // [140] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
+    // [142] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
     inc.z cpuSrc
     bne !+
     inc.z cpuSrc+1
   !:
-    // [141] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
+    // [143] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [135] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
+    // [137] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
   __b1_from___b4:
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
     jmp __b1
 }
   // ppuDataFill
 // Fill a number of bytes in the PPU memory
 // - ppuData : Pointer in the PPU memory
 // - size : The number of bytes to transfer
-// ppuDataFill(word zp($15) size)
+// ppuDataFill(word zp($16) size)
 ppuDataFill: {
-    .label ppuDataPrepare1___0 = $6e
-    .label ppuDataPrepare1___1 = $6f
-    .label ppuDataPrepare1_ppuData = $13
-    .label i = $17
-    .label size = $15
+    .label ppuDataPrepare1___0 = $74
+    .label ppuDataPrepare1___1 = $75
+    .label ppuDataPrepare1_ppuData = $14
+    .label i = $18
+    .label size = $16
     jmp ppuDataPrepare1
     // ppuDataFill::ppuDataPrepare1
   ppuDataPrepare1:
-    // [143] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 
+    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 
     lda.z ppuDataPrepare1_ppuData+1
     sta.z ppuDataPrepare1___0
-    // [144] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 
+    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 
     lda.z ppuDataPrepare1___0
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 
+    // [147] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 
     lda.z ppuDataPrepare1_ppuData
     sta.z ppuDataPrepare1___1
-    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 
+    // [148] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 
     lda.z ppuDataPrepare1___1
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [147] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
+    // [149] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
   __b1_from_ppuDataPrepare1:
-    // [147] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
+    // [149] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     lda #>0
@@ -3733,7 +3770,7 @@ ppuDataFill: {
   // Transfer to PPU
     // ppuDataFill::@1
   __b1:
-    // [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
+    // [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i+1
     cmp.z size+1
     bcc ppuDataPut1
@@ -3745,24 +3782,24 @@ ppuDataFill: {
     jmp __breturn
     // ppuDataFill::@return
   __breturn:
-    // [149] return 
+    // [151] return 
     rts
     // ppuDataFill::ppuDataPut1
   ppuDataPut1:
-    // [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
+    // [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
     lda #0
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     jmp __b2
     // ppuDataFill::@2
   __b2:
-    // [151] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
+    // [153] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [147] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
+    // [149] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
   __b1_from___b2:
-    // [147] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
+    // [149] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
     jmp __b1
 }
   // rand
@@ -3771,13 +3808,13 @@ ppuDataFill: {
 // Information https://en.wikipedia.org/wiki/Xorshift
 // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html
 rand: {
-    .label __0 = $70
-    .label __1 = $74
-    .label __2 = $78
-    .label return = $7a
-    .label return_1 = $5a
-    .label return_2 = $64
-    // [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
+    .label __0 = $76
+    .label __1 = $7a
+    .label __2 = $7e
+    .label return = $80
+    .label return_1 = $60
+    .label return_2 = $6a
+    // [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
     lda.z rand_state_2+1
     lsr
     lda.z rand_state_2
@@ -3786,39 +3823,39 @@ rand: {
     lda #0
     ror
     sta.z __0
-    // [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz2_bxor_vwuz3 
+    // [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz2_bxor_vwuz3 
     lda.z rand_state_2
     eor.z __0
     sta.z rand_state
     lda.z rand_state_2+1
     eor.z __0+1
     sta.z rand_state+1
-    // [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
+    // [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
     lda.z rand_state+1
     lsr
     sta.z __1
     lda #0
     sta.z __1+1
-    // [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz2_bxor_vwuz3 
+    // [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz2_bxor_vwuz3 
     lda.z rand_state
     eor.z __1
     sta.z rand_state_1
     lda.z rand_state+1
     eor.z __1+1
     sta.z rand_state_1+1
-    // [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
+    // [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
     lda.z rand_state_1
     sta.z __2+1
     lda #0
     sta.z __2
-    // [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz2_bxor_vwuz3 
+    // [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz2_bxor_vwuz3 
     lda.z rand_state_1
     eor.z __2
     sta.z rand_state_2
     lda.z rand_state_1+1
     eor.z __2+1
     sta.z rand_state_2+1
-    // [159] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
+    // [161] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
     lda.z rand_state_2
     sta.z return
     lda.z rand_state_2+1
@@ -3826,7 +3863,7 @@ rand: {
     jmp __breturn
     // rand::@return
   __breturn:
-    // [160] return 
+    // [162] return 
     rts
 }
   // File Data
@@ -3878,94 +3915,94 @@ Statement [46] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUC
 Statement [47] *((byte*)(const struct RICOH_2C02*) PPU) ← (byte) $88 [ vblank_hit ] (  [ vblank_hit ] { }  main:4 [ vblank_hit ] { }  ) always clobbers reg byte a 
 Statement [49] if((word) main::i#14<(byte) $32) goto main::@2 [ vblank_hit main::i#14 rand_state#17 ] (  [ vblank_hit main::i#14 rand_state#17 ] { }  main:4 [ vblank_hit main::i#14 rand_state#17 ] { }  ) always clobbers reg byte a 
 Statement [52] (byte) main::h_bar#1 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (byte) $60 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
+Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ]
 Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::timer_2#2 main::timer_2#1 ]
 Statement [53] (byte~) main::$14 ← (byte) main::h_bar#1 ^ (byte) $ff [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:31 [ main::h_bar#1 ]
-Statement [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
-Statement [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:34 [ main::$38 ]
-Statement [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  ) always clobbers reg byte a 
-Statement [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
-Statement [65] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [67] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [68] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] { }  ) always clobbers reg byte a 
-Statement [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] { }  ) always clobbers reg byte a 
-Statement [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] { }  ) always clobbers reg byte a 
-Statement [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte a as potential for zp[1]:32 [ main::h_bar#1 ]
+Statement [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  ) always clobbers reg byte a 
+Statement [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
+Statement [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] { }  ) always clobbers reg byte a 
+Statement [61] *((word*~) main::$61) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a reg byte y 
 Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::timer_2#2 main::timer_2#1 ]
-Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
-Removing always clobbered register reg byte y as potential for zp[1]:31 [ main::h_bar#1 ]
-Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
-Statement [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] { }  ) always clobbers reg byte a 
-Statement [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] { }  ) always clobbers reg byte a 
-Statement [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  ) always clobbers reg byte a 
-Statement [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  ) always clobbers reg byte a 
-Statement [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] { }  ) always clobbers reg byte a 
-Statement [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] { }  ) always clobbers reg byte a 
-Statement [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [83] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  ) always clobbers reg byte a 
-Statement [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] { }  ) always clobbers reg byte a 
-Statement [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] { }  ) always clobbers reg byte a 
-Statement [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] { }  ) always clobbers reg byte a 
-Statement [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
-Statement [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:69 [ main::$26 ]
-Statement [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  ) always clobbers reg byte a 
-Statement [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] { }  ) always clobbers reg byte a 
-Statement [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [98] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  ) always clobbers reg byte a 
-Statement [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  ) always clobbers reg byte a 
-Statement [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] { }  ) always clobbers reg byte a 
-Statement [101] *((word*~) main::$78) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  ) always clobbers reg byte a 
-Statement [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:85 [ main::$48 ]
-Statement [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] { }  ) always clobbers reg byte a 
-Statement [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  ) always clobbers reg byte a reg byte y 
-Removing always clobbered register reg byte y as potential for zp[1]:85 [ main::$48 ]
-Statement [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
-Statement [116] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] (  [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  ) always clobbers reg byte a 
-Statement [117] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] (  [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [121] *((word*~) main::$59) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a reg byte y 
-Statement [123] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [124] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  ) always clobbers reg byte a 
-Statement [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  ) always clobbers reg byte a 
-Statement [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] (  [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  ) always clobbers reg byte a 
-Removing always clobbered register reg byte a as potential for zp[1]:104 [ main::$12 ]
-Statement [127] *((word*~) main::$60) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] (  [ vblank_hit main::i#14 rand_state#11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ) always clobbers reg byte a 
-Statement [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ) always clobbers reg byte a 
-Statement [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
-Statement [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
-Statement [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:115 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:115 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:115 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:115 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [159] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Removing always clobbered register reg byte y as potential for zp[1]:32 [ main::h_bar#1 ]
+Statement [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] { }  ) always clobbers reg byte a 
+Statement [63] *((word*~) main::$62) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ]
+Statement [67] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [69] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [70] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] { }  ) always clobbers reg byte a 
+Statement [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] { }  ) always clobbers reg byte a 
+Statement [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] { }  ) always clobbers reg byte a 
+Statement [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ]
+Removing always clobbered register reg byte y as potential for zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ]
+Statement [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  ) always clobbers reg byte a 
+Statement [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  ) always clobbers reg byte a 
+Statement [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] { }  ) always clobbers reg byte a 
+Statement [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] { }  ) always clobbers reg byte a 
+Statement [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] { }  ) always clobbers reg byte a 
+Statement [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] { }  ) always clobbers reg byte a 
+Statement [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [85] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  ) always clobbers reg byte a 
+Statement [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] { }  ) always clobbers reg byte a 
+Statement [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  ) always clobbers reg byte a 
+Statement [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] { }  ) always clobbers reg byte a 
+Statement [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
+Statement [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp[1]:75 [ main::$26 ]
+Statement [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] { }  ) always clobbers reg byte a 
+Statement [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] { }  ) always clobbers reg byte a 
+Statement [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [100] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  ) always clobbers reg byte a 
+Statement [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  ) always clobbers reg byte a 
+Statement [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] { }  ) always clobbers reg byte a 
+Statement [103] *((word*~) main::$80) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  ) always clobbers reg byte a 
+Statement [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp[1]:91 [ main::$48 ]
+Statement [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] { }  ) always clobbers reg byte a 
+Statement [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp[1]:91 [ main::$48 ]
+Statement [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
+Statement [118] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] (  [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  ) always clobbers reg byte a 
+Statement [119] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] (  [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [123] *((word*~) main::$59) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a reg byte y 
+Statement [125] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [126] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  ) always clobbers reg byte a 
+Statement [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  ) always clobbers reg byte a 
+Statement [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] (  [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp[1]:110 [ main::$12 ]
+Statement [129] *((word*~) main::$60) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] (  [ vblank_hit main::i#14 rand_state#11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ) always clobbers reg byte a 
+Statement [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ) always clobbers reg byte a 
+Statement [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
+Statement [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
+Statement [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:117 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:117 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:117 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:117 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [161] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
 Statement [1] (volatile byte) scroll_y ← (byte) 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
 Statement [2] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit ] (  [ vblank_hit ] { }  ) always clobbers reg byte a 
 Statement [6] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) 0 [ scroll_y vblank_hit ] (  [ scroll_y vblank_hit ] { }  ) always clobbers reg byte a 
@@ -3996,157 +4033,162 @@ Statement [47] *((byte*)(const struct RICOH_2C02*) PPU) ← (byte) $88 [ vblank_
 Statement [49] if((word) main::i#14<(byte) $32) goto main::@2 [ vblank_hit main::i#14 rand_state#17 ] (  [ vblank_hit main::i#14 rand_state#17 ] { }  main:4 [ vblank_hit main::i#14 rand_state#17 ] { }  ) always clobbers reg byte a 
 Statement [52] (byte) main::h_bar#1 ← *((const to_nomodify byte*) sine_table + (byte) main::timer_2#1) + (byte) $60 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  ) always clobbers reg byte a 
 Statement [53] (byte~) main::$14 ← (byte) main::h_bar#1 ^ (byte) $ff [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 main::$14 ] { }  ) always clobbers reg byte a 
-Statement [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
-Statement [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
-Statement [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  ) always clobbers reg byte a 
-Statement [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
-Statement [65] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [67] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [68] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
-Statement [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 ] { }  ) always clobbers reg byte a 
-Statement [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 ] { }  ) always clobbers reg byte a 
-Statement [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$61 main::$62 main::$63 ] { }  ) always clobbers reg byte a 
-Statement [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 ] { }  ) always clobbers reg byte a 
-Statement [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$64 main::$65 ] { }  ) always clobbers reg byte a 
-Statement [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  ) always clobbers reg byte a 
-Statement [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  ) always clobbers reg byte a 
-Statement [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 main::$68 ] { }  ) always clobbers reg byte a 
-Statement [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$69 ] { }  ) always clobbers reg byte a 
-Statement [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [83] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  ) always clobbers reg byte a 
-Statement [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 main::$73 ] { }  ) always clobbers reg byte a 
-Statement [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$70 ] { }  ) always clobbers reg byte a 
-Statement [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$71 ] { }  ) always clobbers reg byte a 
-Statement [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
-Statement [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
-Statement [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
-Statement [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  ) always clobbers reg byte a 
-Statement [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 main::$77 ] { }  ) always clobbers reg byte a 
-Statement [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [98] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  ) always clobbers reg byte a 
-Statement [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  ) always clobbers reg byte a 
-Statement [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$78 ] { }  ) always clobbers reg byte a 
-Statement [101] *((word*~) main::$78) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  ) always clobbers reg byte a 
-Statement [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
-Statement [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$75 ] { }  ) always clobbers reg byte a 
-Statement [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
-Statement [116] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] (  [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  ) always clobbers reg byte a 
-Statement [117] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] (  [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [121] *((word*~) main::$59) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a reg byte y 
-Statement [123] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [124] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  ) always clobbers reg byte a 
-Statement [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  ) always clobbers reg byte a 
-Statement [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] (  [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  ) always clobbers reg byte a 
-Statement [127] *((word*~) main::$60) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] (  [ vblank_hit main::i#14 rand_state#11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ) always clobbers reg byte a 
-Statement [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ) always clobbers reg byte a 
-Statement [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ) always clobbers reg byte a reg byte y 
-Statement [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
-Statement [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
-Statement [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:115 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:115 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:115 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:115 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
-Statement [159] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:115 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:115 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:122 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] (  [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  main:4 [ vblank_hit main::active_balls#2 main::timer#3 main::timer_2#1 main::h_bar#1 ] { }  ) always clobbers reg byte a 
+Statement [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a 
+Statement [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 main::$61 ] { }  ) always clobbers reg byte a 
+Statement [61] *((word*~) main::$61) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$38 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 main::$62 ] { }  ) always clobbers reg byte a 
+Statement [63] *((word*~) main::$62) ← (byte) 0 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] (  [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  main:4 [ vblank_hit main::timer_2#1 main::h_bar#1 main::active_balls#1 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
+Statement [67] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [69] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [70] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { }  ) always clobbers reg byte a 
+Statement [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 ] { }  ) always clobbers reg byte a 
+Statement [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 ] { }  ) always clobbers reg byte a 
+Statement [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$63 main::$64 main::$65 ] { }  ) always clobbers reg byte a 
+Statement [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 ] { }  ) always clobbers reg byte a 
+Statement [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$66 main::$67 ] { }  ) always clobbers reg byte a 
+Statement [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 ] { }  ) always clobbers reg byte a 
+Statement [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 ] { }  ) always clobbers reg byte a 
+Statement [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$68 main::$69 main::$70 ] { }  ) always clobbers reg byte a 
+Statement [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$71 ] { }  ) always clobbers reg byte a 
+Statement [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [85] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 ] { }  ) always clobbers reg byte a 
+Statement [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$74 main::$75 ] { }  ) always clobbers reg byte a 
+Statement [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$72 ] { }  ) always clobbers reg byte a 
+Statement [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$73 ] { }  ) always clobbers reg byte a 
+Statement [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
+Statement [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { }  ) always clobbers reg byte a 
+Statement [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a 
+Statement [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 ] { }  ) always clobbers reg byte a 
+Statement [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$78 main::$79 ] { }  ) always clobbers reg byte a 
+Statement [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [100] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { }  ) always clobbers reg byte a 
+Statement [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { }  ) always clobbers reg byte a 
+Statement [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 main::$80 ] { }  ) always clobbers reg byte a 
+Statement [103] *((word*~) main::$80) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$76 ] { }  ) always clobbers reg byte a 
+Statement [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { }  ) always clobbers reg byte a 
+Statement [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$77 ] { }  ) always clobbers reg byte a 
+Statement [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] (  [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { }  ) always clobbers reg byte a 
+Statement [118] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] (  [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  ) always clobbers reg byte a 
+Statement [119] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] (  [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] (  [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 main::$59 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [123] *((word*~) main::$59) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a reg byte y 
+Statement [125] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [126] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { }  ) always clobbers reg byte a 
+Statement [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] (  [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { }  ) always clobbers reg byte a 
+Statement [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] (  [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$60 ] { }  ) always clobbers reg byte a 
+Statement [129] *((word*~) main::$60) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] (  [ vblank_hit main::i#14 rand_state#11 ] { }  main:4 [ vblank_hit main::i#14 rand_state#11 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { }  ) always clobbers reg byte a 
+Statement [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  ) always clobbers reg byte a 
+Statement [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
+Statement [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { }  ) always clobbers reg byte a 
+Statement [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:117 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:117 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:117 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:117 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
+Statement [161] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:117 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  main:4::rand:117 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } }  rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  main:4::rand:124 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } }  ) always clobbers reg byte a 
 Potential registers zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] : zp[1]:2 , reg byte x , reg byte y , 
 Potential registers zp[2]:3 [ main::i#14 main::i#2 ] : zp[2]:3 , 
 Potential registers zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] : zp[1]:5 , reg byte x , 
-Potential registers zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] : zp[1]:6 , reg byte x , 
-Potential registers zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ] : zp[1]:7 , reg byte x , 
-Potential registers zp[2]:8 [ main::i#10 main::i#4 ] : zp[2]:8 , 
-Potential registers zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ] : zp[1]:10 , reg byte x , 
-Potential registers zp[2]:11 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] : zp[2]:11 , 
-Potential registers zp[2]:13 [ ppuDataTransfer::cpuData#2 ] : zp[2]:13 , 
-Potential registers zp[2]:15 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] : zp[2]:15 , 
-Potential registers zp[2]:17 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] : zp[2]:17 , 
-Potential registers zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] : zp[2]:19 , 
-Potential registers zp[2]:21 [ ppuDataFill::size#3 ] : zp[2]:21 , 
-Potential registers zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] : zp[2]:23 , 
-Potential registers zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 ] : zp[2]:25 , 
-Potential registers zp[1]:27 [ scroll_y ] : zp[1]:27 , 
-Potential registers zp[1]:28 [ vblank_hit ] : zp[1]:28 , 
-Potential registers zp[1]:29 [ main::initNES1_waitForVBlank1_$0 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:30 [ main::initNES1_waitForVBlank2_$0 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:31 [ main::h_bar#1 ] : zp[1]:31 , reg byte x , 
-Potential registers zp[1]:32 [ main::$14 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:33 [ main::timer#1 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:34 [ main::$38 ] : zp[1]:34 , reg byte x , reg byte y , 
-Potential registers zp[2]:35 [ main::$44 ] : zp[2]:35 , 
+Potential registers zp[2]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] : zp[2]:6 , 
+Potential registers zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ] : zp[1]:8 , reg byte x , 
+Potential registers zp[2]:9 [ main::i#10 main::i#4 ] : zp[2]:9 , 
+Potential registers zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ] : zp[1]:11 , reg byte x , 
+Potential registers zp[2]:12 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] : zp[2]:12 , 
+Potential registers zp[2]:14 [ ppuDataTransfer::cpuData#2 ] : zp[2]:14 , 
+Potential registers zp[2]:16 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] : zp[2]:16 , 
+Potential registers zp[2]:18 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] : zp[2]:18 , 
+Potential registers zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] : zp[2]:20 , 
+Potential registers zp[2]:22 [ ppuDataFill::size#3 ] : zp[2]:22 , 
+Potential registers zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ] : zp[2]:24 , 
+Potential registers zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 ] : zp[2]:26 , 
+Potential registers zp[1]:28 [ scroll_y ] : zp[1]:28 , 
+Potential registers zp[1]:29 [ vblank_hit ] : zp[1]:29 , 
+Potential registers zp[1]:30 [ main::initNES1_waitForVBlank1_$0 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:31 [ main::initNES1_waitForVBlank2_$0 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:32 [ main::h_bar#1 ] : zp[1]:32 , reg byte x , 
+Potential registers zp[1]:33 [ main::$14 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:34 [ main::timer#1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[2]:35 [ main::$38 ] : zp[2]:35 , 
 Potential registers zp[2]:37 [ main::$61 ] : zp[2]:37 , 
 Potential registers zp[2]:39 [ main::$62 ] : zp[2]:39 , 
-Potential registers zp[2]:41 [ main::$63 ] : zp[2]:41 , 
-Potential registers zp[2]:43 [ main::$64 ] : zp[2]:43 , 
-Potential registers zp[2]:45 [ main::$65 ] : zp[2]:45 , 
-Potential registers zp[2]:47 [ main::$66 ] : zp[2]:47 , 
-Potential registers zp[2]:49 [ main::$67 ] : zp[2]:49 , 
-Potential registers zp[2]:51 [ main::$68 ] : zp[2]:51 , 
-Potential registers zp[2]:53 [ main::$69 ] : zp[2]:53 , 
-Potential registers zp[2]:55 [ main::$20 ] : zp[2]:55 , 
-Potential registers zp[2]:57 [ main::$72 ] : zp[2]:57 , 
-Potential registers zp[2]:59 [ main::$73 ] : zp[2]:59 , 
-Potential registers zp[2]:61 [ main::$70 ] : zp[2]:61 , 
-Potential registers zp[2]:63 [ main::$23 ] : zp[2]:63 , 
-Potential registers zp[2]:65 [ main::$71 ] : zp[2]:65 , 
-Potential registers zp[2]:67 [ main::$25 ] : zp[2]:67 , 
-Potential registers zp[1]:69 [ main::$26 ] : zp[1]:69 , reg byte x , reg byte y , 
-Potential registers zp[2]:70 [ main::$76 ] : zp[2]:70 , 
-Potential registers zp[2]:72 [ main::$77 ] : zp[2]:72 , 
-Potential registers zp[1]:74 [ main::$30 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[2]:75 [ main::$56 ] : zp[2]:75 , 
-Potential registers zp[2]:77 [ main::$31 ] : zp[2]:77 , 
-Potential registers zp[2]:79 [ main::$78 ] : zp[2]:79 , 
-Potential registers zp[2]:81 [ main::$74 ] : zp[2]:81 , 
-Potential registers zp[2]:83 [ main::$32 ] : zp[2]:83 , 
-Potential registers zp[1]:85 [ main::$48 ] : zp[1]:85 , reg byte x , 
-Potential registers zp[2]:86 [ main::$75 ] : zp[2]:86 , 
-Potential registers zp[2]:88 [ main::$33 ] : zp[2]:88 , 
-Potential registers zp[2]:90 [ rand::return#2 ] : zp[2]:90 , 
-Potential registers zp[2]:92 [ main::$9 ] : zp[2]:92 , 
-Potential registers zp[2]:94 [ main::$10 ] : zp[2]:94 , 
-Potential registers zp[2]:96 [ main::$36 ] : zp[2]:96 , 
-Potential registers zp[2]:98 [ main::$59 ] : zp[2]:98 , 
-Potential registers zp[2]:100 [ rand::return#3 ] : zp[2]:100 , 
-Potential registers zp[2]:102 [ main::$11 ] : zp[2]:102 , 
-Potential registers zp[1]:104 [ main::$12 ] : zp[1]:104 , reg byte x , reg byte y , 
-Potential registers zp[2]:105 [ main::$60 ] : zp[2]:105 , 
-Potential registers zp[1]:107 [ ppuDataTransfer::ppuDataPrepare1_$0 ] : zp[1]:107 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:108 [ ppuDataTransfer::ppuDataPrepare1_$1 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:109 [ ppuDataTransfer::ppuDataPut1_val#0 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:110 [ ppuDataFill::ppuDataPrepare1_$0 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[1]:111 [ ppuDataFill::ppuDataPrepare1_$1 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y , 
-Potential registers zp[2]:112 [ rand::$0 ] : zp[2]:112 , 
-Potential registers zp[2]:114 [ rand_state#0 ] : zp[2]:114 , 
-Potential registers zp[2]:116 [ rand::$1 ] : zp[2]:116 , 
-Potential registers zp[2]:118 [ rand_state#1 ] : zp[2]:118 , 
-Potential registers zp[2]:120 [ rand::$2 ] : zp[2]:120 , 
-Potential registers zp[2]:122 [ rand::return#0 ] : zp[2]:122 , 
+Potential registers zp[2]:41 [ main::$44 ] : zp[2]:41 , 
+Potential registers zp[2]:43 [ main::$63 ] : zp[2]:43 , 
+Potential registers zp[2]:45 [ main::$64 ] : zp[2]:45 , 
+Potential registers zp[2]:47 [ main::$65 ] : zp[2]:47 , 
+Potential registers zp[2]:49 [ main::$66 ] : zp[2]:49 , 
+Potential registers zp[2]:51 [ main::$67 ] : zp[2]:51 , 
+Potential registers zp[2]:53 [ main::$68 ] : zp[2]:53 , 
+Potential registers zp[2]:55 [ main::$69 ] : zp[2]:55 , 
+Potential registers zp[2]:57 [ main::$70 ] : zp[2]:57 , 
+Potential registers zp[2]:59 [ main::$71 ] : zp[2]:59 , 
+Potential registers zp[2]:61 [ main::$20 ] : zp[2]:61 , 
+Potential registers zp[2]:63 [ main::$74 ] : zp[2]:63 , 
+Potential registers zp[2]:65 [ main::$75 ] : zp[2]:65 , 
+Potential registers zp[2]:67 [ main::$72 ] : zp[2]:67 , 
+Potential registers zp[2]:69 [ main::$23 ] : zp[2]:69 , 
+Potential registers zp[2]:71 [ main::$73 ] : zp[2]:71 , 
+Potential registers zp[2]:73 [ main::$25 ] : zp[2]:73 , 
+Potential registers zp[1]:75 [ main::$26 ] : zp[1]:75 , reg byte x , reg byte y , 
+Potential registers zp[2]:76 [ main::$78 ] : zp[2]:76 , 
+Potential registers zp[2]:78 [ main::$79 ] : zp[2]:78 , 
+Potential registers zp[1]:80 [ main::$30 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[2]:81 [ main::$56 ] : zp[2]:81 , 
+Potential registers zp[2]:83 [ main::$31 ] : zp[2]:83 , 
+Potential registers zp[2]:85 [ main::$80 ] : zp[2]:85 , 
+Potential registers zp[2]:87 [ main::$76 ] : zp[2]:87 , 
+Potential registers zp[2]:89 [ main::$32 ] : zp[2]:89 , 
+Potential registers zp[1]:91 [ main::$48 ] : zp[1]:91 , reg byte x , 
+Potential registers zp[2]:92 [ main::$77 ] : zp[2]:92 , 
+Potential registers zp[2]:94 [ main::$33 ] : zp[2]:94 , 
+Potential registers zp[2]:96 [ rand::return#2 ] : zp[2]:96 , 
+Potential registers zp[2]:98 [ main::$9 ] : zp[2]:98 , 
+Potential registers zp[2]:100 [ main::$10 ] : zp[2]:100 , 
+Potential registers zp[2]:102 [ main::$36 ] : zp[2]:102 , 
+Potential registers zp[2]:104 [ main::$59 ] : zp[2]:104 , 
+Potential registers zp[2]:106 [ rand::return#3 ] : zp[2]:106 , 
+Potential registers zp[2]:108 [ main::$11 ] : zp[2]:108 , 
+Potential registers zp[1]:110 [ main::$12 ] : zp[1]:110 , reg byte x , reg byte y , 
+Potential registers zp[2]:111 [ main::$60 ] : zp[2]:111 , 
+Potential registers zp[1]:113 [ ppuDataTransfer::ppuDataPrepare1_$0 ] : zp[1]:113 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:114 [ ppuDataTransfer::ppuDataPrepare1_$1 ] : zp[1]:114 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:115 [ ppuDataTransfer::ppuDataPut1_val#0 ] : zp[1]:115 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:116 [ ppuDataFill::ppuDataPrepare1_$0 ] : zp[1]:116 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[1]:117 [ ppuDataFill::ppuDataPrepare1_$1 ] : zp[1]:117 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp[2]:118 [ rand::$0 ] : zp[2]:118 , 
+Potential registers zp[2]:120 [ rand_state#0 ] : zp[2]:120 , 
+Potential registers zp[2]:122 [ rand::$1 ] : zp[2]:122 , 
+Potential registers zp[2]:124 [ rand_state#1 ] : zp[2]:124 , 
+Potential registers zp[2]:126 [ rand::$2 ] : zp[2]:126 , 
+Potential registers zp[2]:128 [ rand::return#0 ] : zp[2]:128 , 
 
 REGISTER UPLIFT SCOPES
-Uplift Scope [main] 2,090.98: zp[2]:8 [ main::i#10 main::i#4 ] 2,002: zp[2]:41 [ main::$63 ] 2,002: zp[2]:45 [ main::$65 ] 2,002: zp[2]:51 [ main::$68 ] 2,002: zp[2]:53 [ main::$69 ] 2,002: zp[2]:55 [ main::$20 ] 2,002: zp[2]:59 [ main::$73 ] 2,002: zp[2]:61 [ main::$70 ] 2,002: zp[2]:65 [ main::$71 ] 2,002: zp[2]:72 [ main::$77 ] 2,002: zp[2]:75 [ main::$56 ] 2,002: zp[2]:79 [ main::$78 ] 2,002: zp[2]:81 [ main::$74 ] 2,002: zp[2]:86 [ main::$75 ] 1,069.25: zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ] 1,001: zp[2]:39 [ main::$62 ] 1,001: zp[2]:43 [ main::$64 ] 1,001: zp[2]:49 [ main::$67 ] 1,001: zp[2]:57 [ main::$72 ] 1,001: zp[1]:69 [ main::$26 ] 1,001: zp[2]:70 [ main::$76 ] 1,001: zp[1]:74 [ main::$30 ] 1,001: zp[2]:77 [ main::$31 ] 1,001: zp[2]:88 [ main::$33 ] 834.17: zp[1]:85 [ main::$48 ] 667.33: zp[2]:37 [ main::$61 ] 667.33: zp[2]:47 [ main::$66 ] 667.33: zp[2]:67 [ main::$25 ] 500.5: zp[2]:63 [ main::$23 ] 500.5: zp[2]:83 [ main::$32 ] 487.67: zp[2]:35 [ main::$44 ] 265.66: zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ] 263.72: zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] 227.25: zp[2]:3 [ main::i#14 main::i#2 ] 206.81: zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] 202: zp[1]:29 [ main::initNES1_waitForVBlank1_$0 ] 202: zp[1]:30 [ main::initNES1_waitForVBlank2_$0 ] 202: zp[1]:32 [ main::$14 ] 202: zp[2]:92 [ main::$9 ] 202: zp[2]:98 [ main::$59 ] 202: zp[2]:102 [ main::$11 ] 202: zp[2]:105 [ main::$60 ] 159.41: zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] 151.5: zp[1]:34 [ main::$38 ] 101: zp[1]:33 [ main::timer#1 ] 101: zp[1]:104 [ main::$12 ] 67.33: zp[2]:94 [ main::$10 ] 55.26: zp[1]:31 [ main::h_bar#1 ] 43.29: zp[2]:96 [ main::$36 ] 
-Uplift Scope [ppuDataTransfer] 2,602.6: zp[2]:15 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] 2,002: zp[1]:109 [ ppuDataTransfer::ppuDataPut1_val#0 ] 1,979: zp[2]:17 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] 202: zp[1]:107 [ ppuDataTransfer::ppuDataPrepare1_$0 ] 202: zp[1]:108 [ ppuDataTransfer::ppuDataPrepare1_$1 ] 67.33: zp[2]:11 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] 0: zp[2]:13 [ ppuDataTransfer::cpuData#2 ] 
-Uplift Scope [rand] 2,002: zp[2]:112 [ rand::$0 ] 2,002: zp[2]:116 [ rand::$1 ] 2,002: zp[2]:120 [ rand::$2 ] 300.75: zp[2]:122 [ rand::return#0 ] 202: zp[2]:90 [ rand::return#2 ] 202: zp[2]:100 [ rand::return#3 ] 
-Uplift Scope [] 1,501.5: zp[2]:114 [ rand_state#0 ] 1,501.5: zp[2]:118 [ rand_state#1 ] 1,298.98: zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 ] 105: zp[1]:27 [ scroll_y ] 9.01: zp[1]:28 [ vblank_hit ] 
-Uplift Scope [ppuDataFill] 3,003: zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] 202: zp[1]:110 [ ppuDataFill::ppuDataPrepare1_$0 ] 202: zp[1]:111 [ ppuDataFill::ppuDataPrepare1_$1 ] 111.22: zp[2]:21 [ ppuDataFill::size#3 ] 67.33: zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
+Uplift Scope [main] 2,090.98: zp[2]:9 [ main::i#10 main::i#4 ] 2,002: zp[2]:47 [ main::$65 ] 2,002: zp[2]:51 [ main::$67 ] 2,002: zp[2]:57 [ main::$70 ] 2,002: zp[2]:59 [ main::$71 ] 2,002: zp[2]:61 [ main::$20 ] 2,002: zp[2]:65 [ main::$75 ] 2,002: zp[2]:67 [ main::$72 ] 2,002: zp[2]:71 [ main::$73 ] 2,002: zp[2]:78 [ main::$79 ] 2,002: zp[2]:81 [ main::$56 ] 2,002: zp[2]:85 [ main::$80 ] 2,002: zp[2]:87 [ main::$76 ] 2,002: zp[2]:92 [ main::$77 ] 1,069.25: zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ] 1,001: zp[2]:45 [ main::$64 ] 1,001: zp[2]:49 [ main::$66 ] 1,001: zp[2]:55 [ main::$69 ] 1,001: zp[2]:63 [ main::$74 ] 1,001: zp[1]:75 [ main::$26 ] 1,001: zp[2]:76 [ main::$78 ] 1,001: zp[1]:80 [ main::$30 ] 1,001: zp[2]:83 [ main::$31 ] 1,001: zp[2]:94 [ main::$33 ] 834.17: zp[1]:91 [ main::$48 ] 667.33: zp[2]:43 [ main::$63 ] 667.33: zp[2]:53 [ main::$68 ] 667.33: zp[2]:73 [ main::$25 ] 500.5: zp[2]:69 [ main::$23 ] 500.5: zp[2]:89 [ main::$32 ] 487.67: zp[2]:41 [ main::$44 ] 265.66: zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ] 263.72: zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] 227.25: zp[2]:3 [ main::i#14 main::i#2 ] 206.66: zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] 202: zp[1]:30 [ main::initNES1_waitForVBlank1_$0 ] 202: zp[1]:31 [ main::initNES1_waitForVBlank2_$0 ] 202: zp[1]:33 [ main::$14 ] 202: zp[2]:37 [ main::$61 ] 202: zp[2]:39 [ main::$62 ] 202: zp[2]:98 [ main::$9 ] 202: zp[2]:104 [ main::$59 ] 202: zp[2]:108 [ main::$11 ] 202: zp[2]:111 [ main::$60 ] 134.16: zp[2]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] 101: zp[1]:34 [ main::timer#1 ] 101: zp[2]:35 [ main::$38 ] 101: zp[1]:110 [ main::$12 ] 67.33: zp[2]:100 [ main::$10 ] 53.42: zp[1]:32 [ main::h_bar#1 ] 43.29: zp[2]:102 [ main::$36 ] 
+Uplift Scope [ppuDataTransfer] 2,602.6: zp[2]:16 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] 2,002: zp[1]:115 [ ppuDataTransfer::ppuDataPut1_val#0 ] 1,979: zp[2]:18 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] 202: zp[1]:113 [ ppuDataTransfer::ppuDataPrepare1_$0 ] 202: zp[1]:114 [ ppuDataTransfer::ppuDataPrepare1_$1 ] 67.33: zp[2]:12 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] 0: zp[2]:14 [ ppuDataTransfer::cpuData#2 ] 
+Uplift Scope [rand] 2,002: zp[2]:118 [ rand::$0 ] 2,002: zp[2]:122 [ rand::$1 ] 2,002: zp[2]:126 [ rand::$2 ] 300.75: zp[2]:128 [ rand::return#0 ] 202: zp[2]:96 [ rand::return#2 ] 202: zp[2]:106 [ rand::return#3 ] 
+Uplift Scope [] 1,501.5: zp[2]:120 [ rand_state#0 ] 1,501.5: zp[2]:124 [ rand_state#1 ] 1,298.98: zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 ] 105: zp[1]:28 [ scroll_y ] 8.86: zp[1]:29 [ vblank_hit ] 
+Uplift Scope [ppuDataFill] 3,003: zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ] 202: zp[1]:116 [ ppuDataFill::ppuDataPrepare1_$0 ] 202: zp[1]:117 [ ppuDataFill::ppuDataPrepare1_$1 ] 111.22: zp[2]:22 [ ppuDataFill::size#3 ] 67.33: zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
 Uplift Scope [RICOH_2C02] 
 Uplift Scope [RICOH_2A03] 
 Uplift Scope [SpriteData] 
@@ -4158,123 +4200,112 @@ Uplift Scope [$0]
 Uplift Scope [vblank] 
 Uplift Scope [__start] 
 
-Uplifting [main] best 90802 combination zp[2]:8 [ main::i#10 main::i#4 ] zp[2]:41 [ main::$63 ] zp[2]:45 [ main::$65 ] zp[2]:51 [ main::$68 ] zp[2]:53 [ main::$69 ] zp[2]:55 [ main::$20 ] zp[2]:59 [ main::$73 ] zp[2]:61 [ main::$70 ] zp[2]:65 [ main::$71 ] zp[2]:72 [ main::$77 ] zp[2]:75 [ main::$56 ] zp[2]:79 [ main::$78 ] zp[2]:81 [ main::$74 ] zp[2]:86 [ main::$75 ] zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ] zp[2]:39 [ main::$62 ] zp[2]:43 [ main::$64 ] zp[2]:49 [ main::$67 ] zp[2]:57 [ main::$72 ] zp[1]:69 [ main::$26 ] zp[2]:70 [ main::$76 ] reg byte a [ main::$30 ] zp[2]:77 [ main::$31 ] zp[2]:88 [ main::$33 ] reg byte x [ main::$48 ] zp[2]:37 [ main::$61 ] zp[2]:47 [ main::$66 ] zp[2]:67 [ main::$25 ] zp[2]:63 [ main::$23 ] zp[2]:83 [ main::$32 ] zp[2]:35 [ main::$44 ] zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ] zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] zp[2]:3 [ main::i#14 main::i#2 ] zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] zp[1]:29 [ main::initNES1_waitForVBlank1_$0 ] zp[1]:30 [ main::initNES1_waitForVBlank2_$0 ] zp[1]:32 [ main::$14 ] zp[2]:92 [ main::$9 ] zp[2]:98 [ main::$59 ] zp[2]:102 [ main::$11 ] zp[2]:105 [ main::$60 ] zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] zp[1]:34 [ main::$38 ] zp[1]:33 [ main::timer#1 ] zp[1]:104 [ main::$12 ] zp[2]:94 [ main::$10 ] zp[1]:31 [ main::h_bar#1 ] zp[2]:96 [ main::$36 ] 
-Limited combination testing to 100 combinations of 5308416 possible.
-Uplifting [ppuDataTransfer] best 90730 combination zp[2]:15 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] zp[2]:17 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] zp[2]:11 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:13 [ ppuDataTransfer::cpuData#2 ] 
-Uplifting [rand] best 90730 combination zp[2]:112 [ rand::$0 ] zp[2]:116 [ rand::$1 ] zp[2]:120 [ rand::$2 ] zp[2]:122 [ rand::return#0 ] zp[2]:90 [ rand::return#2 ] zp[2]:100 [ rand::return#3 ] 
-Uplifting [] best 90730 combination zp[2]:114 [ rand_state#0 ] zp[2]:118 [ rand_state#1 ] zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 ] zp[1]:27 [ scroll_y ] zp[1]:28 [ vblank_hit ] 
-Uplifting [ppuDataFill] best 90718 combination zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] zp[2]:21 [ ppuDataFill::size#3 ] zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
-Uplifting [RICOH_2C02] best 90718 combination 
-Uplifting [RICOH_2A03] best 90718 combination 
-Uplifting [SpriteData] best 90718 combination 
-Uplifting [RADIX] best 90718 combination 
-Uplifting [printf_format_number] best 90718 combination 
-Uplifting [printf_buffer_number] best 90718 combination 
-Uplifting [printf_format_string] best 90718 combination 
-Uplifting [$0] best 90718 combination 
-Uplifting [vblank] best 90718 combination 
-Uplifting [__start] best 90718 combination 
-Attempting to uplift remaining variables inzp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
-Uplifting [main] best 90718 combination zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ] 
-Attempting to uplift remaining variables inzp[1]:69 [ main::$26 ]
-Uplifting [main] best 90718 combination zp[1]:69 [ main::$26 ] 
-Attempting to uplift remaining variables inzp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
-Uplifting [main] best 90718 combination zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ] 
+Uplifting [main] best 92192 combination zp[2]:9 [ main::i#10 main::i#4 ] zp[2]:47 [ main::$65 ] zp[2]:51 [ main::$67 ] zp[2]:57 [ main::$70 ] zp[2]:59 [ main::$71 ] zp[2]:61 [ main::$20 ] zp[2]:65 [ main::$75 ] zp[2]:67 [ main::$72 ] zp[2]:71 [ main::$73 ] zp[2]:78 [ main::$79 ] zp[2]:81 [ main::$56 ] zp[2]:85 [ main::$80 ] zp[2]:87 [ main::$76 ] zp[2]:92 [ main::$77 ] zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ] zp[2]:45 [ main::$64 ] zp[2]:49 [ main::$66 ] zp[2]:55 [ main::$69 ] zp[2]:63 [ main::$74 ] zp[1]:75 [ main::$26 ] zp[2]:76 [ main::$78 ] reg byte a [ main::$30 ] zp[2]:83 [ main::$31 ] zp[2]:94 [ main::$33 ] reg byte x [ main::$48 ] zp[2]:43 [ main::$63 ] zp[2]:53 [ main::$68 ] zp[2]:73 [ main::$25 ] zp[2]:69 [ main::$23 ] zp[2]:89 [ main::$32 ] zp[2]:41 [ main::$44 ] zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ] zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] zp[2]:3 [ main::i#14 main::i#2 ] zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] zp[1]:30 [ main::initNES1_waitForVBlank1_$0 ] zp[1]:31 [ main::initNES1_waitForVBlank2_$0 ] zp[1]:33 [ main::$14 ] zp[2]:37 [ main::$61 ] zp[2]:39 [ main::$62 ] zp[2]:98 [ main::$9 ] zp[2]:104 [ main::$59 ] zp[2]:108 [ main::$11 ] zp[2]:111 [ main::$60 ] zp[2]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] zp[1]:34 [ main::timer#1 ] zp[2]:35 [ main::$38 ] zp[1]:110 [ main::$12 ] zp[2]:100 [ main::$10 ] zp[1]:32 [ main::h_bar#1 ] zp[2]:102 [ main::$36 ] 
+Limited combination testing to 100 combinations of 884736 possible.
+Uplifting [ppuDataTransfer] best 92120 combination zp[2]:16 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] zp[2]:18 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] zp[2]:12 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:14 [ ppuDataTransfer::cpuData#2 ] 
+Uplifting [rand] best 92120 combination zp[2]:118 [ rand::$0 ] zp[2]:122 [ rand::$1 ] zp[2]:126 [ rand::$2 ] zp[2]:128 [ rand::return#0 ] zp[2]:96 [ rand::return#2 ] zp[2]:106 [ rand::return#3 ] 
+Uplifting [] best 92120 combination zp[2]:120 [ rand_state#0 ] zp[2]:124 [ rand_state#1 ] zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 ] zp[1]:28 [ scroll_y ] zp[1]:29 [ vblank_hit ] 
+Uplifting [ppuDataFill] best 92108 combination zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] zp[2]:22 [ ppuDataFill::size#3 ] zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
+Uplifting [RICOH_2C02] best 92108 combination 
+Uplifting [RICOH_2A03] best 92108 combination 
+Uplifting [SpriteData] best 92108 combination 
+Uplifting [RADIX] best 92108 combination 
+Uplifting [printf_format_number] best 92108 combination 
+Uplifting [printf_buffer_number] best 92108 combination 
+Uplifting [printf_format_string] best 92108 combination 
+Uplifting [$0] best 92108 combination 
+Uplifting [vblank] best 92108 combination 
+Uplifting [__start] best 92108 combination 
+Attempting to uplift remaining variables inzp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ]
+Uplifting [main] best 92108 combination zp[1]:11 [ main::sprite_idx#3 main::sprite_idx#2 ] 
+Attempting to uplift remaining variables inzp[1]:75 [ main::$26 ]
+Uplifting [main] best 92108 combination zp[1]:75 [ main::$26 ] 
+Attempting to uplift remaining variables inzp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ]
+Uplifting [main] best 92108 combination zp[1]:8 [ main::timer#3 main::timer#15 main::timer#21 ] 
 Attempting to uplift remaining variables inzp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ]
-Uplifting [main] best 90388 combination reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] 
+Uplifting [main] best 91778 combination reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] 
 Attempting to uplift remaining variables inzp[1]:5 [ main::timer_2#2 main::timer_2#1 ]
-Uplifting [main] best 90388 combination zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] 
-Attempting to uplift remaining variables inzp[1]:29 [ main::initNES1_waitForVBlank1_$0 ]
-Uplifting [main] best 90328 combination reg byte a [ main::initNES1_waitForVBlank1_$0 ] 
-Attempting to uplift remaining variables inzp[1]:30 [ main::initNES1_waitForVBlank2_$0 ]
-Uplifting [main] best 90268 combination reg byte a [ main::initNES1_waitForVBlank2_$0 ] 
-Attempting to uplift remaining variables inzp[1]:32 [ main::$14 ]
-Uplifting [main] best 90208 combination reg byte a [ main::$14 ] 
-Attempting to uplift remaining variables inzp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-Uplifting [main] best 90208 combination zp[1]:6 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] 
-Attempting to uplift remaining variables inzp[1]:34 [ main::$38 ]
-Uplifting [main] best 90138 combination reg byte x [ main::$38 ] 
-Attempting to uplift remaining variables inzp[1]:27 [ scroll_y ]
-Uplifting [] best 90138 combination zp[1]:27 [ scroll_y ] 
-Attempting to uplift remaining variables inzp[1]:33 [ main::timer#1 ]
-Uplifting [main] best 90078 combination reg byte x [ main::timer#1 ] 
-Attempting to uplift remaining variables inzp[1]:104 [ main::$12 ]
-Uplifting [main] best 90058 combination reg byte x [ main::$12 ] 
-Attempting to uplift remaining variables inzp[1]:31 [ main::h_bar#1 ]
-Uplifting [main] best 90058 combination zp[1]:31 [ main::h_bar#1 ] 
-Attempting to uplift remaining variables inzp[1]:28 [ vblank_hit ]
-Uplifting [] best 90058 combination zp[1]:28 [ vblank_hit ] 
-Coalescing zero page register [ zp[2]:13 [ ppuDataTransfer::cpuData#2 ] ] with [ zp[2]:17 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] - score: 1
-Coalescing zero page register [ zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 ] ] with [ zp[2]:114 [ rand_state#0 ] ] - score: 1
-Coalescing zero page register [ zp[2]:25 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 ] ] with [ zp[2]:118 [ rand_state#1 ] ] - score: 1
-Coalescing zero page register [ zp[2]:35 [ main::$44 ] ] with [ zp[2]:86 [ main::$75 ] ] - score: 1
-Coalescing zero page register [ zp[2]:53 [ main::$69 ] ] with [ zp[2]:55 [ main::$20 ] ] - score: 1
-Coalescing zero page register [ zp[2]:61 [ main::$70 ] ] with [ zp[2]:63 [ main::$23 ] ] - score: 1
-Coalescing zero page register [ zp[2]:65 [ main::$71 ] ] with [ zp[2]:67 [ main::$25 ] ] - score: 1
-Coalescing zero page register [ zp[2]:75 [ main::$56 ] ] with [ zp[2]:77 [ main::$31 ] ] - score: 1
-Coalescing zero page register [ zp[2]:81 [ main::$74 ] ] with [ zp[2]:83 [ main::$32 ] ] - score: 1
-Coalescing zero page register [ zp[2]:90 [ rand::return#2 ] ] with [ zp[2]:92 [ main::$9 ] ] - score: 1
-Coalescing zero page register [ zp[2]:90 [ rand::return#2 main::$9 ] ] with [ zp[2]:122 [ rand::return#0 ] ] - score: 1
-Coalescing zero page register [ zp[2]:96 [ main::$36 ] ] with [ zp[2]:105 [ main::$60 ] ] - score: 1
-Coalescing zero page register [ zp[2]:100 [ rand::return#3 ] ] with [ zp[2]:102 [ main::$11 ] ] - score: 1
-Coalescing zero page register [ zp[2]:35 [ main::$44 main::$75 ] ] with [ zp[2]:88 [ main::$33 ] ] - score: 1
-Coalescing zero page register [ zp[2]:90 [ rand::return#2 main::$9 rand::return#0 ] ] with [ zp[2]:94 [ main::$10 ] ] - score: 1
-Coalescing zero page register [ zp[2]:90 [ rand::return#2 main::$9 rand::return#0 main::$10 ] ] with [ zp[2]:100 [ rand::return#3 main::$11 ] ] - score: 1
-Coalescing zero page register [ zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] ] with [ zp[2]:11 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ]
-Coalescing zero page register [ zp[2]:21 [ ppuDataFill::size#3 ] ] with [ zp[2]:13 [ ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
-Coalescing zero page register [ zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] ] with [ zp[2]:15 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ]
-Coalescing zero page register [ zp[2]:35 [ main::$44 main::$75 main::$33 ] ] with [ zp[2]:19 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ]
-Coalescing zero page register [ zp[2]:37 [ main::$61 ] ] with [ zp[2]:21 [ ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
-Coalescing zero page register [ zp[2]:39 [ main::$62 ] ] with [ zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ]
+Uplifting [main] best 91778 combination zp[1]:5 [ main::timer_2#2 main::timer_2#1 ] 
+Attempting to uplift remaining variables inzp[1]:30 [ main::initNES1_waitForVBlank1_$0 ]
+Uplifting [main] best 91718 combination reg byte a [ main::initNES1_waitForVBlank1_$0 ] 
+Attempting to uplift remaining variables inzp[1]:31 [ main::initNES1_waitForVBlank2_$0 ]
+Uplifting [main] best 91658 combination reg byte a [ main::initNES1_waitForVBlank2_$0 ] 
+Attempting to uplift remaining variables inzp[1]:33 [ main::$14 ]
+Uplifting [main] best 91598 combination reg byte a [ main::$14 ] 
+Attempting to uplift remaining variables inzp[1]:28 [ scroll_y ]
+Uplifting [] best 91598 combination zp[1]:28 [ scroll_y ] 
+Attempting to uplift remaining variables inzp[1]:34 [ main::timer#1 ]
+Uplifting [main] best 91538 combination reg byte x [ main::timer#1 ] 
+Attempting to uplift remaining variables inzp[1]:110 [ main::$12 ]
+Uplifting [main] best 91518 combination reg byte x [ main::$12 ] 
+Attempting to uplift remaining variables inzp[1]:32 [ main::h_bar#1 ]
+Uplifting [main] best 91518 combination zp[1]:32 [ main::h_bar#1 ] 
+Attempting to uplift remaining variables inzp[1]:29 [ vblank_hit ]
+Uplifting [] best 91518 combination zp[1]:29 [ vblank_hit ] 
+Coalescing zero page register [ zp[2]:14 [ ppuDataTransfer::cpuData#2 ] ] with [ zp[2]:18 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] - score: 1
+Coalescing zero page register [ zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 ] ] with [ zp[2]:120 [ rand_state#0 ] ] - score: 1
+Coalescing zero page register [ zp[2]:26 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 ] ] with [ zp[2]:124 [ rand_state#1 ] ] - score: 1
+Coalescing zero page register [ zp[2]:35 [ main::$38 ] ] with [ zp[2]:39 [ main::$62 ] ] - score: 1
+Coalescing zero page register [ zp[2]:41 [ main::$44 ] ] with [ zp[2]:92 [ main::$77 ] ] - score: 1
+Coalescing zero page register [ zp[2]:59 [ main::$71 ] ] with [ zp[2]:61 [ main::$20 ] ] - score: 1
+Coalescing zero page register [ zp[2]:67 [ main::$72 ] ] with [ zp[2]:69 [ main::$23 ] ] - score: 1
+Coalescing zero page register [ zp[2]:71 [ main::$73 ] ] with [ zp[2]:73 [ main::$25 ] ] - score: 1
+Coalescing zero page register [ zp[2]:81 [ main::$56 ] ] with [ zp[2]:83 [ main::$31 ] ] - score: 1
+Coalescing zero page register [ zp[2]:87 [ main::$76 ] ] with [ zp[2]:89 [ main::$32 ] ] - score: 1
+Coalescing zero page register [ zp[2]:96 [ rand::return#2 ] ] with [ zp[2]:98 [ main::$9 ] ] - score: 1
+Coalescing zero page register [ zp[2]:96 [ rand::return#2 main::$9 ] ] with [ zp[2]:128 [ rand::return#0 ] ] - score: 1
+Coalescing zero page register [ zp[2]:102 [ main::$36 ] ] with [ zp[2]:111 [ main::$60 ] ] - score: 1
+Coalescing zero page register [ zp[2]:106 [ rand::return#3 ] ] with [ zp[2]:108 [ main::$11 ] ] - score: 1
+Coalescing zero page register [ zp[2]:41 [ main::$44 main::$77 ] ] with [ zp[2]:94 [ main::$33 ] ] - score: 1
+Coalescing zero page register [ zp[2]:96 [ rand::return#2 main::$9 rand::return#0 ] ] with [ zp[2]:100 [ main::$10 ] ] - score: 1
+Coalescing zero page register [ zp[2]:96 [ rand::return#2 main::$9 rand::return#0 main::$10 ] ] with [ zp[2]:106 [ rand::return#3 main::$11 ] ] - score: 1
+Coalescing zero page register [ zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] ] with [ zp[2]:12 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ]
+Coalescing zero page register [ zp[2]:22 [ ppuDataFill::size#3 ] ] with [ zp[2]:14 [ ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
+Coalescing zero page register [ zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ] ] with [ zp[2]:16 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ]
+Coalescing zero page register [ zp[2]:35 [ main::$38 main::$62 ] ] with [ zp[2]:20 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ]
+Coalescing zero page register [ zp[2]:37 [ main::$61 ] ] with [ zp[2]:22 [ ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
+Coalescing zero page register [ zp[2]:41 [ main::$44 main::$77 main::$33 ] ] with [ zp[2]:24 [ ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ]
 Allocated (was zp[2]:3) zp[2]:2 [ main::i#14 main::i#2 ]
 Allocated (was zp[1]:5) zp[1]:4 [ main::timer_2#2 main::timer_2#1 ]
-Allocated (was zp[1]:6) zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-Allocated (was zp[1]:7) zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ]
-Allocated (was zp[2]:8) zp[2]:7 [ main::i#10 main::i#4 ]
-Allocated (was zp[1]:10) zp[1]:9 [ main::sprite_idx#3 main::sprite_idx#2 ]
-Allocated (was zp[2]:25) zp[2]:10 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
-Allocated (was zp[1]:27) zp[1]:12 [ scroll_y ]
-Allocated (was zp[1]:28) zp[1]:13 [ vblank_hit ]
-Allocated (was zp[1]:31) zp[1]:14 [ main::h_bar#1 ]
-Allocated (was zp[2]:35) zp[2]:15 [ main::$44 main::$75 main::$33 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
-Allocated (was zp[2]:37) zp[2]:17 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
-Allocated (was zp[2]:39) zp[2]:19 [ main::$62 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
-Allocated (was zp[2]:41) zp[2]:21 [ main::$63 ]
-Allocated (was zp[2]:43) zp[2]:23 [ main::$64 ]
-Allocated (was zp[2]:45) zp[2]:25 [ main::$65 ]
-Allocated (was zp[2]:47) zp[2]:27 [ main::$66 ]
-Allocated (was zp[2]:49) zp[2]:29 [ main::$67 ]
-Allocated (was zp[2]:51) zp[2]:31 [ main::$68 ]
-Allocated (was zp[2]:53) zp[2]:33 [ main::$69 main::$20 ]
-Allocated (was zp[2]:57) zp[2]:35 [ main::$72 ]
-Allocated (was zp[2]:59) zp[2]:37 [ main::$73 ]
-Allocated (was zp[2]:61) zp[2]:39 [ main::$70 main::$23 ]
-Allocated (was zp[2]:65) zp[2]:41 [ main::$71 main::$25 ]
-Allocated (was zp[1]:69) zp[1]:43 [ main::$26 ]
-Allocated (was zp[2]:70) zp[2]:44 [ main::$76 ]
-Allocated (was zp[2]:72) zp[2]:46 [ main::$77 ]
-Allocated (was zp[2]:75) zp[2]:48 [ main::$56 main::$31 ]
-Allocated (was zp[2]:79) zp[2]:50 [ main::$78 ]
-Allocated (was zp[2]:81) zp[2]:52 [ main::$74 main::$32 ]
-Allocated (was zp[2]:90) zp[2]:54 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
-Allocated (was zp[2]:96) zp[2]:56 [ main::$36 main::$60 ]
-Allocated (was zp[2]:98) zp[2]:58 [ main::$59 ]
-Allocated (was zp[2]:112) zp[2]:60 [ rand::$0 ]
-Allocated (was zp[2]:116) zp[2]:62 [ rand::$1 ]
-Allocated (was zp[2]:120) zp[2]:64 [ rand::$2 ]
+Allocated (was zp[2]:6) zp[2]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
+Allocated (was zp[1]:8) zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
+Allocated (was zp[2]:9) zp[2]:8 [ main::i#10 main::i#4 ]
+Allocated (was zp[1]:11) zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
+Allocated (was zp[2]:26) zp[2]:11 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
+Allocated (was zp[1]:28) zp[1]:13 [ scroll_y ]
+Allocated (was zp[1]:29) zp[1]:14 [ vblank_hit ]
+Allocated (was zp[1]:32) zp[1]:15 [ main::h_bar#1 ]
+Allocated (was zp[2]:35) zp[2]:16 [ main::$38 main::$62 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
+Allocated (was zp[2]:37) zp[2]:18 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
+Allocated (was zp[2]:41) zp[2]:20 [ main::$44 main::$77 main::$33 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
+Allocated (was zp[2]:43) zp[2]:22 [ main::$63 ]
+Allocated (was zp[2]:45) zp[2]:24 [ main::$64 ]
+Allocated (was zp[2]:47) zp[2]:26 [ main::$65 ]
+Allocated (was zp[2]:49) zp[2]:28 [ main::$66 ]
+Allocated (was zp[2]:51) zp[2]:30 [ main::$67 ]
+Allocated (was zp[2]:53) zp[2]:32 [ main::$68 ]
+Allocated (was zp[2]:55) zp[2]:34 [ main::$69 ]
+Allocated (was zp[2]:57) zp[2]:36 [ main::$70 ]
+Allocated (was zp[2]:59) zp[2]:38 [ main::$71 main::$20 ]
+Allocated (was zp[2]:63) zp[2]:40 [ main::$74 ]
+Allocated (was zp[2]:65) zp[2]:42 [ main::$75 ]
+Allocated (was zp[2]:67) zp[2]:44 [ main::$72 main::$23 ]
+Allocated (was zp[2]:71) zp[2]:46 [ main::$73 main::$25 ]
+Allocated (was zp[1]:75) zp[1]:48 [ main::$26 ]
+Allocated (was zp[2]:76) zp[2]:49 [ main::$78 ]
+Allocated (was zp[2]:78) zp[2]:51 [ main::$79 ]
+Allocated (was zp[2]:81) zp[2]:53 [ main::$56 main::$31 ]
+Allocated (was zp[2]:85) zp[2]:55 [ main::$80 ]
+Allocated (was zp[2]:87) zp[2]:57 [ main::$76 main::$32 ]
+Allocated (was zp[2]:96) zp[2]:59 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
+Allocated (was zp[2]:102) zp[2]:61 [ main::$36 main::$60 ]
+Allocated (was zp[2]:104) zp[2]:63 [ main::$59 ]
+Allocated (was zp[2]:118) zp[2]:65 [ rand::$0 ]
+Allocated (was zp[2]:122) zp[2]:67 [ rand::$1 ]
+Allocated (was zp[2]:126) zp[2]:69 [ rand::$2 ]
 
 ASSEMBLER BEFORE OPTIMIZATION
   // File Comments
-//#pragma emulator("java -jar /Applications/Nintaco_bin_2020-05-01/Nintaco.jar")
-// Nintendo Entertainment System (NES
-// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
-// https://github.com/gregkrsak/first_nes
-// Ricoh 2C02 - NES Picture Processing Unit (PPU)
-// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
-// https://en.wikipedia.org/wiki/Picture_Processing_Unit
-// https://wiki.nesdev.com/w/index.php/PPU_registers
-// http://nesdev.com/2C02%20technical%20reference.TXT
-// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018. 
   // Upstart
   // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
 // https://sadistech.com/nesromtool/romdoc.html
@@ -4345,10 +4376,10 @@ ASSEMBLER BEFORE OPTIMIZATION
   .label PPU = $2000
   // NES CPU and audion processing unit (APU)
   .label APU = $4000
-  .label scroll_y = $c
-  .label vblank_hit = $d
+  .label scroll_y = $d
+  .label vblank_hit = $e
   // The random state variable
-  .label rand_state = $a
+  .label rand_state = $b
 .segment Code
   // __start
 __start: {
@@ -4419,46 +4450,49 @@ vblank: {
 }
   // main
 main: {
-    .label __9 = $36
-    .label __10 = $36
-    .label __11 = $36
-    .label __20 = $21
-    .label __23 = $27
-    .label __25 = $29
-    .label __26 = $2b
-    .label __31 = $30
-    .label __32 = $34
-    .label __33 = $f
-    .label __36 = $38
-    .label __44 = $f
-    .label __56 = $30
+    .label __9 = $3b
+    .label __10 = $3b
+    .label __11 = $3b
+    .label __20 = $26
+    .label __23 = $2c
+    .label __25 = $2e
+    .label __26 = $30
+    .label __31 = $35
+    .label __32 = $39
+    .label __33 = $14
+    .label __36 = $3d
+    .label __38 = $10
+    .label __44 = $14
+    .label __56 = $35
     .label i = 2
     .label timer_2 = 4
-    .label h_bar = $e
+    .label h_bar = $f
     .label active_balls = 5
-    .label sprite_idx = 9
-    .label i_1 = 7
-    .label timer = 6
-    .label __59 = $3a
-    .label __60 = $38
-    .label __61 = $11
-    .label __62 = $13
-    .label __63 = $15
-    .label __64 = $17
-    .label __65 = $19
-    .label __66 = $1b
-    .label __67 = $1d
-    .label __68 = $1f
-    .label __69 = $21
-    .label __70 = $27
-    .label __71 = $29
-    .label __72 = $23
-    .label __73 = $25
-    .label __74 = $34
-    .label __75 = $f
-    .label __76 = $2c
-    .label __77 = $2e
-    .label __78 = $32
+    .label sprite_idx = $a
+    .label i_1 = 8
+    .label timer = 7
+    .label __59 = $3f
+    .label __60 = $3d
+    .label __61 = $12
+    .label __62 = $10
+    .label __63 = $16
+    .label __64 = $18
+    .label __65 = $1a
+    .label __66 = $1c
+    .label __67 = $1e
+    .label __68 = $20
+    .label __69 = $22
+    .label __70 = $24
+    .label __71 = $26
+    .label __72 = $2c
+    .label __73 = $2e
+    .label __74 = $28
+    .label __75 = $2a
+    .label __76 = $39
+    .label __77 = $14
+    .label __78 = $31
+    .label __79 = $33
+    .label __80 = $37
     jmp initNES1
     // main::initNES1
   initNES1:
@@ -4569,14 +4603,14 @@ main: {
   __b17:
     // [38] call ppuDataTransfer 
   // Transfer the palette
-    // [129] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
+    // [131] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
   ppuDataTransfer_from___b17:
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<palette
     sta.z ppuDataTransfer.cpuData
     lda #>palette
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<PPU_PALETTE
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>PPU_PALETTE
@@ -4589,14 +4623,14 @@ main: {
   __b19:
     // [40] call ppuDataFill 
   // Fill the PPU attribute table
-    // [142] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
+    // [144] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
   ppuDataFill_from___b19:
-    // [142] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
+    // [144] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
     lda #<$20*$1e
     sta.z ppuDataFill.size
     lda #>$20*$1e
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_NAME_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_NAME_TABLE_0
@@ -4608,14 +4642,14 @@ main: {
     // main::@20
   __b20:
     // [42] call ppuDataFill 
-    // [142] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
+    // [144] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
   ppuDataFill_from___b20:
-    // [142] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
+    // [144] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
     lda #<$40
     sta.z ppuDataFill.size
     lda #>$40
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_ATTRIBUTE_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_ATTRIBUTE_TABLE_0
@@ -4627,14 +4661,14 @@ main: {
     // main::@21
   __b21:
     // [44] call ppuDataTransfer 
-    // [129] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
+    // [131] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
   ppuDataTransfer_from___b21:
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<h_bar_tilemap
     sta.z ppuDataTransfer.cpuData
     lda #>h_bar_tilemap
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<$2040
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>$2040
@@ -4683,9 +4717,11 @@ main: {
     // [50] phi (byte) main::timer#3 = (byte) 0 [phi:main::@1->main::@3#0] -- vbuz1=vbuc1 
     lda #0
     sta.z timer
-    // [50] phi (byte) main::active_balls#2 = (byte) 0 [phi:main::@1->main::@3#1] -- vbuz1=vbuc1 
-    lda #0
+    // [50] phi (word) main::active_balls#2 = (word) 0 [phi:main::@1->main::@3#1] -- vwuz1=vwuc1 
+    lda #<0
     sta.z active_balls
+    lda #>0
+    sta.z active_balls+1
     // [50] phi (byte) main::timer_2#2 = (byte) 0 [phi:main::@1->main::@3#2] -- vbuz1=vbuc1 
     lda #0
     sta.z timer_2
@@ -4708,10 +4744,13 @@ main: {
     eor.z h_bar
     // [54] (volatile byte) scroll_y ← (byte~) main::$14 -- vbuz1=vbuaa 
     sta.z scroll_y
-    // [55] if((byte) main::active_balls#2>=(byte) $32) goto main::@5 -- vbuz1_ge_vbuc1_then_la1 
+    // [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5 -- vwuz1_ge_vbuc1_then_la1 
+    lda.z active_balls+1
+    bne __b5_from___b4
     lda.z active_balls
     cmp #$32
     bcs __b5_from___b4
+  !:
     jmp __b15
     // main::@15
   __b15:
@@ -4725,45 +4764,73 @@ main: {
     jmp __b16
     // main::@16
   __b16:
-    // [58] (byte) main::active_balls#1 ← ++ (byte) main::active_balls#2 -- vbuz1=_inc_vbuz1 
+    // [58] (word) main::active_balls#1 ← ++ (word) main::active_balls#2 -- vwuz1=_inc_vwuz1 
     inc.z active_balls
-    // [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3 -- vbuxx=vbuz1_rol_3 
+    bne !+
+    inc.z active_balls+1
+  !:
+    // [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z active_balls
     asl
-    asl
-    asl
-    tax
-    // [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 
+    sta.z __38
+    lda.z active_balls+1
+    rol
+    sta.z __38+1
+    asl.z __38
+    rol.z __38+1
+    asl.z __38
+    rol.z __38+1
+    // [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __38
+    clc
+    adc #<balls
+    sta.z __61
+    lda.z __38+1
+    adc #>balls
+    sta.z __61+1
+    // [61] *((word*~) main::$61) ← (byte) 0 -- _deref_pwuz1=vbuc1 
     lda #0
-    sta balls,x
+    ldy #0
+    sta (__61),y
+    tya
+    iny
+    sta (__61),y
+    // [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz1 
+    clc
+    lda.z __62
+    adc #<balls+2
+    sta.z __62
+    lda.z __62+1
+    adc #>balls+2
+    sta.z __62+1
+    // [63] *((word*~) main::$62) ← (byte) 0 -- _deref_pwuz1=vbuc1 
     lda #0
-    sta balls+1,x
-    // [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 
-    lda #0
-    sta balls+2,x
-    lda #0
-    sta balls+2+1,x
-    // [62] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
+    ldy #0
+    sta (__62),y
+    tya
+    iny
+    sta (__62),y
+    // [64] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
   __b5_from___b16:
-    // [62] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
+    // [64] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
     lda #0
     sta.z timer
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
     jmp __b5
-    // [62] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
+    // [64] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
   __b5_from___b25:
   __b5_from___b4:
-    // [62] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
+    // [64] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
     jmp __b5
     // main::@5
   __b5:
-    // [63] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
+    // [65] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
   __b6_from___b5:
-    // [63] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
+    // [65] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
     lda #0
     sta.z sprite_idx
-    // [63] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
+    // [65] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
     lda #<0
     sta.z i_1
     lda #>0
@@ -4771,8 +4838,10 @@ main: {
     jmp __b6
     // main::@6
   __b6:
-    // [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7 -- vwuz1_lt_vbuz2_then_la1 
+    // [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i_1+1
+    cmp.z active_balls+1
+    bcc __b7
     bne !+
     lda.z i_1
     cmp.z active_balls
@@ -4781,35 +4850,35 @@ main: {
     jmp __b8
     // main::@8
   __b8:
-    // [65] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
+    // [67] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
     lda #$98
     sta $2001
     jmp __b13
     // main::@13
   __b13:
-    // [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
+    // [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
     lda #0
     cmp.z vblank_hit
     beq __b13
     jmp __b14
     // main::@14
   __b14:
-    // [67] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
+    // [69] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
     // wait for vblank
     lda #0
     sta.z vblank_hit
-    // [68] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
+    // [70] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
     lda #$18
     sta $2001
     // [50] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
   __b3_from___b14:
     // [50] phi (byte) main::timer#3 = (byte) main::timer#15 [phi:main::@14->main::@3#0] -- register_copy 
-    // [50] phi (byte) main::active_balls#2 = (byte) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
+    // [50] phi (word) main::active_balls#2 = (word) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
     // [50] phi (byte) main::timer_2#2 = (byte) main::timer_2#1 [phi:main::@14->main::@3#2] -- register_copy 
     jmp __b3
     // main::@7
   __b7:
-    // [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i_1
     asl
     sta.z __44
@@ -4820,22 +4889,6 @@ main: {
     rol.z __44+1
     asl.z __44
     rol.z __44+1
-    // [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls
-    sta.z __61
-    lda.z __44+1
-    adc #>balls
-    sta.z __61+1
-    // [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+4
-    sta.z __62
-    lda.z __44+1
-    adc #>balls+4
-    sta.z __62+1
     // [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -4844,51 +4897,41 @@ main: {
     lda.z __44+1
     adc #>balls
     sta.z __63+1
-    // [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__61),y
-    clc
-    adc (__62),y
-    sta (__63),y
-    iny
-    lda (__61),y
-    adc (__62),y
-    sta (__63),y
-    // [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
-    adc #<balls+6
+    adc #<balls+4
     sta.z __64
     lda.z __44+1
-    adc #>balls+6
+    adc #>balls+4
     sta.z __64+1
-    // [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls
+    sta.z __65
+    lda.z __44+1
+    adc #>balls
+    sta.z __65+1
+    // [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__63),y
+    clc
+    adc (__64),y
+    sta (__65),y
+    iny
+    lda (__63),y
+    adc (__64),y
+    sta (__65),y
+    // [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __65
-    lda.z __44+1
-    adc #>balls+6
-    sta.z __65+1
-    // [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
-    ldy #0
-    lda (__64),y
-    clc
-    adc #<$10
-    sta (__65),y
-    iny
-    lda (__64),y
-    adc #>$10
-    sta (__65),y
-    // [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+2
     sta.z __66
     lda.z __44+1
-    adc #>balls+2
+    adc #>balls+6
     sta.z __66+1
-    // [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
@@ -4896,6 +4939,16 @@ main: {
     lda.z __44+1
     adc #>balls+6
     sta.z __67+1
+    // [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
+    ldy #0
+    lda (__66),y
+    clc
+    adc #<$10
+    sta (__67),y
+    iny
+    lda (__66),y
+    adc #>$10
+    sta (__67),y
     // [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -4904,31 +4957,47 @@ main: {
     lda.z __44+1
     adc #>balls+2
     sta.z __68+1
-    // [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__66),y
+    // [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
     clc
-    adc (__67),y
-    sta (__68),y
+    adc #<balls+6
+    sta.z __69
+    lda.z __44+1
+    adc #>balls+6
+    sta.z __69+1
+    // [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls+2
+    sta.z __70
+    lda.z __44+1
+    adc #>balls+2
+    sta.z __70+1
+    // [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__68),y
+    clc
+    adc (__69),y
+    sta (__70),y
     iny
-    lda (__66),y
-    adc (__67),y
-    sta (__68),y
-    // [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda (__68),y
+    adc (__69),y
+    sta (__70),y
+    // [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls
-    sta.z __69
+    sta.z __71
     lda.z __44+1
     adc #>balls
-    sta.z __69+1
-    // [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __71+1
+    // [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__20),y
     sta.z __20
     dey
     sty.z __20+1
-    // [83] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
+    // [85] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
     lda.z __20+1
     bne __b9
     lda.z __20
@@ -4938,67 +5007,67 @@ main: {
     jmp __b11
     // main::@11
   __b11:
-    // [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __72
+    sta.z __74
     lda.z __44+1
     adc #>balls+4
-    sta.z __72+1
-    // [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __74+1
+    // [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __73
+    sta.z __75
     lda.z __44+1
     adc #>balls+4
-    sta.z __73+1
-    // [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __75+1
+    // [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     iny
     lda #>$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     jmp __b9
     // main::@9
   __b9:
-    // [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __70
+    sta.z __72
     lda.z __44+1
     adc #>balls+2
-    sta.z __70+1
-    // [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __72+1
+    // [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__23),y
     sta.z __23
     dey
     sty.z __23+1
-    // [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __71
+    sta.z __73
     lda.z __44+1
     adc #>balls+2
-    sta.z __71+1
-    // [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __73+1
+    // [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__25),y
     sta.z __25
     dey
     sty.z __25+1
-    // [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
+    // [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
     lax.z h_bar
     axs #-[8]
     stx.z __26
-    // [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
+    // [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
     lda.z __23+1
     bne !+
     lda.z __23
@@ -5008,7 +5077,7 @@ main: {
     jmp __b24
     // main::@24
   __b24:
-    // [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
+    // [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
     lda.z __25+1
     bne __b10
     lda.z __25
@@ -5018,147 +5087,147 @@ main: {
     jmp __b12
     // main::@12
   __b12:
-    // [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __76
+    sta.z __78
     lda.z __44+1
     adc #>balls+6
-    sta.z __76+1
-    // [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __78+1
+    // [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __77
+    sta.z __79
     lda.z __44+1
     adc #>balls+6
-    sta.z __77+1
-    // [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __79+1
+    // [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     iny
     lda #>$ffff
-    eor (__76),y
-    sta (__77),y
-    // [97] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 
+    eor (__78),y
+    sta (__79),y
+    // [99] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 
     lda.z h_bar
     sec
     sbc #2
-    // [98] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa 
+    // [100] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa 
     sta.z __56
     lda #0
     sta.z __56+1
-    // [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 
+    // [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 
     lda.z __31
     sta.z __31+1
     lda #0
     sta.z __31
-    // [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __78
+    sta.z __80
     lda.z __44+1
     adc #>balls+2
-    sta.z __78+1
-    // [101] *((word*~) main::$78) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
+    sta.z __80+1
+    // [103] *((word*~) main::$80) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __31
-    sta (__78),y
+    sta (__80),y
     iny
     lda.z __31+1
-    sta (__78),y
+    sta (__80),y
     jmp __b10
     // main::@10
   __b10:
-    // [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __74
+    sta.z __76
     lda.z __44+1
     adc #>balls+2
-    sta.z __74+1
-    // [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __76+1
+    // [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__32),y
     sta.z __32
     dey
     sty.z __32+1
-    // [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 
+    // [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 
     lda.z sprite_idx
     asl
     asl
     tax
-    // [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
+    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
     lda.z __32
     sta SPRITE_BUFFER,x
-    // [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 
+    // [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #$a
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,x
-    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 
+    // [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #3
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,x
-    // [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz1 
+    // [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz1 
     clc
-    lda.z __75
+    lda.z __77
     adc #<balls
-    sta.z __75
-    lda.z __75+1
+    sta.z __77
+    lda.z __77+1
     adc #>balls
-    sta.z __75+1
-    // [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __77+1
+    // [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__33),y
     sta.z __33
     dey
     sty.z __33+1
-    // [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
+    // [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
     lda.z __33
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,x
-    // [111] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
+    // [113] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
     inc.z sprite_idx
-    // [112] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
+    // [114] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
     inc.z i_1
     bne !+
     inc.z i_1+1
   !:
-    // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
+    // [65] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
   __b6_from___b10:
-    // [63] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
-    // [63] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
+    // [65] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
+    // [65] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
     jmp __b6
     // main::@25
   __b25:
-    // [113] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx 
+    // [115] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx 
     stx.z timer
     jmp __b5_from___b25
-    // [114] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+    // [116] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
   __b2_from___b1:
     jmp __b2
     // main::@2
   __b2:
-    // [115] call rand 
-    // [152] phi from main::@2 to rand [phi:main::@2->rand]
+    // [117] call rand 
+    // [154] phi from main::@2 to rand [phi:main::@2->rand]
   rand_from___b2:
-    // [152] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
+    // [154] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
     jsr rand
-    // [116] (word) rand::return#2 ← (word) rand::return#0
+    // [118] (word) rand::return#2 ← (word) rand::return#0
     jmp __b22
     // main::@22
   __b22:
-    // [117] (word~) main::$9 ← (word) rand::return#2
-    // [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 
+    // [119] (word~) main::$9 ← (word) rand::return#2
+    // [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 
     lda.z __10
     and #<$3ff
     sta.z __10
     lda.z __10+1
     and #>$3ff
     sta.z __10+1
-    // [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i
     asl
     sta.z __36
@@ -5169,7 +5238,7 @@ main: {
     rol.z __36+1
     asl.z __36
     rol.z __36+1
-    // [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
+    // [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __36
     clc
     adc #<balls+4
@@ -5177,28 +5246,28 @@ main: {
     lda.z __36+1
     adc #>balls+4
     sta.z __59+1
-    // [121] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
+    // [123] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __10
     sta (__59),y
     iny
     lda.z __10+1
     sta (__59),y
-    // [122] call rand 
-    // [152] phi from main::@22 to rand [phi:main::@22->rand]
+    // [124] call rand 
+    // [154] phi from main::@22 to rand [phi:main::@22->rand]
   rand_from___b22:
-    // [152] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
+    // [154] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
     jsr rand
-    // [123] (word) rand::return#3 ← (word) rand::return#0
+    // [125] (word) rand::return#3 ← (word) rand::return#0
     jmp __b23
     // main::@23
   __b23:
-    // [124] (word~) main::$11 ← (word) rand::return#3
-    // [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuxx=vwuz1_band_vbuc1 
+    // [126] (word~) main::$11 ← (word) rand::return#3
+    // [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuxx=vwuz1_band_vbuc1 
     lda #$ff
     and.z __11
     tax
-    // [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz1 
+    // [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz1 
     clc
     lda.z __60
     adc #<balls+6
@@ -5206,14 +5275,14 @@ main: {
     lda.z __60+1
     adc #>balls+6
     sta.z __60+1
-    // [127] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuxx 
+    // [129] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuxx 
     txa
     ldy #0
     sta (__60),y
     tya
     iny
     sta (__60),y
-    // [128] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
+    // [130] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
@@ -5229,31 +5298,31 @@ main: {
 // - ppuData : Pointer in the PPU memory
 // - cpuData : Pointer to the CPU memory (RAM of ROM)
 // - size : The number of bytes to transfer
-// ppuDataTransfer(void* zp($11) cpuData)
+// ppuDataTransfer(void* zp($12) cpuData)
 ppuDataTransfer: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label cpuSrc = $11
-    .label i = $13
-    .label cpuData = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label cpuSrc = $12
+    .label i = $14
+    .label cpuData = $12
     jmp ppuDataPrepare1
     // ppuDataTransfer::ppuDataPrepare1
   ppuDataPrepare1:
-    // [130] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
+    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
     lda.z ppuDataPrepare1_ppuData+1
-    // [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
+    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
+    // [134] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
     lda.z ppuDataPrepare1_ppuData
-    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
+    // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
     jmp __b3
     // ppuDataTransfer::@3
   __b3:
-    // [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
-    // [135] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
+    // [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
+    // [137] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
   __b1_from___b3:
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     lda #>0
@@ -5261,7 +5330,7 @@ ppuDataTransfer: {
     jmp __b1
     // ppuDataTransfer::@1
   __b1:
-    // [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
+    // [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
     lda.z i+1
     bne !+
     lda.z i
@@ -5271,60 +5340,60 @@ ppuDataTransfer: {
     jmp __breturn
     // ppuDataTransfer::@return
   __breturn:
-    // [137] return 
+    // [139] return 
     rts
     // ppuDataTransfer::@2
   __b2:
-    // [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 
+    // [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 
     ldy #0
     lda (cpuSrc),y
     jmp ppuDataPut1
     // ppuDataTransfer::ppuDataPut1
   ppuDataPut1:
-    // [139] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
+    // [141] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     jmp __b4
     // ppuDataTransfer::@4
   __b4:
-    // [140] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
+    // [142] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
     inc.z cpuSrc
     bne !+
     inc.z cpuSrc+1
   !:
-    // [141] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
+    // [143] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [135] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
+    // [137] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
   __b1_from___b4:
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
     jmp __b1
 }
   // ppuDataFill
 // Fill a number of bytes in the PPU memory
 // - ppuData : Pointer in the PPU memory
 // - size : The number of bytes to transfer
-// ppuDataFill(word zp($11) size)
+// ppuDataFill(word zp($12) size)
 ppuDataFill: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label i = $13
-    .label size = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label i = $14
+    .label size = $12
     jmp ppuDataPrepare1
     // ppuDataFill::ppuDataPrepare1
   ppuDataPrepare1:
-    // [143] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
+    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
     lda.z ppuDataPrepare1_ppuData+1
-    // [144] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
+    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
+    // [147] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
     lda.z ppuDataPrepare1_ppuData
-    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
+    // [148] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [147] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
+    // [149] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
   __b1_from_ppuDataPrepare1:
-    // [147] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
+    // [149] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     lda #>0
@@ -5333,7 +5402,7 @@ ppuDataFill: {
   // Transfer to PPU
     // ppuDataFill::@1
   __b1:
-    // [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
+    // [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i+1
     cmp.z size+1
     bcc ppuDataPut1
@@ -5345,24 +5414,24 @@ ppuDataFill: {
     jmp __breturn
     // ppuDataFill::@return
   __breturn:
-    // [149] return 
+    // [151] return 
     rts
     // ppuDataFill::ppuDataPut1
   ppuDataPut1:
-    // [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
+    // [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
     lda #0
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     jmp __b2
     // ppuDataFill::@2
   __b2:
-    // [151] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
+    // [153] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [147] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
+    // [149] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
   __b1_from___b2:
-    // [147] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
+    // [149] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
     jmp __b1
 }
   // rand
@@ -5371,11 +5440,11 @@ ppuDataFill: {
 // Information https://en.wikipedia.org/wiki/Xorshift
 // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html
 rand: {
-    .label __0 = $3c
-    .label __1 = $3e
-    .label __2 = $40
-    .label return = $36
-    // [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
+    .label __0 = $41
+    .label __1 = $43
+    .label __2 = $45
+    .label return = $3b
+    // [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
     lda.z rand_state+1
     lsr
     lda.z rand_state
@@ -5384,39 +5453,39 @@ rand: {
     lda #0
     ror
     sta.z __0
-    // [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __0
     sta.z rand_state
     lda.z rand_state+1
     eor.z __0+1
     sta.z rand_state+1
-    // [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
+    // [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
     lda.z rand_state+1
     lsr
     sta.z __1
     lda #0
     sta.z __1+1
-    // [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __1
     sta.z rand_state
     lda.z rand_state+1
     eor.z __1+1
     sta.z rand_state+1
-    // [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
+    // [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
     lda.z rand_state
     sta.z __2+1
     lda #0
     sta.z __2
-    // [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __2
     sta.z rand_state
     lda.z rand_state+1
     eor.z __2+1
     sta.z rand_state+1
-    // [159] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
+    // [161] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
     lda.z rand_state
     sta.z return
     lda.z rand_state+1
@@ -5424,7 +5493,7 @@ rand: {
     jmp __breturn
     // rand::@return
   __breturn:
-    // [160] return 
+    // [162] return 
     rts
 }
   // File Data
@@ -5510,11 +5579,11 @@ Removing instruction lda #0
 Removing instruction lda #0
 Removing instruction lda #<0
 Removing instruction lda #>0
+Removing instruction lda #<0
+Removing instruction lda #>0
 Removing instruction lda #0
-Removing instruction lda #0
-Removing instruction lda #0
-Removing instruction lda #0
-Removing instruction lda #0
+Replacing instruction ldy #0 with TAY
+Replacing instruction ldy #0 with TAY
 Removing instruction lda #<0
 Removing instruction lda #>0
 Replacing instruction lda.z __20+1 with TYA
@@ -5528,6 +5597,7 @@ Replacing label initNES1___b1_from_initNES1___b1 with initNES1___b1
 Replacing label initNES1_waitForVBlank2___b1 with initNES1_waitForVBlank2
 Replacing label __b2_from___b1 with __b2
 Replacing label __b5_from___b4 with __b5
+Replacing label __b5_from___b4 with __b5
 Replacing label __b3 with __b4
 Replacing label __b5_from___b25 with __b5
 Removing instruction __b1_from___init1:
@@ -5606,8 +5676,8 @@ Succesful ASM optimization Pass5NextJumpElimination
 Removing instruction lda #0
 Removing instruction lda #0
 Succesful ASM optimization Pass5UnnecesaryLoadElimination
-Fixing long branch [246] bcc __b2 to bcs
-Fixing long branch [271] bne __b25 to beq
+Fixing long branch [239] bcc __b2 to bcs
+Fixing long branch [268] bne __b25 to beq
 
 FINAL SYMBOL TABLE
 (word) $0::x_position
@@ -5685,44 +5755,46 @@ FINAL SYMBOL TABLE
 (const struct $0*) balls[(number) $40]  = { fill( $40, 0) }
 (const to_nomodify byte*) h_bar_tilemap[]  = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1 }
 (signed word()) main()
-(word~) main::$10 zp[2]:54 67.33333333333333
-(word~) main::$11 zp[2]:54 202.0
+(word~) main::$10 zp[2]:59 67.33333333333333
+(word~) main::$11 zp[2]:59 202.0
 (byte~) main::$12 reg byte x 101.0
 (byte~) main::$14 reg byte a 202.0
-(word~) main::$20 zp[2]:33 2002.0
-(word~) main::$23 zp[2]:39 500.5
-(word~) main::$25 zp[2]:41 667.3333333333334
-(byte~) main::$26 zp[1]:43 1001.0
+(word~) main::$20 zp[2]:38 2002.0
+(word~) main::$23 zp[2]:44 500.5
+(word~) main::$25 zp[2]:46 667.3333333333334
+(byte~) main::$26 zp[1]:48 1001.0
 (byte~) main::$30 reg byte a 1001.0
-(word~) main::$31 zp[2]:48 1001.0
-(word~) main::$32 zp[2]:52 500.5
-(word~) main::$33 zp[2]:15 1001.0
-(word~) main::$36 zp[2]:56 43.285714285714285
-(byte~) main::$38 reg byte x 151.5
-(word~) main::$44 zp[2]:15 487.6666666666668
+(word~) main::$31 zp[2]:53 1001.0
+(word~) main::$32 zp[2]:57 500.5
+(word~) main::$33 zp[2]:20 1001.0
+(word~) main::$36 zp[2]:61 43.285714285714285
+(word~) main::$38 zp[2]:16 101.0
+(word~) main::$44 zp[2]:20 487.6666666666668
 (byte~) main::$48 reg byte x 834.1666666666667
-(word~) main::$56 zp[2]:48 2002.0
-(word*~) main::$59 zp[2]:58 202.0
-(word*~) main::$60 zp[2]:56 202.0
-(word*~) main::$61 zp[2]:17 667.3333333333334
-(word*~) main::$62 zp[2]:19 1001.0
-(word*~) main::$63 zp[2]:21 2002.0
-(word*~) main::$64 zp[2]:23 1001.0
-(word*~) main::$65 zp[2]:25 2002.0
-(word*~) main::$66 zp[2]:27 667.3333333333334
-(word*~) main::$67 zp[2]:29 1001.0
-(word*~) main::$68 zp[2]:31 2002.0
-(word*~) main::$69 zp[2]:33 2002.0
-(word*~) main::$70 zp[2]:39 2002.0
-(word*~) main::$71 zp[2]:41 2002.0
-(word*~) main::$72 zp[2]:35 1001.0
-(word*~) main::$73 zp[2]:37 2002.0
-(word*~) main::$74 zp[2]:52 2002.0
-(word*~) main::$75 zp[2]:15 2002.0
-(word*~) main::$76 zp[2]:44 1001.0
-(word*~) main::$77 zp[2]:46 2002.0
-(word*~) main::$78 zp[2]:50 2002.0
-(word~) main::$9 zp[2]:54 202.0
+(word~) main::$56 zp[2]:53 2002.0
+(word*~) main::$59 zp[2]:63 202.0
+(word*~) main::$60 zp[2]:61 202.0
+(word*~) main::$61 zp[2]:18 202.0
+(word*~) main::$62 zp[2]:16 202.0
+(word*~) main::$63 zp[2]:22 667.3333333333334
+(word*~) main::$64 zp[2]:24 1001.0
+(word*~) main::$65 zp[2]:26 2002.0
+(word*~) main::$66 zp[2]:28 1001.0
+(word*~) main::$67 zp[2]:30 2002.0
+(word*~) main::$68 zp[2]:32 667.3333333333334
+(word*~) main::$69 zp[2]:34 1001.0
+(word*~) main::$70 zp[2]:36 2002.0
+(word*~) main::$71 zp[2]:38 2002.0
+(word*~) main::$72 zp[2]:44 2002.0
+(word*~) main::$73 zp[2]:46 2002.0
+(word*~) main::$74 zp[2]:40 1001.0
+(word*~) main::$75 zp[2]:42 2002.0
+(word*~) main::$76 zp[2]:57 2002.0
+(word*~) main::$77 zp[2]:20 2002.0
+(word*~) main::$78 zp[2]:49 1001.0
+(word*~) main::$79 zp[2]:51 2002.0
+(word*~) main::$80 zp[2]:55 2002.0
+(word~) main::$9 zp[2]:59 202.0
 (label) main::@1
 (label) main::@10
 (label) main::@11
@@ -5748,18 +5820,18 @@ FINAL SYMBOL TABLE
 (label) main::@7
 (label) main::@8
 (label) main::@9
-(byte) main::active_balls
-(byte) main::active_balls#1 active_balls zp[1]:5 75.75
-(byte) main::active_balls#2 active_balls zp[1]:5 56.11111111111111
-(byte) main::active_balls#8 active_balls zp[1]:5 27.54901960784314
+(word) main::active_balls
+(word) main::active_balls#1 active_balls zp[2]:5 50.5
+(word) main::active_balls#2 active_balls zp[2]:5 56.11111111111111
+(word) main::active_balls#8 active_balls zp[2]:5 27.54901960784314
 (label) main::enableVideoOutput1
 (byte) main::h_bar
-(byte) main::h_bar#1 h_bar zp[1]:14 55.258620689655174
+(byte) main::h_bar#1 h_bar zp[1]:15 53.41666666666667
 (word) main::i
-(word) main::i#10 i_1 zp[2]:7 88.97777777777777
+(word) main::i#10 i_1 zp[2]:8 88.97777777777777
 (word) main::i#14 i zp[2]:2 25.25
 (word) main::i#2 i zp[2]:2 202.0
-(word) main::i#4 i_1 zp[2]:7 2002.0
+(word) main::i#4 i_1 zp[2]:8 2002.0
 (label) main::initNES1
 (label) main::initNES1_@1
 (label) main::initNES1_@7
@@ -5777,15 +5849,15 @@ FINAL SYMBOL TABLE
 (label) main::initNES1_waitForVBlank2_@1
 (signed word) main::return
 (byte) main::sprite_idx
-(byte) main::sprite_idx#2 sprite_idx zp[1]:9 1001.0
-(byte) main::sprite_idx#3 sprite_idx zp[1]:9 68.25
+(byte) main::sprite_idx#2 sprite_idx zp[1]:10 1001.0
+(byte) main::sprite_idx#3 sprite_idx zp[1]:10 68.25
 (byte) main::timer
 (byte) main::timer#1 reg byte x 101.0
-(byte) main::timer#15 timer zp[1]:6 5.9411764705882355
-(byte) main::timer#21 timer zp[1]:6 202.0
-(byte) main::timer#3 timer zp[1]:6 57.714285714285715
+(byte) main::timer#15 timer zp[1]:7 5.9411764705882355
+(byte) main::timer#21 timer zp[1]:7 202.0
+(byte) main::timer#3 timer zp[1]:7 57.714285714285715
 (byte) main::timer_2
-(byte) main::timer_2#1 timer_2 zp[1]:4 4.80952380952381
+(byte) main::timer_2#1 timer_2 zp[1]:4 4.661538461538462
 (byte) main::timer_2#2 timer_2 zp[1]:4 202.0
 (const to_nomodify byte*) palette[]  = { (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4 }
 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size)
@@ -5793,18 +5865,18 @@ FINAL SYMBOL TABLE
 (label) ppuDataFill::@2
 (label) ppuDataFill::@return
 (word) ppuDataFill::i
-(word) ppuDataFill::i#1 i zp[2]:19 2002.0
-(word) ppuDataFill::i#2 i zp[2]:19 1001.0
+(word) ppuDataFill::i#1 i zp[2]:20 2002.0
+(word) ppuDataFill::i#2 i zp[2]:20 1001.0
 (nomodify void*) ppuDataFill::ppuData
 (label) ppuDataFill::ppuDataPrepare1
 (byte~) ppuDataFill::ppuDataPrepare1_$0 reg byte a 202.0
 (byte~) ppuDataFill::ppuDataPrepare1_$1 reg byte a 202.0
 (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData
-(nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:15 67.33333333333333
+(nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:16 67.33333333333333
 (label) ppuDataFill::ppuDataPut1
 (byte) ppuDataFill::ppuDataPut1_val
 (word) ppuDataFill::size
-(word) ppuDataFill::size#3 size zp[2]:17 111.22222222222223
+(word) ppuDataFill::size#3 size zp[2]:18 111.22222222222223
 (byte) ppuDataFill::val
 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size)
 (label) ppuDataTransfer::@1
@@ -5813,20 +5885,20 @@ FINAL SYMBOL TABLE
 (label) ppuDataTransfer::@4
 (label) ppuDataTransfer::@return
 (nomodify void*) ppuDataTransfer::cpuData
-(nomodify void*) ppuDataTransfer::cpuData#2 cpuData zp[2]:17
+(nomodify void*) ppuDataTransfer::cpuData#2 cpuData zp[2]:18
 (byte*) ppuDataTransfer::cpuSrc
-(byte*) ppuDataTransfer::cpuSrc#1 cpuSrc zp[2]:17 1001.0
-(byte*) ppuDataTransfer::cpuSrc#2 cpuSrc zp[2]:17 776.0
-(byte*) ppuDataTransfer::cpuSrc#6 cpuSrc zp[2]:17 202.0
+(byte*) ppuDataTransfer::cpuSrc#1 cpuSrc zp[2]:18 1001.0
+(byte*) ppuDataTransfer::cpuSrc#2 cpuSrc zp[2]:18 776.0
+(byte*) ppuDataTransfer::cpuSrc#6 cpuSrc zp[2]:18 202.0
 (word) ppuDataTransfer::i
-(word) ppuDataTransfer::i#1 i zp[2]:19 2002.0
-(word) ppuDataTransfer::i#2 i zp[2]:19 600.5999999999999
+(word) ppuDataTransfer::i#1 i zp[2]:20 2002.0
+(word) ppuDataTransfer::i#2 i zp[2]:20 600.5999999999999
 (nomodify void*) ppuDataTransfer::ppuData
 (label) ppuDataTransfer::ppuDataPrepare1
 (byte~) ppuDataTransfer::ppuDataPrepare1_$0 reg byte a 202.0
 (byte~) ppuDataTransfer::ppuDataPrepare1_$1 reg byte a 202.0
 (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData
-(nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:15 67.33333333333333
+(nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:16 67.33333333333333
 (label) ppuDataTransfer::ppuDataPut1
 (byte) ppuDataTransfer::ppuDataPut1_val
 (byte) ppuDataTransfer::ppuDataPut1_val#0 reg byte a 2002.0
@@ -5842,95 +5914,86 @@ FINAL SYMBOL TABLE
 (byte) printf_format_string::justify_left
 (byte) printf_format_string::min_length
 (word()) rand()
-(word~) rand::$0 zp[2]:60 2002.0
-(word~) rand::$1 zp[2]:62 2002.0
-(word~) rand::$2 zp[2]:64 2002.0
+(word~) rand::$0 zp[2]:65 2002.0
+(word~) rand::$1 zp[2]:67 2002.0
+(word~) rand::$2 zp[2]:69 2002.0
 (label) rand::@return
 (word) rand::return
-(word) rand::return#0 return zp[2]:54 300.75
-(word) rand::return#2 return zp[2]:54 202.0
-(word) rand::return#3 return zp[2]:54 202.0
+(word) rand::return#0 return zp[2]:59 300.75
+(word) rand::return#2 return zp[2]:59 202.0
+(word) rand::return#3 return zp[2]:59 202.0
 (word) rand_state
-(word) rand_state#0 rand_state zp[2]:10 1501.5
-(word) rand_state#1 rand_state zp[2]:10 1501.5
-(word) rand_state#10 rand_state zp[2]:10 1102.0
-(word) rand_state#11 rand_state zp[2]:10 129.64705882352942
-(word) rand_state#17 rand_state zp[2]:10 67.33333333333333
-(volatile byte) scroll_y loadstore zp[1]:12 105.0
+(word) rand_state#0 rand_state zp[2]:11 1501.5
+(word) rand_state#1 rand_state zp[2]:11 1501.5
+(word) rand_state#10 rand_state zp[2]:11 1102.0
+(word) rand_state#11 rand_state zp[2]:11 129.64705882352942
+(word) rand_state#17 rand_state zp[2]:11 67.33333333333333
+(volatile byte) scroll_y loadstore zp[1]:13 105.0
 (const to_nomodify byte*) sine_table[(number) $100]  = { (byte) $40, (byte) $42, (byte) $43, (byte) $45, (byte) $46, (byte) $48, (byte) $49, (byte) $4b, (byte) $4c, (byte) $4e, (byte) $50, (byte) $51, (byte) $53, (byte) $54, (byte) $56, (byte) $57, (byte) $58, (byte) $5a, (byte) $5b, (byte) $5d, (byte) $5e, (byte) $60, (byte) $61, (byte) $62, (byte) $64, (byte) $65, (byte) $66, (byte) $67, (byte) $69, (byte) $6a, (byte) $6b, (byte) $6c, (byte) $6d, (byte) $6e, (byte) $6f, (byte) $70, (byte) $71, (byte) $72, (byte) $73, (byte) $74, (byte) $75, (byte) $76, (byte) $77, (byte) $78, (byte) $78, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7b, (byte) $7c, (byte) $7c, (byte) $7d, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7d, (byte) $7c, (byte) $7c, (byte) $7b, (byte) $7b, (byte) $7a, (byte) $79, (byte) $78, (byte) $78, (byte) $77, (byte) $76, (byte) $75, (byte) $74, (byte) $73, (byte) $72, (byte) $71, (byte) $70, (byte) $6f, (byte) $6e, (byte) $6d, (byte) $6c, (byte) $6b, (byte) $6a, (byte) $69, (byte) $67, (byte) $66, (byte) $65, (byte) $64, (byte) $62, (byte) $61, (byte) $60, (byte) $5e, (byte) $5d, (byte) $5b, (byte) $5a, (byte) $58, (byte) $57, (byte) $56, (byte) $54, (byte) $53, (byte) $51, (byte) $50, (byte) $4e, (byte) $4c, (byte) $4b, (byte) $49, (byte) $48, (byte) $46, (byte) $45, (byte) $43, (byte) $42, (byte) $40, (byte) $3e, (byte) $3d, (byte) $3b, (byte) $3a, (byte) $38, (byte) $37, (byte) $35, (byte) $34, (byte) $32, (byte) $30, (byte) $2f, (byte) $2d, (byte) $2c, (byte) $2a, (byte) $29, (byte) $28, (byte) $26, (byte) $25, (byte) $23, (byte) $22, (byte) $20, (byte) $1f, (byte) $1e, (byte) $1c, (byte) $1b, (byte) $1a, (byte) $19, (byte) $17, (byte) $16, (byte) $15, (byte) $14, (byte) $13, (byte) $12, (byte) $11, (byte) $10, (byte) $f, (byte) $e, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 9, (byte) 8, (byte) 8, (byte) 7, (byte) 6, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 4, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f, (byte) $10, (byte) $11, (byte) $12, (byte) $13, (byte) $14, (byte) $15, (byte) $16, (byte) $17, (byte) $19, (byte) $1a, (byte) $1b, (byte) $1c, (byte) $1e, (byte) $1f, (byte) $20, (byte) $22, (byte) $23, (byte) $25, (byte) $26, (byte) $28, (byte) $29, (byte) $2a, (byte) $2c, (byte) $2d, (byte) $2f, (byte) $30, (byte) $32, (byte) $34, (byte) $35, (byte) $37, (byte) $38, (byte) $3a, (byte) $3b, (byte) $3d, (byte) $3e }
 interrupt(HARDWARE_STACK)(void()) vblank()
 (label) vblank::@1
 (label) vblank::@return
 (label) vblank::ppuSpriteBufferDmaTransfer1
 (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer
-(volatile byte) vblank_hit loadstore zp[1]:13 9.008130081300813
+(volatile byte) vblank_hit loadstore zp[1]:14 8.863999999999999
 
 reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ]
 zp[2]:2 [ main::i#14 main::i#2 ]
 zp[1]:4 [ main::timer_2#2 main::timer_2#1 ]
-zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ]
-zp[2]:7 [ main::i#10 main::i#4 ]
-zp[1]:9 [ main::sprite_idx#3 main::sprite_idx#2 ]
-zp[2]:10 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
-zp[1]:12 [ scroll_y ]
-zp[1]:13 [ vblank_hit ]
+zp[2]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
+zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
+zp[2]:8 [ main::i#10 main::i#4 ]
+zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
+zp[2]:11 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
+zp[1]:13 [ scroll_y ]
+zp[1]:14 [ vblank_hit ]
 reg byte a [ main::initNES1_waitForVBlank1_$0 ]
 reg byte a [ main::initNES1_waitForVBlank2_$0 ]
-zp[1]:14 [ main::h_bar#1 ]
+zp[1]:15 [ main::h_bar#1 ]
 reg byte a [ main::$14 ]
 reg byte x [ main::timer#1 ]
-reg byte x [ main::$38 ]
-zp[2]:15 [ main::$44 main::$75 main::$33 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
-zp[2]:17 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
-zp[2]:19 [ main::$62 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
-zp[2]:21 [ main::$63 ]
-zp[2]:23 [ main::$64 ]
-zp[2]:25 [ main::$65 ]
-zp[2]:27 [ main::$66 ]
-zp[2]:29 [ main::$67 ]
-zp[2]:31 [ main::$68 ]
-zp[2]:33 [ main::$69 main::$20 ]
-zp[2]:35 [ main::$72 ]
-zp[2]:37 [ main::$73 ]
-zp[2]:39 [ main::$70 main::$23 ]
-zp[2]:41 [ main::$71 main::$25 ]
-zp[1]:43 [ main::$26 ]
-zp[2]:44 [ main::$76 ]
-zp[2]:46 [ main::$77 ]
+zp[2]:16 [ main::$38 main::$62 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
+zp[2]:18 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
+zp[2]:20 [ main::$44 main::$77 main::$33 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
+zp[2]:22 [ main::$63 ]
+zp[2]:24 [ main::$64 ]
+zp[2]:26 [ main::$65 ]
+zp[2]:28 [ main::$66 ]
+zp[2]:30 [ main::$67 ]
+zp[2]:32 [ main::$68 ]
+zp[2]:34 [ main::$69 ]
+zp[2]:36 [ main::$70 ]
+zp[2]:38 [ main::$71 main::$20 ]
+zp[2]:40 [ main::$74 ]
+zp[2]:42 [ main::$75 ]
+zp[2]:44 [ main::$72 main::$23 ]
+zp[2]:46 [ main::$73 main::$25 ]
+zp[1]:48 [ main::$26 ]
+zp[2]:49 [ main::$78 ]
+zp[2]:51 [ main::$79 ]
 reg byte a [ main::$30 ]
-zp[2]:48 [ main::$56 main::$31 ]
-zp[2]:50 [ main::$78 ]
-zp[2]:52 [ main::$74 main::$32 ]
+zp[2]:53 [ main::$56 main::$31 ]
+zp[2]:55 [ main::$80 ]
+zp[2]:57 [ main::$76 main::$32 ]
 reg byte x [ main::$48 ]
-zp[2]:54 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
-zp[2]:56 [ main::$36 main::$60 ]
-zp[2]:58 [ main::$59 ]
+zp[2]:59 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
+zp[2]:61 [ main::$36 main::$60 ]
+zp[2]:63 [ main::$59 ]
 reg byte x [ main::$12 ]
 reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ]
 reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ]
 reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ]
 reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ]
 reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ]
-zp[2]:60 [ rand::$0 ]
-zp[2]:62 [ rand::$1 ]
-zp[2]:64 [ rand::$2 ]
+zp[2]:65 [ rand::$0 ]
+zp[2]:67 [ rand::$1 ]
+zp[2]:69 [ rand::$2 ]
 
 
 FINAL ASSEMBLER
-Score: 85193
+Score: 86693
 
   // File Comments
-//#pragma emulator("java -jar /Applications/Nintaco_bin_2020-05-01/Nintaco.jar")
-// Nintendo Entertainment System (NES
-// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
-// https://github.com/gregkrsak/first_nes
-// Ricoh 2C02 - NES Picture Processing Unit (PPU)
-// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
-// https://en.wikipedia.org/wiki/Picture_Processing_Unit
-// https://wiki.nesdev.com/w/index.php/PPU_registers
-// http://nesdev.com/2C02%20technical%20reference.TXT
-// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018. 
   // Upstart
   // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
 // https://sadistech.com/nesromtool/romdoc.html
@@ -6001,10 +6064,10 @@ Score: 85193
   .label PPU = $2000
   // NES CPU and audion processing unit (APU)
   .label APU = $4000
-  .label scroll_y = $c
-  .label vblank_hit = $d
+  .label scroll_y = $d
+  .label vblank_hit = $e
   // The random state variable
-  .label rand_state = $a
+  .label rand_state = $b
 .segment Code
   // __start
 __start: {
@@ -6068,46 +6131,49 @@ vblank: {
 }
   // main
 main: {
-    .label __9 = $36
-    .label __10 = $36
-    .label __11 = $36
-    .label __20 = $21
-    .label __23 = $27
-    .label __25 = $29
-    .label __26 = $2b
-    .label __31 = $30
-    .label __32 = $34
-    .label __33 = $f
-    .label __36 = $38
-    .label __44 = $f
-    .label __56 = $30
+    .label __9 = $3b
+    .label __10 = $3b
+    .label __11 = $3b
+    .label __20 = $26
+    .label __23 = $2c
+    .label __25 = $2e
+    .label __26 = $30
+    .label __31 = $35
+    .label __32 = $39
+    .label __33 = $14
+    .label __36 = $3d
+    .label __38 = $10
+    .label __44 = $14
+    .label __56 = $35
     .label i = 2
     .label timer_2 = 4
-    .label h_bar = $e
+    .label h_bar = $f
     .label active_balls = 5
-    .label sprite_idx = 9
-    .label i_1 = 7
-    .label timer = 6
-    .label __59 = $3a
-    .label __60 = $38
-    .label __61 = $11
-    .label __62 = $13
-    .label __63 = $15
-    .label __64 = $17
-    .label __65 = $19
-    .label __66 = $1b
-    .label __67 = $1d
-    .label __68 = $1f
-    .label __69 = $21
-    .label __70 = $27
-    .label __71 = $29
-    .label __72 = $23
-    .label __73 = $25
-    .label __74 = $34
-    .label __75 = $f
-    .label __76 = $2c
-    .label __77 = $2e
-    .label __78 = $32
+    .label sprite_idx = $a
+    .label i_1 = 8
+    .label timer = 7
+    .label __59 = $3f
+    .label __60 = $3d
+    .label __61 = $12
+    .label __62 = $10
+    .label __63 = $16
+    .label __64 = $18
+    .label __65 = $1a
+    .label __66 = $1c
+    .label __67 = $1e
+    .label __68 = $20
+    .label __69 = $22
+    .label __70 = $24
+    .label __71 = $26
+    .label __72 = $2c
+    .label __73 = $2e
+    .label __74 = $28
+    .label __75 = $2a
+    .label __76 = $39
+    .label __77 = $14
+    .label __78 = $31
+    .label __79 = $33
+    .label __80 = $37
     // main::initNES1
     // asm
     // asm { cld ldx#$ff txs  }
@@ -6205,13 +6271,13 @@ main: {
     // ppuDataTransfer(PPU_PALETTE, palette, sizeof(palette))
     // [38] call ppuDataTransfer 
   // Transfer the palette
-    // [129] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer]
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<palette
     sta.z ppuDataTransfer.cpuData
     lda #>palette
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<PPU_PALETTE
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>PPU_PALETTE
@@ -6222,13 +6288,13 @@ main: {
     // ppuDataFill(PPU_NAME_TABLE_0, 0, 32*30)
     // [40] call ppuDataFill 
   // Fill the PPU attribute table
-    // [142] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
-    // [142] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
+    // [144] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill]
+    // [144] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 
     lda #<$20*$1e
     sta.z ppuDataFill.size
     lda #>$20*$1e
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_NAME_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_NAME_TABLE_0
@@ -6238,13 +6304,13 @@ main: {
     // main::@20
     // ppuDataFill(PPU_ATTRIBUTE_TABLE_0, 0, 0x40)
     // [42] call ppuDataFill 
-    // [142] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
-    // [142] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
+    // [144] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill]
+    // [144] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 
     lda #<$40
     sta.z ppuDataFill.size
     lda #>$40
     sta.z ppuDataFill.size+1
-    // [142] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
+    // [144] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 
     lda #<PPU_ATTRIBUTE_TABLE_0
     sta.z ppuDataFill.ppuDataPrepare1_ppuData
     lda #>PPU_ATTRIBUTE_TABLE_0
@@ -6254,13 +6320,13 @@ main: {
     // main::@21
     // ppuDataTransfer(0x2040, h_bar_tilemap, sizeof(h_bar_tilemap))
     // [44] call ppuDataTransfer 
-    // [129] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
-    // [129] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
+    // [131] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer]
+    // [131] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 
     lda #<h_bar_tilemap
     sta.z ppuDataTransfer.cpuData
     lda #>h_bar_tilemap
     sta.z ppuDataTransfer.cpuData+1
-    // [129] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
+    // [131] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 
     lda #<$2040
     sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
     lda #>$2040
@@ -6306,8 +6372,9 @@ main: {
     // [50] phi (byte) main::timer#3 = (byte) 0 [phi:main::@1->main::@3#0] -- vbuz1=vbuc1 
     lda #0
     sta.z timer
-    // [50] phi (byte) main::active_balls#2 = (byte) 0 [phi:main::@1->main::@3#1] -- vbuz1=vbuc1 
+    // [50] phi (word) main::active_balls#2 = (word) 0 [phi:main::@1->main::@3#1] -- vwuz1=vwuc1 
     sta.z active_balls
+    sta.z active_balls+1
     // [50] phi (byte) main::timer_2#2 = (byte) 0 [phi:main::@1->main::@3#2] -- vbuz1=vbuc1 
     sta.z timer_2
     // main::@3
@@ -6331,10 +6398,13 @@ main: {
     // [54] (volatile byte) scroll_y ← (byte~) main::$14 -- vbuz1=vbuaa 
     sta.z scroll_y
     // if (active_balls < MAX_BALLS)
-    // [55] if((byte) main::active_balls#2>=(byte) $32) goto main::@5 -- vbuz1_ge_vbuc1_then_la1 
+    // [55] if((word) main::active_balls#2>=(byte) $32) goto main::@5 -- vwuz1_ge_vbuc1_then_la1 
+    lda.z active_balls+1
+    bne __b5
     lda.z active_balls
     cmp #$32
     bcs __b5
+  !:
     // main::@15
     // if (timer++ == RELEASE_TIMER)
     // [56] (byte) main::timer#1 ← ++ (byte) main::timer#3 -- vbuxx=_inc_vbuz1 
@@ -6348,44 +6418,77 @@ main: {
   !__b25:
     // main::@16
     // active_balls++;
-    // [58] (byte) main::active_balls#1 ← ++ (byte) main::active_balls#2 -- vbuz1=_inc_vbuz1 
+    // [58] (word) main::active_balls#1 ← ++ (word) main::active_balls#2 -- vwuz1=_inc_vwuz1 
     inc.z active_balls
+    bne !+
+    inc.z active_balls+1
+  !:
     // balls[active_balls].x_position = 0
-    // [59] (byte~) main::$38 ← (byte) main::active_balls#1 << (byte) 3 -- vbuxx=vbuz1_rol_3 
+    // [59] (word~) main::$38 ← (word) main::active_balls#1 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z active_balls
     asl
-    asl
-    asl
-    tax
-    // [60] *((word*)(const struct $0*) balls + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 
+    sta.z __38
+    lda.z active_balls+1
+    rol
+    sta.z __38+1
+    asl.z __38
+    rol.z __38+1
+    asl.z __38
+    rol.z __38+1
+    // [60] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __38
+    clc
+    adc #<balls
+    sta.z __61
+    lda.z __38+1
+    adc #>balls
+    sta.z __61+1
+    // [61] *((word*~) main::$61) ← (byte) 0 -- _deref_pwuz1=vbuc1 
     lda #0
-    sta balls,x
-    sta balls+1,x
+    tay
+    sta (__61),y
+    tya
+    iny
+    sta (__61),y
     // balls[active_balls].y_position = 0
-    // [61] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$38) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 
-    sta balls+2,x
-    sta balls+2+1,x
-    // [62] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
-    // [62] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
+    // [62] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$38 -- pwuz1=pwuc1_plus_vwuz1 
+    clc
+    lda.z __62
+    adc #<balls+2
+    sta.z __62
+    lda.z __62+1
+    adc #>balls+2
+    sta.z __62+1
+    // [63] *((word*~) main::$62) ← (byte) 0 -- _deref_pwuz1=vbuc1 
+    lda #0
+    tay
+    sta (__62),y
+    tya
+    iny
+    sta (__62),y
+    // [64] phi from main::@16 to main::@5 [phi:main::@16->main::@5]
+    // [64] phi (byte) main::timer#15 = (byte) 0 [phi:main::@16->main::@5#0] -- vbuz1=vbuc1 
     sta.z timer
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
-    // [62] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
-    // [62] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
-    // [62] phi (byte) main::active_balls#8 = (byte) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#1 [phi:main::@16->main::@5#1] -- register_copy 
+    // [64] phi from main::@25 main::@4 to main::@5 [phi:main::@25/main::@4->main::@5]
+    // [64] phi (byte) main::timer#15 = (byte) main::timer#21 [phi:main::@25/main::@4->main::@5#0] -- register_copy 
+    // [64] phi (word) main::active_balls#8 = (word) main::active_balls#2 [phi:main::@25/main::@4->main::@5#1] -- register_copy 
     // main::@5
   __b5:
-    // [63] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
-    // [63] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
+    // [65] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
+    // [65] phi (byte) main::sprite_idx#3 = (byte) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 
     lda #0
     sta.z sprite_idx
-    // [63] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
+    // [65] phi (word) main::i#10 = (byte) 0 [phi:main::@5->main::@6#1] -- vwuz1=vbuc1 
     sta.z i_1
     sta.z i_1+1
     // main::@6
   __b6:
     // for (i = 0; i < active_balls; i++)
-    // [64] if((word) main::i#10<(byte) main::active_balls#8) goto main::@7 -- vwuz1_lt_vbuz2_then_la1 
+    // [66] if((word) main::i#10<(word) main::active_balls#8) goto main::@7 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i_1+1
+    cmp.z active_balls+1
+    bcc __b7
     bne !+
     lda.z i_1
     cmp.z active_balls
@@ -6393,34 +6496,34 @@ main: {
   !:
     // main::@8
     // poke(0x2001) = 0x98
-    // [65] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
+    // [67] *((byte*) 8193) ← (byte) $98 -- _deref_pbuc1=vbuc2 
     lda #$98
     sta $2001
     // main::@13
   __b13:
     // while (!vblank_hit)
-    // [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
+    // [68] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 -- vbuc1_eq_vbuz1_then_la1 
     lda #0
     cmp.z vblank_hit
     beq __b13
     // main::@14
     // vblank_hit = 0
-    // [67] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
+    // [69] (volatile byte) vblank_hit ← (byte) 0 -- vbuz1=vbuc1 
     // wait for vblank
     sta.z vblank_hit
     // poke(0x2001) = 0x18
-    // [68] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
+    // [70] *((byte*) 8193) ← (byte) $18 -- _deref_pbuc1=vbuc2 
     lda #$18
     sta $2001
     // [50] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
     // [50] phi (byte) main::timer#3 = (byte) main::timer#15 [phi:main::@14->main::@3#0] -- register_copy 
-    // [50] phi (byte) main::active_balls#2 = (byte) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
+    // [50] phi (word) main::active_balls#2 = (word) main::active_balls#8 [phi:main::@14->main::@3#1] -- register_copy 
     // [50] phi (byte) main::timer_2#2 = (byte) main::timer_2#1 [phi:main::@14->main::@3#2] -- register_copy 
     jmp __b4
     // main::@7
   __b7:
     // balls[i].x_position += balls[i].x_velocity
-    // [69] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [71] (word~) main::$44 ← (word) main::i#10 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i_1
     asl
     sta.z __44
@@ -6431,22 +6534,6 @@ main: {
     rol.z __44+1
     asl.z __44
     rol.z __44+1
-    // [70] (word*~) main::$61 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls
-    sta.z __61
-    lda.z __44+1
-    adc #>balls
-    sta.z __61+1
-    // [71] (word*~) main::$62 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+4
-    sta.z __62
-    lda.z __44+1
-    adc #>balls+4
-    sta.z __62+1
     // [72] (word*~) main::$63 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -6455,53 +6542,42 @@ main: {
     lda.z __44+1
     adc #>balls
     sta.z __63+1
-    // [73] *((word*~) main::$63) ← *((word*~) main::$61) + *((word*~) main::$62) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__61),y
-    clc
-    adc (__62),y
-    sta (__63),y
-    iny
-    lda (__61),y
-    adc (__62),y
-    sta (__63),y
-    // balls[i].y_velocity += WEIGHT
-    // [74] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [73] (word*~) main::$64 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
-    adc #<balls+6
+    adc #<balls+4
     sta.z __64
     lda.z __44+1
-    adc #>balls+6
+    adc #>balls+4
     sta.z __64+1
-    // [75] (word*~) main::$65 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [74] (word*~) main::$65 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls
+    sta.z __65
+    lda.z __44+1
+    adc #>balls
+    sta.z __65+1
+    // [75] *((word*~) main::$65) ← *((word*~) main::$63) + *((word*~) main::$64) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__63),y
+    clc
+    adc (__64),y
+    sta (__65),y
+    iny
+    lda (__63),y
+    adc (__64),y
+    sta (__65),y
+    // balls[i].y_velocity += WEIGHT
+    // [76] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __65
-    lda.z __44+1
-    adc #>balls+6
-    sta.z __65+1
-    // [76] *((word*~) main::$65) ← *((word*~) main::$64) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
-    ldy #0
-    lda (__64),y
-    clc
-    adc #<$10
-    sta (__65),y
-    iny
-    lda (__64),y
-    adc #>$10
-    sta (__65),y
-    // balls[i].y_position += (balls[i].y_velocity += WEIGHT)
-    // [77] (word*~) main::$66 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
-    lda.z __44
-    clc
-    adc #<balls+2
     sta.z __66
     lda.z __44+1
-    adc #>balls+2
+    adc #>balls+6
     sta.z __66+1
-    // [78] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [77] (word*~) main::$67 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
@@ -6509,6 +6585,17 @@ main: {
     lda.z __44+1
     adc #>balls+6
     sta.z __67+1
+    // [78] *((word*~) main::$67) ← *((word*~) main::$66) + (byte) $10 -- _deref_pwuz1=_deref_pwuz2_plus_vwuc1 
+    ldy #0
+    lda (__66),y
+    clc
+    adc #<$10
+    sta (__67),y
+    iny
+    lda (__66),y
+    adc #>$10
+    sta (__67),y
+    // balls[i].y_position += (balls[i].y_velocity += WEIGHT)
     // [79] (word*~) main::$68 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
@@ -6517,33 +6604,49 @@ main: {
     lda.z __44+1
     adc #>balls+2
     sta.z __68+1
-    // [80] *((word*~) main::$68) ← *((word*~) main::$66) + *((word*~) main::$67) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
-    ldy #0
-    lda (__66),y
+    // [80] (word*~) main::$69 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
     clc
-    adc (__67),y
-    sta (__68),y
+    adc #<balls+6
+    sta.z __69
+    lda.z __44+1
+    adc #>balls+6
+    sta.z __69+1
+    // [81] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    lda.z __44
+    clc
+    adc #<balls+2
+    sta.z __70
+    lda.z __44+1
+    adc #>balls+2
+    sta.z __70+1
+    // [82] *((word*~) main::$70) ← *((word*~) main::$68) + *((word*~) main::$69) -- _deref_pwuz1=_deref_pwuz2_plus__deref_pwuz3 
+    ldy #0
+    lda (__68),y
+    clc
+    adc (__69),y
+    sta (__70),y
     iny
-    lda (__66),y
-    adc (__67),y
-    sta (__68),y
+    lda (__68),y
+    adc (__69),y
+    sta (__70),y
     // balls[i].x_position >> 8
-    // [81] (word*~) main::$69 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [83] (word*~) main::$71 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls
-    sta.z __69
+    sta.z __71
     lda.z __44+1
     adc #>balls
-    sta.z __69+1
-    // [82] (word~) main::$20 ← *((word*~) main::$69) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __71+1
+    // [84] (word~) main::$20 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__20),y
     sta.z __20
     dey
     sty.z __20+1
     // if ((balls[i].x_position >> 8) < 8)
-    // [83] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
+    // [85] if((word~) main::$20>=(byte) 8) goto main::@9 -- vwuz1_ge_vbuc1_then_la1 
     tya
     bne __b9
     lda.z __20
@@ -6552,69 +6655,69 @@ main: {
   !:
     // main::@11
     // balls[i].x_velocity ^= 0xFFFF
-    // [84] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [86] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __72
+    sta.z __74
     lda.z __44+1
     adc #>balls+4
-    sta.z __72+1
-    // [85] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __74+1
+    // [87] (word*~) main::$75 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+4
-    sta.z __73
+    sta.z __75
     lda.z __44+1
     adc #>balls+4
-    sta.z __73+1
-    // [86] *((word*~) main::$73) ← *((word*~) main::$72) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __75+1
+    // [88] *((word*~) main::$75) ← *((word*~) main::$74) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     iny
     lda #>$ffff
-    eor (__72),y
-    sta (__73),y
+    eor (__74),y
+    sta (__75),y
     // main::@9
   __b9:
     // balls[i].y_position >> 8
-    // [87] (word*~) main::$70 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [89] (word*~) main::$72 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __70
+    sta.z __72
     lda.z __44+1
     adc #>balls+2
-    sta.z __70+1
-    // [88] (word~) main::$23 ← *((word*~) main::$70) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __72+1
+    // [90] (word~) main::$23 ← *((word*~) main::$72) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__23),y
     sta.z __23
     dey
     sty.z __23+1
-    // [89] (word*~) main::$71 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [91] (word*~) main::$73 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __71
+    sta.z __73
     lda.z __44+1
     adc #>balls+2
-    sta.z __71+1
-    // [90] (word~) main::$25 ← *((word*~) main::$71) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __73+1
+    // [92] (word~) main::$25 ← *((word*~) main::$73) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__25),y
     sta.z __25
     dey
     sty.z __25+1
     // h_bar + 8
-    // [91] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
+    // [93] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 
     lax.z h_bar
     axs #-[8]
     stx.z __26
     // if (((balls[i].y_position >> 8) >= h_bar) && (balls[i].y_position >> 8) < h_bar + 8)
-    // [92] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
+    // [94] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 
     lda.z __23+1
     bne !+
     lda.z __23
@@ -6622,7 +6725,7 @@ main: {
     bcc __b10
   !:
     // main::@24
-    // [93] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
+    // [95] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 
     lda.z __25+1
     bne __b10
     lda.z __25
@@ -6631,146 +6734,146 @@ main: {
   !:
     // main::@12
     // balls[i].y_velocity ^= 0xFFFF
-    // [94] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [96] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __76
+    sta.z __78
     lda.z __44+1
     adc #>balls+6
-    sta.z __76+1
-    // [95] (word*~) main::$77 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    sta.z __78+1
+    // [97] (word*~) main::$79 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+6
-    sta.z __77
+    sta.z __79
     lda.z __44+1
     adc #>balls+6
-    sta.z __77+1
-    // [96] *((word*~) main::$77) ← *((word*~) main::$76) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
+    sta.z __79+1
+    // [98] *((word*~) main::$79) ← *((word*~) main::$78) ^ (word) $ffff -- _deref_pwuz1=_deref_pwuz2_bxor_vwuc1 
     ldy #0
     lda #<$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     iny
     lda #>$ffff
-    eor (__76),y
-    sta (__77),y
+    eor (__78),y
+    sta (__79),y
     // h_bar - 2
-    // [97] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 
+    // [99] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 
     lda.z h_bar
     sec
     sbc #2
     // (unsigned short)(h_bar - 2) << 8
-    // [98] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa 
+    // [100] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa 
     sta.z __56
     lda #0
     sta.z __56+1
-    // [99] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 
+    // [101] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 
     lda.z __31
     sta.z __31+1
     lda #0
     sta.z __31
     // balls[i].y_position = ((unsigned short)(h_bar - 2) << 8)
-    // [100] (word*~) main::$78 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [102] (word*~) main::$80 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __78
+    sta.z __80
     lda.z __44+1
     adc #>balls+2
-    sta.z __78+1
-    // [101] *((word*~) main::$78) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
+    sta.z __80+1
+    // [103] *((word*~) main::$80) ← (word~) main::$31 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __31
-    sta (__78),y
+    sta (__80),y
     iny
     lda.z __31+1
-    sta (__78),y
+    sta (__80),y
     // main::@10
   __b10:
     // balls[i].y_position >> 8
-    // [102] (word*~) main::$74 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
+    // [104] (word*~) main::$76 ← (word*)(const struct $0*) balls+(byte) 2 + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __44
     clc
     adc #<balls+2
-    sta.z __74
+    sta.z __76
     lda.z __44+1
     adc #>balls+2
-    sta.z __74+1
-    // [103] (word~) main::$32 ← *((word*~) main::$74) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __76+1
+    // [105] (word~) main::$32 ← *((word*~) main::$76) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__32),y
     sta.z __32
     dey
     sty.z __32+1
     // SPRITE_BUFFER[sprite_idx].y = (unsigned char) (balls[i].y_position >> 8)
-    // [104] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 
+    // [106] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 
     lda.z sprite_idx
     asl
     asl
     tax
-    // [105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
+    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
     lda.z __32
     sta SPRITE_BUFFER,x
     // SPRITE_BUFFER[sprite_idx].tile = 0x0a
-    // [106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 
+    // [108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #$a
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,x
     // SPRITE_BUFFER[sprite_idx].attributes = 3
-    // [107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 
+    // [109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 
     lda #3
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,x
     // balls[i].x_position >> 8
-    // [108] (word*~) main::$75 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz1 
+    // [110] (word*~) main::$77 ← (word*)(const struct $0*) balls + (word~) main::$44 -- pwuz1=pwuc1_plus_vwuz1 
     clc
-    lda.z __75
+    lda.z __77
     adc #<balls
-    sta.z __75
-    lda.z __75+1
+    sta.z __77
+    lda.z __77+1
     adc #>balls
-    sta.z __75+1
-    // [109] (word~) main::$33 ← *((word*~) main::$75) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
+    sta.z __77+1
+    // [111] (word~) main::$33 ← *((word*~) main::$77) >> (byte) 8 -- vwuz1=_deref_pwuz1_ror_8 
     ldy #1
     lda (__33),y
     sta.z __33
     dey
     sty.z __33+1
     // SPRITE_BUFFER[sprite_idx].x = (unsigned char) (balls[i].x_position >> 8)
-    // [110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
+    // [112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 
     sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,x
     // sprite_idx++;
-    // [111] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
+    // [113] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 
     inc.z sprite_idx
     // for (i = 0; i < active_balls; i++)
-    // [112] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
+    // [114] (word) main::i#4 ← ++ (word) main::i#10 -- vwuz1=_inc_vwuz1 
     inc.z i_1
     bne !+
     inc.z i_1+1
   !:
-    // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
-    // [63] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
-    // [63] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
+    // [65] phi from main::@10 to main::@6 [phi:main::@10->main::@6]
+    // [65] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy 
+    // [65] phi (word) main::i#10 = (word) main::i#4 [phi:main::@10->main::@6#1] -- register_copy 
     jmp __b6
     // main::@25
   __b25:
-    // [113] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx 
+    // [115] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx 
     stx.z timer
     jmp __b5
-    // [114] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+    // [116] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
     // main::@2
   __b2:
     // rand()
-    // [115] call rand 
-    // [152] phi from main::@2 to rand [phi:main::@2->rand]
-    // [152] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
+    // [117] call rand 
+    // [154] phi from main::@2 to rand [phi:main::@2->rand]
+    // [154] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy 
     jsr rand
     // rand()
-    // [116] (word) rand::return#2 ← (word) rand::return#0
+    // [118] (word) rand::return#2 ← (word) rand::return#0
     // main::@22
-    // [117] (word~) main::$9 ← (word) rand::return#2
+    // [119] (word~) main::$9 ← (word) rand::return#2
     // rand() & 0x3FF
-    // [118] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 
+    // [120] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 
     lda.z __10
     and #<$3ff
     sta.z __10
@@ -6778,7 +6881,7 @@ main: {
     and #>$3ff
     sta.z __10+1
     // balls[i].x_velocity = rand() & 0x3FF
-    // [119] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
+    // [121] (word~) main::$36 ← (word) main::i#14 << (byte) 3 -- vwuz1=vwuz2_rol_3 
     lda.z i
     asl
     sta.z __36
@@ -6789,7 +6892,7 @@ main: {
     rol.z __36+1
     asl.z __36
     rol.z __36+1
-    // [120] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
+    // [122] (word*~) main::$59 ← (word*)(const struct $0*) balls+(byte) 4 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz2 
     lda.z __36
     clc
     adc #<balls+4
@@ -6797,7 +6900,7 @@ main: {
     lda.z __36+1
     adc #>balls+4
     sta.z __59+1
-    // [121] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
+    // [123] *((word*~) main::$59) ← (word~) main::$10 -- _deref_pwuz1=vwuz2 
     ldy #0
     lda.z __10
     sta (__59),y
@@ -6805,21 +6908,21 @@ main: {
     lda.z __10+1
     sta (__59),y
     // rand()
-    // [122] call rand 
-    // [152] phi from main::@22 to rand [phi:main::@22->rand]
-    // [152] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
+    // [124] call rand 
+    // [154] phi from main::@22 to rand [phi:main::@22->rand]
+    // [154] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy 
     jsr rand
     // rand()
-    // [123] (word) rand::return#3 ← (word) rand::return#0
+    // [125] (word) rand::return#3 ← (word) rand::return#0
     // main::@23
-    // [124] (word~) main::$11 ← (word) rand::return#3
+    // [126] (word~) main::$11 ← (word) rand::return#3
     // rand() & 0x0FF
-    // [125] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuxx=vwuz1_band_vbuc1 
+    // [127] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuxx=vwuz1_band_vbuc1 
     lda #$ff
     and.z __11
     tax
     // balls[i].y_velocity = rand() & 0x0FF
-    // [126] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz1 
+    // [128] (word*~) main::$60 ← (word*)(const struct $0*) balls+(byte) 6 + (word~) main::$36 -- pwuz1=pwuc1_plus_vwuz1 
     clc
     lda.z __60
     adc #<balls+6
@@ -6827,7 +6930,7 @@ main: {
     lda.z __60+1
     adc #>balls+6
     sta.z __60+1
-    // [127] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuxx 
+    // [129] *((word*~) main::$60) ← (byte~) main::$12 -- _deref_pwuz1=vbuxx 
     txa
     ldy #0
     sta (__60),y
@@ -6835,7 +6938,7 @@ main: {
     iny
     sta (__60),y
     // for (i = 0; i < MAX_BALLS; i++)
-    // [128] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
+    // [130] (word) main::i#2 ← ++ (word) main::i#14 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
@@ -6850,37 +6953,37 @@ main: {
 // - ppuData : Pointer in the PPU memory
 // - cpuData : Pointer to the CPU memory (RAM of ROM)
 // - size : The number of bytes to transfer
-// ppuDataTransfer(void* zp($11) cpuData)
+// ppuDataTransfer(void* zp($12) cpuData)
 ppuDataTransfer: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label cpuSrc = $11
-    .label i = $13
-    .label cpuData = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label cpuSrc = $12
+    .label i = $14
+    .label cpuData = $12
     // ppuDataTransfer::ppuDataPrepare1
     // >ppuData
-    // [130] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
+    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
     lda.z ppuDataPrepare1_ppuData+1
     // PPU->PPUADDR = >ppuData
-    // [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
+    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
     // <ppuData
-    // [132] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
+    // [134] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
     lda.z ppuDataPrepare1_ppuData
     // PPU->PPUADDR = <ppuData
-    // [133] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
+    // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
     // ppuDataTransfer::@3
-    // [134] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
-    // [135] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
+    // [136] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2
+    // [137] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     sta.z i+1
     // ppuDataTransfer::@1
   __b1:
     // for(unsigned int i=0;i<size;i++)
-    // [136] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
+    // [138] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 
     lda.z i+1
     bne !+
     lda.z i
@@ -6889,60 +6992,60 @@ ppuDataTransfer: {
   !:
     // ppuDataTransfer::@return
     // }
-    // [137] return 
+    // [139] return 
     rts
     // ppuDataTransfer::@2
   __b2:
     // ppuDataPut(*cpuSrc++)
-    // [138] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 
+    // [140] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 
     ldy #0
     lda (cpuSrc),y
     // ppuDataTransfer::ppuDataPut1
     // PPU->PPUDATA = val
-    // [139] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
+    // [141] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     // ppuDataTransfer::@4
     // ppuDataPut(*cpuSrc++);
-    // [140] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
+    // [142] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
     inc.z cpuSrc
     bne !+
     inc.z cpuSrc+1
   !:
     // for(unsigned int i=0;i<size;i++)
-    // [141] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
+    // [143] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [135] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
-    // [135] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
-    // [135] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
+    // [137] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
+    // [137] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
+    // [137] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
     jmp __b1
 }
   // ppuDataFill
 // Fill a number of bytes in the PPU memory
 // - ppuData : Pointer in the PPU memory
 // - size : The number of bytes to transfer
-// ppuDataFill(word zp($11) size)
+// ppuDataFill(word zp($12) size)
 ppuDataFill: {
-    .label ppuDataPrepare1_ppuData = $f
-    .label i = $13
-    .label size = $11
+    .label ppuDataPrepare1_ppuData = $10
+    .label i = $14
+    .label size = $12
     // ppuDataFill::ppuDataPrepare1
     // >ppuData
-    // [143] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
+    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 
     lda.z ppuDataPrepare1_ppuData+1
     // PPU->PPUADDR = >ppuData
-    // [144] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
+    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
     // <ppuData
-    // [145] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
+    // [147] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 
     lda.z ppuDataPrepare1_ppuData
     // PPU->PPUADDR = <ppuData
-    // [146] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
+    // [148] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
-    // [147] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
-    // [147] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
+    // [149] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
+    // [149] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
     lda #<0
     sta.z i
     sta.z i+1
@@ -6950,7 +7053,7 @@ ppuDataFill: {
     // ppuDataFill::@1
   __b1:
     // for(unsigned int i=0;i<size;i++)
-    // [148] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
+    // [150] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
     lda.z i+1
     cmp.z size+1
     bcc ppuDataPut1
@@ -6961,23 +7064,23 @@ ppuDataFill: {
   !:
     // ppuDataFill::@return
     // }
-    // [149] return 
+    // [151] return 
     rts
     // ppuDataFill::ppuDataPut1
   ppuDataPut1:
     // PPU->PPUDATA = val
-    // [150] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
+    // [152] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 
     lda #0
     sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
     // ppuDataFill::@2
     // for(unsigned int i=0;i<size;i++)
-    // [151] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
+    // [153] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
     inc.z i
     bne !+
     inc.z i+1
   !:
-    // [147] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
-    // [147] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
+    // [149] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
+    // [149] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
     jmp __b1
 }
   // rand
@@ -6986,12 +7089,12 @@ ppuDataFill: {
 // Information https://en.wikipedia.org/wiki/Xorshift
 // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html
 rand: {
-    .label __0 = $3c
-    .label __1 = $3e
-    .label __2 = $40
-    .label return = $36
+    .label __0 = $41
+    .label __1 = $43
+    .label __2 = $45
+    .label return = $3b
     // rand_state << 7
-    // [153] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
+    // [155] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 
     lda.z rand_state+1
     lsr
     lda.z rand_state
@@ -7001,7 +7104,7 @@ rand: {
     ror
     sta.z __0
     // rand_state ^= rand_state << 7
-    // [154] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [156] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __0
     sta.z rand_state
@@ -7009,13 +7112,13 @@ rand: {
     eor.z __0+1
     sta.z rand_state+1
     // rand_state >> 9
-    // [155] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
+    // [157] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 
     lsr
     sta.z __1
     lda #0
     sta.z __1+1
     // rand_state ^= rand_state >> 9
-    // [156] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [158] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __1
     sta.z rand_state
@@ -7023,13 +7126,13 @@ rand: {
     eor.z __1+1
     sta.z rand_state+1
     // rand_state << 8
-    // [157] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
+    // [159] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 
     lda.z rand_state
     sta.z __2+1
     lda #0
     sta.z __2
     // rand_state ^= rand_state << 8
-    // [158] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 
+    // [160] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 
     lda.z rand_state
     eor.z __2
     sta.z rand_state
@@ -7037,14 +7140,14 @@ rand: {
     eor.z __2+1
     sta.z rand_state+1
     // return rand_state;
-    // [159] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
+    // [161] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 
     lda.z rand_state
     sta.z return
     lda.z rand_state+1
     sta.z return+1
     // rand::@return
     // }
-    // [160] return 
+    // [162] return 
     rts
 }
   // File Data
diff --git a/src/test/ref/complex/nes-balls/kickballs-3.sym b/src/test/ref/complex/nes-balls/kickballs-3.sym
index ebecaff25..0a8208fbd 100644
--- a/src/test/ref/complex/nes-balls/kickballs-3.sym
+++ b/src/test/ref/complex/nes-balls/kickballs-3.sym
@@ -73,44 +73,46 @@
 (const struct $0*) balls[(number) $40]  = { fill( $40, 0) }
 (const to_nomodify byte*) h_bar_tilemap[]  = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1 }
 (signed word()) main()
-(word~) main::$10 zp[2]:54 67.33333333333333
-(word~) main::$11 zp[2]:54 202.0
+(word~) main::$10 zp[2]:59 67.33333333333333
+(word~) main::$11 zp[2]:59 202.0
 (byte~) main::$12 reg byte x 101.0
 (byte~) main::$14 reg byte a 202.0
-(word~) main::$20 zp[2]:33 2002.0
-(word~) main::$23 zp[2]:39 500.5
-(word~) main::$25 zp[2]:41 667.3333333333334
-(byte~) main::$26 zp[1]:43 1001.0
+(word~) main::$20 zp[2]:38 2002.0
+(word~) main::$23 zp[2]:44 500.5
+(word~) main::$25 zp[2]:46 667.3333333333334
+(byte~) main::$26 zp[1]:48 1001.0
 (byte~) main::$30 reg byte a 1001.0
-(word~) main::$31 zp[2]:48 1001.0
-(word~) main::$32 zp[2]:52 500.5
-(word~) main::$33 zp[2]:15 1001.0
-(word~) main::$36 zp[2]:56 43.285714285714285
-(byte~) main::$38 reg byte x 151.5
-(word~) main::$44 zp[2]:15 487.6666666666668
+(word~) main::$31 zp[2]:53 1001.0
+(word~) main::$32 zp[2]:57 500.5
+(word~) main::$33 zp[2]:20 1001.0
+(word~) main::$36 zp[2]:61 43.285714285714285
+(word~) main::$38 zp[2]:16 101.0
+(word~) main::$44 zp[2]:20 487.6666666666668
 (byte~) main::$48 reg byte x 834.1666666666667
-(word~) main::$56 zp[2]:48 2002.0
-(word*~) main::$59 zp[2]:58 202.0
-(word*~) main::$60 zp[2]:56 202.0
-(word*~) main::$61 zp[2]:17 667.3333333333334
-(word*~) main::$62 zp[2]:19 1001.0
-(word*~) main::$63 zp[2]:21 2002.0
-(word*~) main::$64 zp[2]:23 1001.0
-(word*~) main::$65 zp[2]:25 2002.0
-(word*~) main::$66 zp[2]:27 667.3333333333334
-(word*~) main::$67 zp[2]:29 1001.0
-(word*~) main::$68 zp[2]:31 2002.0
-(word*~) main::$69 zp[2]:33 2002.0
-(word*~) main::$70 zp[2]:39 2002.0
-(word*~) main::$71 zp[2]:41 2002.0
-(word*~) main::$72 zp[2]:35 1001.0
-(word*~) main::$73 zp[2]:37 2002.0
-(word*~) main::$74 zp[2]:52 2002.0
-(word*~) main::$75 zp[2]:15 2002.0
-(word*~) main::$76 zp[2]:44 1001.0
-(word*~) main::$77 zp[2]:46 2002.0
-(word*~) main::$78 zp[2]:50 2002.0
-(word~) main::$9 zp[2]:54 202.0
+(word~) main::$56 zp[2]:53 2002.0
+(word*~) main::$59 zp[2]:63 202.0
+(word*~) main::$60 zp[2]:61 202.0
+(word*~) main::$61 zp[2]:18 202.0
+(word*~) main::$62 zp[2]:16 202.0
+(word*~) main::$63 zp[2]:22 667.3333333333334
+(word*~) main::$64 zp[2]:24 1001.0
+(word*~) main::$65 zp[2]:26 2002.0
+(word*~) main::$66 zp[2]:28 1001.0
+(word*~) main::$67 zp[2]:30 2002.0
+(word*~) main::$68 zp[2]:32 667.3333333333334
+(word*~) main::$69 zp[2]:34 1001.0
+(word*~) main::$70 zp[2]:36 2002.0
+(word*~) main::$71 zp[2]:38 2002.0
+(word*~) main::$72 zp[2]:44 2002.0
+(word*~) main::$73 zp[2]:46 2002.0
+(word*~) main::$74 zp[2]:40 1001.0
+(word*~) main::$75 zp[2]:42 2002.0
+(word*~) main::$76 zp[2]:57 2002.0
+(word*~) main::$77 zp[2]:20 2002.0
+(word*~) main::$78 zp[2]:49 1001.0
+(word*~) main::$79 zp[2]:51 2002.0
+(word*~) main::$80 zp[2]:55 2002.0
+(word~) main::$9 zp[2]:59 202.0
 (label) main::@1
 (label) main::@10
 (label) main::@11
@@ -136,18 +138,18 @@
 (label) main::@7
 (label) main::@8
 (label) main::@9
-(byte) main::active_balls
-(byte) main::active_balls#1 active_balls zp[1]:5 75.75
-(byte) main::active_balls#2 active_balls zp[1]:5 56.11111111111111
-(byte) main::active_balls#8 active_balls zp[1]:5 27.54901960784314
+(word) main::active_balls
+(word) main::active_balls#1 active_balls zp[2]:5 50.5
+(word) main::active_balls#2 active_balls zp[2]:5 56.11111111111111
+(word) main::active_balls#8 active_balls zp[2]:5 27.54901960784314
 (label) main::enableVideoOutput1
 (byte) main::h_bar
-(byte) main::h_bar#1 h_bar zp[1]:14 55.258620689655174
+(byte) main::h_bar#1 h_bar zp[1]:15 53.41666666666667
 (word) main::i
-(word) main::i#10 i_1 zp[2]:7 88.97777777777777
+(word) main::i#10 i_1 zp[2]:8 88.97777777777777
 (word) main::i#14 i zp[2]:2 25.25
 (word) main::i#2 i zp[2]:2 202.0
-(word) main::i#4 i_1 zp[2]:7 2002.0
+(word) main::i#4 i_1 zp[2]:8 2002.0
 (label) main::initNES1
 (label) main::initNES1_@1
 (label) main::initNES1_@7
@@ -165,15 +167,15 @@
 (label) main::initNES1_waitForVBlank2_@1
 (signed word) main::return
 (byte) main::sprite_idx
-(byte) main::sprite_idx#2 sprite_idx zp[1]:9 1001.0
-(byte) main::sprite_idx#3 sprite_idx zp[1]:9 68.25
+(byte) main::sprite_idx#2 sprite_idx zp[1]:10 1001.0
+(byte) main::sprite_idx#3 sprite_idx zp[1]:10 68.25
 (byte) main::timer
 (byte) main::timer#1 reg byte x 101.0
-(byte) main::timer#15 timer zp[1]:6 5.9411764705882355
-(byte) main::timer#21 timer zp[1]:6 202.0
-(byte) main::timer#3 timer zp[1]:6 57.714285714285715
+(byte) main::timer#15 timer zp[1]:7 5.9411764705882355
+(byte) main::timer#21 timer zp[1]:7 202.0
+(byte) main::timer#3 timer zp[1]:7 57.714285714285715
 (byte) main::timer_2
-(byte) main::timer_2#1 timer_2 zp[1]:4 4.80952380952381
+(byte) main::timer_2#1 timer_2 zp[1]:4 4.661538461538462
 (byte) main::timer_2#2 timer_2 zp[1]:4 202.0
 (const to_nomodify byte*) palette[]  = { (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4 }
 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size)
@@ -181,18 +183,18 @@
 (label) ppuDataFill::@2
 (label) ppuDataFill::@return
 (word) ppuDataFill::i
-(word) ppuDataFill::i#1 i zp[2]:19 2002.0
-(word) ppuDataFill::i#2 i zp[2]:19 1001.0
+(word) ppuDataFill::i#1 i zp[2]:20 2002.0
+(word) ppuDataFill::i#2 i zp[2]:20 1001.0
 (nomodify void*) ppuDataFill::ppuData
 (label) ppuDataFill::ppuDataPrepare1
 (byte~) ppuDataFill::ppuDataPrepare1_$0 reg byte a 202.0
 (byte~) ppuDataFill::ppuDataPrepare1_$1 reg byte a 202.0
 (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData
-(nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:15 67.33333333333333
+(nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:16 67.33333333333333
 (label) ppuDataFill::ppuDataPut1
 (byte) ppuDataFill::ppuDataPut1_val
 (word) ppuDataFill::size
-(word) ppuDataFill::size#3 size zp[2]:17 111.22222222222223
+(word) ppuDataFill::size#3 size zp[2]:18 111.22222222222223
 (byte) ppuDataFill::val
 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size)
 (label) ppuDataTransfer::@1
@@ -201,20 +203,20 @@
 (label) ppuDataTransfer::@4
 (label) ppuDataTransfer::@return
 (nomodify void*) ppuDataTransfer::cpuData
-(nomodify void*) ppuDataTransfer::cpuData#2 cpuData zp[2]:17
+(nomodify void*) ppuDataTransfer::cpuData#2 cpuData zp[2]:18
 (byte*) ppuDataTransfer::cpuSrc
-(byte*) ppuDataTransfer::cpuSrc#1 cpuSrc zp[2]:17 1001.0
-(byte*) ppuDataTransfer::cpuSrc#2 cpuSrc zp[2]:17 776.0
-(byte*) ppuDataTransfer::cpuSrc#6 cpuSrc zp[2]:17 202.0
+(byte*) ppuDataTransfer::cpuSrc#1 cpuSrc zp[2]:18 1001.0
+(byte*) ppuDataTransfer::cpuSrc#2 cpuSrc zp[2]:18 776.0
+(byte*) ppuDataTransfer::cpuSrc#6 cpuSrc zp[2]:18 202.0
 (word) ppuDataTransfer::i
-(word) ppuDataTransfer::i#1 i zp[2]:19 2002.0
-(word) ppuDataTransfer::i#2 i zp[2]:19 600.5999999999999
+(word) ppuDataTransfer::i#1 i zp[2]:20 2002.0
+(word) ppuDataTransfer::i#2 i zp[2]:20 600.5999999999999
 (nomodify void*) ppuDataTransfer::ppuData
 (label) ppuDataTransfer::ppuDataPrepare1
 (byte~) ppuDataTransfer::ppuDataPrepare1_$0 reg byte a 202.0
 (byte~) ppuDataTransfer::ppuDataPrepare1_$1 reg byte a 202.0
 (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData
-(nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:15 67.33333333333333
+(nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataPrepare1_ppuData zp[2]:16 67.33333333333333
 (label) ppuDataTransfer::ppuDataPut1
 (byte) ppuDataTransfer::ppuDataPut1_val
 (byte) ppuDataTransfer::ppuDataPut1_val#0 reg byte a 2002.0
@@ -230,76 +232,77 @@
 (byte) printf_format_string::justify_left
 (byte) printf_format_string::min_length
 (word()) rand()
-(word~) rand::$0 zp[2]:60 2002.0
-(word~) rand::$1 zp[2]:62 2002.0
-(word~) rand::$2 zp[2]:64 2002.0
+(word~) rand::$0 zp[2]:65 2002.0
+(word~) rand::$1 zp[2]:67 2002.0
+(word~) rand::$2 zp[2]:69 2002.0
 (label) rand::@return
 (word) rand::return
-(word) rand::return#0 return zp[2]:54 300.75
-(word) rand::return#2 return zp[2]:54 202.0
-(word) rand::return#3 return zp[2]:54 202.0
+(word) rand::return#0 return zp[2]:59 300.75
+(word) rand::return#2 return zp[2]:59 202.0
+(word) rand::return#3 return zp[2]:59 202.0
 (word) rand_state
-(word) rand_state#0 rand_state zp[2]:10 1501.5
-(word) rand_state#1 rand_state zp[2]:10 1501.5
-(word) rand_state#10 rand_state zp[2]:10 1102.0
-(word) rand_state#11 rand_state zp[2]:10 129.64705882352942
-(word) rand_state#17 rand_state zp[2]:10 67.33333333333333
-(volatile byte) scroll_y loadstore zp[1]:12 105.0
+(word) rand_state#0 rand_state zp[2]:11 1501.5
+(word) rand_state#1 rand_state zp[2]:11 1501.5
+(word) rand_state#10 rand_state zp[2]:11 1102.0
+(word) rand_state#11 rand_state zp[2]:11 129.64705882352942
+(word) rand_state#17 rand_state zp[2]:11 67.33333333333333
+(volatile byte) scroll_y loadstore zp[1]:13 105.0
 (const to_nomodify byte*) sine_table[(number) $100]  = { (byte) $40, (byte) $42, (byte) $43, (byte) $45, (byte) $46, (byte) $48, (byte) $49, (byte) $4b, (byte) $4c, (byte) $4e, (byte) $50, (byte) $51, (byte) $53, (byte) $54, (byte) $56, (byte) $57, (byte) $58, (byte) $5a, (byte) $5b, (byte) $5d, (byte) $5e, (byte) $60, (byte) $61, (byte) $62, (byte) $64, (byte) $65, (byte) $66, (byte) $67, (byte) $69, (byte) $6a, (byte) $6b, (byte) $6c, (byte) $6d, (byte) $6e, (byte) $6f, (byte) $70, (byte) $71, (byte) $72, (byte) $73, (byte) $74, (byte) $75, (byte) $76, (byte) $77, (byte) $78, (byte) $78, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7b, (byte) $7c, (byte) $7c, (byte) $7d, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7d, (byte) $7c, (byte) $7c, (byte) $7b, (byte) $7b, (byte) $7a, (byte) $79, (byte) $78, (byte) $78, (byte) $77, (byte) $76, (byte) $75, (byte) $74, (byte) $73, (byte) $72, (byte) $71, (byte) $70, (byte) $6f, (byte) $6e, (byte) $6d, (byte) $6c, (byte) $6b, (byte) $6a, (byte) $69, (byte) $67, (byte) $66, (byte) $65, (byte) $64, (byte) $62, (byte) $61, (byte) $60, (byte) $5e, (byte) $5d, (byte) $5b, (byte) $5a, (byte) $58, (byte) $57, (byte) $56, (byte) $54, (byte) $53, (byte) $51, (byte) $50, (byte) $4e, (byte) $4c, (byte) $4b, (byte) $49, (byte) $48, (byte) $46, (byte) $45, (byte) $43, (byte) $42, (byte) $40, (byte) $3e, (byte) $3d, (byte) $3b, (byte) $3a, (byte) $38, (byte) $37, (byte) $35, (byte) $34, (byte) $32, (byte) $30, (byte) $2f, (byte) $2d, (byte) $2c, (byte) $2a, (byte) $29, (byte) $28, (byte) $26, (byte) $25, (byte) $23, (byte) $22, (byte) $20, (byte) $1f, (byte) $1e, (byte) $1c, (byte) $1b, (byte) $1a, (byte) $19, (byte) $17, (byte) $16, (byte) $15, (byte) $14, (byte) $13, (byte) $12, (byte) $11, (byte) $10, (byte) $f, (byte) $e, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 9, (byte) 8, (byte) 8, (byte) 7, (byte) 6, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 4, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f, (byte) $10, (byte) $11, (byte) $12, (byte) $13, (byte) $14, (byte) $15, (byte) $16, (byte) $17, (byte) $19, (byte) $1a, (byte) $1b, (byte) $1c, (byte) $1e, (byte) $1f, (byte) $20, (byte) $22, (byte) $23, (byte) $25, (byte) $26, (byte) $28, (byte) $29, (byte) $2a, (byte) $2c, (byte) $2d, (byte) $2f, (byte) $30, (byte) $32, (byte) $34, (byte) $35, (byte) $37, (byte) $38, (byte) $3a, (byte) $3b, (byte) $3d, (byte) $3e }
 interrupt(HARDWARE_STACK)(void()) vblank()
 (label) vblank::@1
 (label) vblank::@return
 (label) vblank::ppuSpriteBufferDmaTransfer1
 (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer
-(volatile byte) vblank_hit loadstore zp[1]:13 9.008130081300813
+(volatile byte) vblank_hit loadstore zp[1]:14 8.863999999999999
 
 reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ]
 zp[2]:2 [ main::i#14 main::i#2 ]
 zp[1]:4 [ main::timer_2#2 main::timer_2#1 ]
-zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
-zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ]
-zp[2]:7 [ main::i#10 main::i#4 ]
-zp[1]:9 [ main::sprite_idx#3 main::sprite_idx#2 ]
-zp[2]:10 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
-zp[1]:12 [ scroll_y ]
-zp[1]:13 [ vblank_hit ]
+zp[2]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ]
+zp[1]:7 [ main::timer#3 main::timer#15 main::timer#21 ]
+zp[2]:8 [ main::i#10 main::i#4 ]
+zp[1]:10 [ main::sprite_idx#3 main::sprite_idx#2 ]
+zp[2]:11 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 rand_state#1 ]
+zp[1]:13 [ scroll_y ]
+zp[1]:14 [ vblank_hit ]
 reg byte a [ main::initNES1_waitForVBlank1_$0 ]
 reg byte a [ main::initNES1_waitForVBlank2_$0 ]
-zp[1]:14 [ main::h_bar#1 ]
+zp[1]:15 [ main::h_bar#1 ]
 reg byte a [ main::$14 ]
 reg byte x [ main::timer#1 ]
-reg byte x [ main::$38 ]
-zp[2]:15 [ main::$44 main::$75 main::$33 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
-zp[2]:17 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
-zp[2]:19 [ main::$62 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
-zp[2]:21 [ main::$63 ]
-zp[2]:23 [ main::$64 ]
-zp[2]:25 [ main::$65 ]
-zp[2]:27 [ main::$66 ]
-zp[2]:29 [ main::$67 ]
-zp[2]:31 [ main::$68 ]
-zp[2]:33 [ main::$69 main::$20 ]
-zp[2]:35 [ main::$72 ]
-zp[2]:37 [ main::$73 ]
-zp[2]:39 [ main::$70 main::$23 ]
-zp[2]:41 [ main::$71 main::$25 ]
-zp[1]:43 [ main::$26 ]
-zp[2]:44 [ main::$76 ]
-zp[2]:46 [ main::$77 ]
+zp[2]:16 [ main::$38 main::$62 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ]
+zp[2]:18 [ main::$61 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
+zp[2]:20 [ main::$44 main::$77 main::$33 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
+zp[2]:22 [ main::$63 ]
+zp[2]:24 [ main::$64 ]
+zp[2]:26 [ main::$65 ]
+zp[2]:28 [ main::$66 ]
+zp[2]:30 [ main::$67 ]
+zp[2]:32 [ main::$68 ]
+zp[2]:34 [ main::$69 ]
+zp[2]:36 [ main::$70 ]
+zp[2]:38 [ main::$71 main::$20 ]
+zp[2]:40 [ main::$74 ]
+zp[2]:42 [ main::$75 ]
+zp[2]:44 [ main::$72 main::$23 ]
+zp[2]:46 [ main::$73 main::$25 ]
+zp[1]:48 [ main::$26 ]
+zp[2]:49 [ main::$78 ]
+zp[2]:51 [ main::$79 ]
 reg byte a [ main::$30 ]
-zp[2]:48 [ main::$56 main::$31 ]
-zp[2]:50 [ main::$78 ]
-zp[2]:52 [ main::$74 main::$32 ]
+zp[2]:53 [ main::$56 main::$31 ]
+zp[2]:55 [ main::$80 ]
+zp[2]:57 [ main::$76 main::$32 ]
 reg byte x [ main::$48 ]
-zp[2]:54 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
-zp[2]:56 [ main::$36 main::$60 ]
-zp[2]:58 [ main::$59 ]
+zp[2]:59 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ]
+zp[2]:61 [ main::$36 main::$60 ]
+zp[2]:63 [ main::$59 ]
 reg byte x [ main::$12 ]
 reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ]
 reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ]
 reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ]
 reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ]
 reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ]
-zp[2]:60 [ rand::$0 ]
-zp[2]:62 [ rand::$1 ]
-zp[2]:64 [ rand::$2 ]
+zp[2]:65 [ rand::$0 ]
+zp[2]:67 [ rand::$1 ]
+zp[2]:69 [ rand::$2 ]