From f40050c558414ff0e1d5c0a8148fc162d1654004 Mon Sep 17 00:00:00 2001
From: jespergravgaard <jesper@balmangravgaard.dk>
Date: Sat, 6 Mar 2021 08:26:41 +0100
Subject: [PATCH] Fixed problem with erronously coalescing structs of same
 size/type affected by address-of. Closes #632

---
 .../cache/fragment-cache-csg65ce02.asm        |  2176 ++-
 .../cache/fragment-cache-mega45gs02.asm       |  1829 ++-
 .../fragment/cache/fragment-cache-mos6502.asm |     2 +-
 .../cache/fragment-cache-mos6502x.asm         | 11618 +++++++++++-----
 .../cache/fragment-cache-rom6502x.asm         |  1129 +-
 .../cache/fragment-cache-wdc65c02.asm         |  4181 +++++-
 .../java/dk/camelot64/kickc/Compiler.java     |     2 +-
 .../kickc/passes/Pass1AddressOfHandling.java  |     1 +
 .../dk/camelot64/kickc/test/TestPrograms.java |     6 +
 src/test/ref/declared-memory-var-3.log        |     6 +-
 src/test/ref/declared-memory-var-3.sym        |     2 +-
 src/test/ref/declared-memory-var-4.log        |     6 +-
 src/test/ref/declared-memory-var-4.sym        |     2 +-
 src/test/ref/examples/cx16/cx16-bankload.log  |     6 +-
 src/test/ref/examples/cx16/cx16-bankload.sym  |     2 +-
 src/test/ref/examples/cx16/cx16-sprites.log   |     7 +-
 src/test/ref/examples/cx16/cx16-sprites.sym   |     2 +-
 src/test/ref/examples/mega65/banked-music.log |     9 +-
 src/test/ref/examples/mega65/banked-music.sym |     2 +-
 src/test/ref/examples/mega65/dma-test.log     |     7 +-
 src/test/ref/examples/mega65/dma-test.sym     |     2 +-
 src/test/ref/examples/mega65/dma-test2.log    |     9 +-
 src/test/ref/examples/mega65/dma-test2.sym    |     2 +-
 src/test/ref/examples/mega65/dma-test3.log    |     9 +-
 src/test/ref/examples/mega65/dma-test3.sym    |     2 +-
 src/test/ref/examples/mega65/dma-test4.log    |     3 -
 src/test/ref/examples/mega65/dma-test5.log    |     9 +-
 src/test/ref/examples/mega65/dma-test5.sym    |     2 +-
 src/test/ref/examples/mega65/dma-test6.log    |     3 -
 src/test/ref/examples/mega65/dypp65.log       |     9 +-
 src/test/ref/examples/mega65/dypp65.sym       |     2 +-
 src/test/ref/parse-negated-struct-ref.log     |     6 +-
 src/test/ref/parse-negated-struct-ref.sym     |     2 +-
 src/test/ref/struct-21.log                    |     6 +-
 src/test/ref/struct-21.sym                    |     2 +-
 src/test/ref/struct-35.log                    |     6 +-
 src/test/ref/struct-35.sym                    |     2 +-
 src/test/ref/struct-pointer-ints.log          |     6 +-
 src/test/ref/struct-pointer-ints.sym          |     2 +-
 src/test/ref/struct-pointer-to-member-2.log   |     7 +-
 src/test/ref/struct-pointer-to-member-2.sym   |     2 +-
 src/test/ref/struct-ptr-19.log                |     6 +-
 src/test/ref/struct-ptr-19.sym                |     2 +-
 src/test/ref/struct-ptr-28.log                |    12 +-
 src/test/ref/struct-ptr-28.sym                |     4 +-
 src/test/ref/struct-ptr-35.asm                |    83 +
 src/test/ref/struct-ptr-35.cfg                |    18 +
 src/test/ref/struct-ptr-35.log                |   453 +
 src/test/ref/struct-ptr-35.sym                |    22 +
 49 files changed, 17622 insertions(+), 4066 deletions(-)
 create mode 100644 src/test/ref/struct-ptr-35.asm
 create mode 100644 src/test/ref/struct-ptr-35.cfg
 create mode 100644 src/test/ref/struct-ptr-35.log
 create mode 100644 src/test/ref/struct-ptr-35.sym

diff --git a/src/main/fragment/cache/fragment-cache-csg65ce02.asm b/src/main/fragment/cache/fragment-cache-csg65ce02.asm
index c1bde2928..bbca180d4 100644
--- a/src/main/fragment/cache/fragment-cache-csg65ce02.asm
+++ b/src/main/fragment/cache/fragment-cache-csg65ce02.asm
@@ -1,15 +1,2185 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
+//FRAGMENT vbuz1=vbuc1
+lda #{c1}
+sta {z1}
+//FRAGMENT pbuz1=pbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuc1
+lda {c1}
+sta {z1}
+//FRAGMENT vbuz1_lt_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vduz1=vduz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_2
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_3
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vbuz1=_inc_vbuz1
+inc {z1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
+lda #{c1}
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT vbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+//FRAGMENT pbuz1=_inc_pbuz1
+inw {z1}
+//FRAGMENT 0_neq_vbuz1_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT _deref_pbuc1=vbuc2
+lda #{c2}
+sta {c1}
+//FRAGMENT vduz1=vduc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+lda #<{c1}>>$10
+sta {z1}+2
+lda #>{c1}>>$10
+sta {z1}+3
+//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ldx {z1}
+inc {c1},x
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1
+ldy {z1}
+lda {c1},y
+cmp #{c2}
+beq {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT 0_eq_vbuz1_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT vbuz1_eq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT vduz1=_inc_vduz1
+inc {z1}
+bne !+
+inc {z1}+1
+bne !+
+inc {z1}+2
+bne !+
+inc {z1}+3
+!:
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1=_dec_vbuz1
+dec {z1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
+lda {z3}
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT vbuz1_neq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bne {la1}
+//FRAGMENT vwuz1=vwuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=_byte_vwuz2
+lda {z2}
+sta {z1}
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=_inc_pbuz2
+clc
+lda {z2}
+adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=vbuc1
+lda #{c1}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuz1=vbuz2_rol_1
+lda {z2}
+asl
+sta {z1}
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vwuz1_ge_vwuz2_then_la1
+lda {z2}+1
+cmp {z1}+1
+bne !+
+lda {z2}
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT vwuz1=vwuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbsz1=_sbyte_vwuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbsz1=_inc_vbsz1
+inc {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+//FRAGMENT vbsz1_ge_0_then_la1
+lda {z1}
+cmp #0
+bpl {la1}
+//FRAGMENT vbsz1=vbsc1
+lda #{c1}
+sta {z1}
+//FRAGMENT 0_neq_vbsz1_then_la1
+lda {z1}
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=vbuz2_minus_1
+ldx {z2}
+dex
+stx {z1}
+//FRAGMENT vbuz1_le_vbuz2_then_la1
+lda {z2}
+cmp {z1}
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1
+ldy {z1}
+lda {c1},y
+cmp {z2}
+beq {la1}
+//FRAGMENT vbuz1_lt_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+//FRAGMENT vbuz1_neq_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT vbuz1=_byte_vduz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_rol_2
+lda {z2}
+asl
+asl
+sta {z1}
+//FRAGMENT vduz1=pduc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1_ge_vduz2_then_la1
+lda {z1}+3
+cmp {z2}+3
+bcc !+
+bne {la1}
+lda {z1}+2
+cmp {z2}+2
+bcc !+
+bne {la1}
+lda {z1}+1
+cmp {z2}+1
+bcc !+
+bne {la1}
+lda {z1}
+cmp {z2}
+bcs {la1}
+!:
+//FRAGMENT vwuz1=vwuz1_minus_vwuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+//FRAGMENT 0_neq__deref_pbuz1_then_la1
+ldy #0
+lda ({z1}),y
+cmp #0
+bne {la1}
+//FRAGMENT vwuz1=_inc_vwuz1
+inw {z1}
+//FRAGMENT _deref_pbuz1=vbuz2
+lda {z2}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vduz1=vduz1_minus_vduz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+lda {z1}+2
+sbc {z2}+2
+sta {z1}+2
+lda {z1}+3
+sbc {z2}+3
+sta {z1}+3
+//FRAGMENT pvoz1=pvoc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
+lda {z1}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vbuz1_le_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1_ge_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcs {la1}
+//FRAGMENT pbuz1=pbuz2_plus_vwuc1
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1_neq_pbuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT _deref_pbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=pbuz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuc1
+lda {c1}
+//FRAGMENT vbuxx=_deref_pbuc1
+ldx {c1}
+//FRAGMENT vbuaa_lt_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
+//FRAGMENT vbuaa=vbuz1
+lda {z1}
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//FRAGMENT vbuz1=vbuxx
+stx {z1}
+//FRAGMENT vwuz1=_word_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuzz
+tza
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1
+taz
+lda #{c1}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuxx=vbuc1
+txa
+taz
+lda #{c1}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuyy=vbuc1
+lda #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuzz=vbuc1
+lda #{c1}
+sta ({z1}),z
+//FRAGMENT vbuaa=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tay
+//FRAGMENT vbuzz=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+taz
+//FRAGMENT 0_neq_vbuaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
+inc {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuc2_then_la1
+lda {c1},x
+cmp #{c2}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuc2_then_la1
+tza
+tay
+lda {c1},y
+cmp #{c2}
+beq {la1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
+ldy {z1}
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldy {c1},x
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldz {c1},x
+//FRAGMENT 0_eq_vbuaa_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vbuxx_eq_vbuc1_then_la1
+cpx #{c1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
+lda #{c2}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuzz=vbuc2
+tza
+tay
+lda #{c2}
+sta {c1},y
+//FRAGMENT vbuaa_eq_vbuc1_then_la1
+cmp #{c1}
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
+txa
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
+tya
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuzz
+tza
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT vbuaa=_byte_vwuz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vwuz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vwuz1
+lda {z1}
+tay
+//FRAGMENT vbuzz=_byte_vwuz1
+lda {z1}
+taz
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuaa=vbuz1_rol_1
+lda {z1}
+asl
+//FRAGMENT vbuxx=vbuz1_rol_1
+lda {z1}
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_1
+lda {z1}
+asl
+tay
+//FRAGMENT vbuzz=vbuz1_rol_1
+lda {z1}
+asl
+taz
+//FRAGMENT vbuz1=vbuaa_rol_1
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_1
+asl
+//FRAGMENT vbuxx=vbuaa_rol_1
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_1
+asl
+tay
+//FRAGMENT vbuzz=vbuaa_rol_1
+asl
+taz
+//FRAGMENT vbuz1=vbuxx_rol_1
+txa
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_rol_1
+txa
+asl
+//FRAGMENT vbuxx=vbuxx_rol_1
+txa
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_rol_1
+txa
+asl
+tay
+//FRAGMENT vbuzz=vbuxx_rol_1
+txa
+asl
+taz
+//FRAGMENT vbuz1=vbuyy_rol_1
+tya
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_rol_1
+tya
+asl
+//FRAGMENT vbuxx=vbuyy_rol_1
+tya
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_rol_1
+tya
+asl
+tay
+//FRAGMENT vbuzz=vbuyy_rol_1
+tya
+asl
+taz
+//FRAGMENT vbuz1=vbuzz_rol_1
+tza
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuzz_rol_1
+tza
+asl
+//FRAGMENT vbuxx=vbuzz_rol_1
+tza
+asl
+tax
+//FRAGMENT vbuyy=vbuzz_rol_1
+tza
+asl
+tay
+//FRAGMENT vbuzz=vbuzz_rol_1
+tza
+asl
+taz
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT 0_neq_vbuxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbsaa=_sbyte_vwuz1
+lda {z1}
+//FRAGMENT vbsxx=_sbyte_vwuz1
+ldx {z1}
+//FRAGMENT 0_eq_vbuxx_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsaa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsxx
+txa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsyy
+tya
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbszz
+tza
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsxx=vbsz1_minus_vbsz2
+lda {z1}
+sec
+sbc {z2}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsaa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsyy
+tya
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbszz
+tza
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsz1=vbsxx_minus_vbsz2
+txa
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsxx
+lda #0
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsyy
+txa
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbszz
+txa
+stz $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsxx=vbsxx_minus_vbsz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsxx
+lda #0
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbszz
+txa
+stz $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsz1=vbsyy_minus_vbsz2
+tya
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsaa
+sta $ff
+tya
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsxx
+tya
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsyy
+lda #0
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbszz
+tya
+stz $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsxx=vbsyy_minus_vbsz1
+tya
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsaa
+sta $ff
+tya
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsxx
+tya
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsyy
+lda #0
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbszz
+tya
+stz $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsz1=vbszz_minus_vbsz2
+tza
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbszz_minus_vbsaa
+tay
+tza
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbszz_minus_vbsxx
+tza
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbszz_minus_vbsyy
+tza
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbszz_minus_vbszz
+tza
+lda #0
+sta {z1}
+//FRAGMENT vbsxx=vbszz_minus_vbsz1
+tza
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbszz_minus_vbsaa
+tax
+tza
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbszz_minus_vbsxx
+tza
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbszz_minus_vbsyy
+tza
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbszz_minus_vbszz
+tza
+lda #0
+tax
+//FRAGMENT vbsxx_ge_0_then_la1
+cpx #0
+bpl {la1}
+//FRAGMENT 0_neq_vbsxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuz1=vbuaa_minus_1
+sec
+sbc #1
+sta {z1}
+//FRAGMENT vbuaa_le_vbuz1_then_la1
+ldy {z1}
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuz1_then_la1
+tay
+lda {c1},y
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1
+lda {c1},x
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1
+lda {c1},y
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuz1_then_la1
+tza
+tay
+lda {c1},y
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuaa_then_la1
+ldx {z1}
+tay
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuaa_then_la1
+tax
+lda {c1},x
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuaa_then_la1
+tay
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuaa_then_la1
+tax
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuaa_then_la1
+tax
+tza
+tay
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuxx_then_la1
+ldy {z1}
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuxx_then_la1
+tay
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuxx_then_la1
+lda {c1},x
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuxx_then_la1
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuxx_then_la1
+tza
+tay
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuyy_then_la1
+ldx {z1}
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuyy_then_la1
+tax
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuyy_then_la1
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuyy_then_la1
+lda {c1},y
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuyy_then_la1
+tza
+tax
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuzz_then_la1
+ldy {z1}
+lda {c1},y
+tay
+sty $ff
+cpz $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuzz_then_la1
+tay
+lda {c1},y
+tay
+sty $ff
+cpz $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuzz_then_la1
+lda {c1},x
+tay
+sty $ff
+cpz $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuzz_then_la1
+lda {c1},y
+tay
+sty $ff
+cpz $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuzz_eq_vbuzz_then_la1
+tza
+tay
+lda {c1},y
+tay
+sty $ff
+cpz $ff
+beq  {la1}
+//FRAGMENT vbuaa_lt_vbuz1_then_la1
+cmp {z1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuz2
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuz2
+txa
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuz2
+tya
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_minus_vbuz2
+tza
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+//FRAGMENT vbuaa=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuzz_minus_vbuz1
+tza
+sec
+sbc {z1}
+//FRAGMENT vbuxx=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuzz_minus_vbuz1
+tza
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuzz_minus_vbuz1
+tza
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuzz=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+taz
+//FRAGMENT vbuzz=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+taz
+//FRAGMENT vbuzz=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+taz
+//FRAGMENT vbuzz=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+taz
+//FRAGMENT vbuzz=vbuzz_minus_vbuz1
+tza
+sec
+sbc {z1}
+taz
+//FRAGMENT vbuz1=vbuz2_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuxx
+lda #0
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_minus_vbuxx
+tza
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuxx_minus_vbuxx
+lda #0
+//FRAGMENT vbuaa=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuzz_minus_vbuxx
+tza
+stx $ff
+sec
+sbc $ff
+//FRAGMENT vbuxx=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuxx
+lda #0
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuzz_minus_vbuxx
+tza
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuxx
+lda #0
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuzz_minus_vbuxx
+tza
+stx $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuzz=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+taz
+//FRAGMENT vbuzz=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuxx_minus_vbuxx
+lda #0
+taz
+//FRAGMENT vbuzz=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuzz_minus_vbuxx
+tza
+stx $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuz1=vbuz2_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuyy
+lda #0
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_minus_vbuyy
+tza
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuyy_minus_vbuyy
+lda #0
+//FRAGMENT vbuaa=vbuzz_minus_vbuyy
+tza
+sty $ff
+sec
+sbc $ff
+//FRAGMENT vbuxx=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuyy
+lda #0
+tax
+//FRAGMENT vbuxx=vbuzz_minus_vbuyy
+tza
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuyy
+lda #0
+tay
+//FRAGMENT vbuyy=vbuzz_minus_vbuyy
+tza
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuzz=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+taz
+//FRAGMENT vbuzz=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuyy_minus_vbuyy
+lda #0
+taz
+//FRAGMENT vbuzz=vbuzz_minus_vbuyy
+tza
+sty $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuz1=vbuz2_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuzz
+stz $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuzz
+txa
+stz $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuzz
+tya
+stz $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_minus_vbuzz
+tza
+lda #0
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuzz
+stz $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuxx_minus_vbuzz
+txa
+stz $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuyy_minus_vbuzz
+tya
+stz $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuzz_minus_vbuzz
+tza
+lda #0
+//FRAGMENT vbuxx=vbuz1_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuzz
+stz $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuzz
+txa
+stz $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuzz
+tya
+stz $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuzz_minus_vbuzz
+tza
+lda #0
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuzz
+stz $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuzz
+txa
+stz $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuzz
+tya
+stz $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuzz_minus_vbuzz
+tza
+lda #0
+tay
+//FRAGMENT vbuzz=vbuz1_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z1}
+taz
+//FRAGMENT vbuzz=vbuaa_minus_vbuzz
+stz $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuxx_minus_vbuzz
+txa
+stz $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuyy_minus_vbuzz
+tya
+stz $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuzz=vbuzz_minus_vbuzz
+tza
+lda #0
+taz
+//FRAGMENT vbuxx_lt_vbuz1_then_la1
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuz1_neq_vbuaa_then_la1
+cmp {z1}
+bne {la1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuaa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuxx=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuzz=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+taz
+//FRAGMENT vbuz1=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbuyy=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tay
+//FRAGMENT vbuzz=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+taz
+//FRAGMENT vbuz1=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuxx=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+tax
+//FRAGMENT vbuyy=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+tay
+//FRAGMENT vbuzz=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+taz
+//FRAGMENT vbuz1=vbuzz_minus_vbuaa
+tay
+tza
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuxx=vbuzz_minus_vbuaa
+tax
+tza
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuyy=vbuzz_minus_vbuaa
+tay
+tza
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuzz=vbuzz_minus_vbuaa
+tay
+tza
+sty $ff
+sec
+sbc $ff
+taz
+//FRAGMENT vbuxx_lt_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+//FRAGMENT vbuaa=_byte_vduz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vduz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vduz1
+lda {z1}
+tay
+//FRAGMENT vbuzz=_byte_vduz1
+lda {z1}
+taz
+//FRAGMENT vbuz1=vbuaa_rol_2
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_rol_2
+txa
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_rol_2
+tya
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_rol_2
+tza
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_rol_2
+lda {z1}
+asl
+asl
+//FRAGMENT vbuaa=vbuaa_rol_2
+asl
+asl
+//FRAGMENT vbuaa=vbuxx_rol_2
+txa
+asl
+asl
+//FRAGMENT vbuaa=vbuyy_rol_2
+tya
+asl
+asl
+//FRAGMENT vbuaa=vbuzz_rol_2
+tza
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuaa_rol_2
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuxx_rol_2
+txa
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuyy_rol_2
+tya
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuzz_rol_2
+tza
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuaa_rol_2
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuxx_rol_2
+txa
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuyy_rol_2
+tya
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuzz_rol_2
+tza
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuz1_rol_2
+lda {z1}
+asl
+asl
+taz
+//FRAGMENT vbuzz=vbuaa_rol_2
+asl
+asl
+taz
+//FRAGMENT vbuzz=vbuxx_rol_2
+txa
+asl
+asl
+taz
+//FRAGMENT vbuzz=vbuyy_rol_2
+tya
+asl
+asl
+taz
+//FRAGMENT vbuzz=vbuzz_rol_2
+tza
+asl
+asl
+taz
+//FRAGMENT vduz1=pduc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+lda {c1}+2,x
+sta {z1}+2
+lda {c1}+3,x
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT _deref_pbuz1=vbuaa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuxx
+txa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuyy
+tya
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuzz
+tza
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuaa_le_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuaa=vbuaa_plus_vbuc1
+clc
+adc #{c1}
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+clc
+adc #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuzz=vbuzz_plus_vbuc1
+tza
+clc
+adc #{c1}
+taz
+//FRAGMENT vbuaa_ge_vbuz1_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuzz
+tza
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_1
+dex
+stx {z1}
+//FRAGMENT vbuz1=vbuyy_minus_1
+tya
+sec
+sbc #1
+sta {z1}
+//FRAGMENT vbuxx_le_vbuz1_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuyy_le_vbuz1_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuzz_le_vbuz1_then_la1
+ldy {z1}
+tza
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT vbuz1_le_vbuaa_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuz1_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vbuxx=vbuc1
+ldx #{c1}
 //FRAGMENT vbuzz=vbuc1
 ldz #{c1}
+//FRAGMENT vbuzz=vbuz1
+ldz {z1}
+//FRAGMENT vbuz1=vbuzz
+tza
+sta {z1}
+//FRAGMENT vbuzz_ge_vbuz1_then_la1
+cpz {z1}
+bcs {la1}
+//FRAGMENT vbuxx=_inc_vbuxx
+inx
+//FRAGMENT vbuyy=vbuc1
+ldy #{c1}
+//FRAGMENT vbuyy=_inc_vbuyy
+iny
+//FRAGMENT vbuzz=_inc_vbuzz
+inz
+//FRAGMENT vbuz1_ge_vbuxx_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuzz_ge_vbuxx_then_la1
+stx $ff
+cpz $ff
+bcs {la1}
+//FRAGMENT vbuyy=vbuz1
+ldy {z1}
+//FRAGMENT vbuz1_ge_vbuyy_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuyy_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuzz_ge_vbuyy_then_la1
+sty $ff
+cpz $ff
+bcs {la1}
+//FRAGMENT vbuz1_ge_vbuzz_then_la1
+ldy {z1}
+tza
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuzz_then_la1
+tza
+tay
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuaa=vbuxx
+txa
+//FRAGMENT vbuaa=vbuzz
+tza
+//FRAGMENT vbuxx=vbuzz
+tza
+tax
+//FRAGMENT vbuxx_le_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuz1=vbuyy
+sty {z1}
+//FRAGMENT vbuyy_lt_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
+//FRAGMENT vbuyy_le_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
+beq {la1}
 //FRAGMENT vbuzz_lt_vbuc1_then_la1
 cpz #{c1}
 bcc {la1}
+//FRAGMENT vbuzz_le_vbuc1_then_la1
+cpz #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuaa=vbuyy
+tya
+//FRAGMENT vbuxx=vbuaa
+tax
+//FRAGMENT vbuxx=vbuyy
+tya
+tax
+//FRAGMENT vbuyy=vbuaa
+tay
+//FRAGMENT vbuyy=vbuxx
+txa
+tay
+//FRAGMENT vbuyy=vbuzz
+tza
+tay
+//FRAGMENT vbuzz=vbuaa
+taz
+//FRAGMENT vbuzz=vbuxx
+txa
+taz
+//FRAGMENT vbuzz=vbuyy
+tya
+taz
+//FRAGMENT vbuyy_eq_vbuc1_then_la1
+cpy #{c1}
+beq {la1}
+//FRAGMENT vbuzz_eq_vbuc1_then_la1
+cpz #{c1}
+beq {la1}
+//FRAGMENT vbuz1_lt_vbuxx_then_la1
+cpx {z1}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT vbuyy_ge_vbuz1_then_la1
+cpy {z1}
+bcs {la1}
+//FRAGMENT vbuaa=vbuc1
+lda #{c1}
+//FRAGMENT 0_neq_vbuyy_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT 0_neq_vbuzz_then_la1
+cpz #0
+bne {la1}
+//FRAGMENT vbuyy_ge_vbuxx_then_la1
+stx $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT vbsaa=_inc_vbsaa
+inc
+//FRAGMENT vbsxx=_inc_vbsxx
+inx
+//FRAGMENT vbsyy=_sbyte_vwuz1
+ldy {z1}
+//FRAGMENT vbsyy=_inc_vbsyy
+iny
+//FRAGMENT vbszz=_sbyte_vwuz1
+ldz {z1}
+//FRAGMENT vbszz=_inc_vbszz
+inz
+//FRAGMENT 0_eq_vbuzz_then_la1
+cpz #0
+beq {la1}
+//FRAGMENT vbuz1_neq_vbuxx_then_la1
+cpx {z1}
+bne {la1}
+//FRAGMENT vbuz1_neq_vbuyy_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbuz1_neq_vbuzz_then_la1
+cpz {z1}
+bne {la1}
+//FRAGMENT vbuxx_neq_vbuz1_then_la1
+cpx {z1}
+bne {la1}
+//FRAGMENT vbuxx_neq_vbuaa_then_la1
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuxx_neq_vbuyy_then_la1
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuxx_neq_vbuzz_then_la1
+tza
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuyy_neq_vbuz1_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbuyy_neq_vbuaa_then_la1
+tax
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuyy_neq_vbuxx_then_la1
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuyy_neq_vbuzz_then_la1
+tza
+tax
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuzz_neq_vbuz1_then_la1
+cpz {z1}
+bne {la1}
+//FRAGMENT vbuzz_neq_vbuaa_then_la1
+tax
+tza
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuzz_neq_vbuxx_then_la1
+tza
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuzz_neq_vbuyy_then_la1
+tza
+tax
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuyy_lt_vbuz1_then_la1
+cpy {z1}
+bcc {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuzz_lt_vbuz1_then_la1
+cpz {z1}
+bcc {la1}
+//FRAGMENT vbuaa=vbuz1_minus_1
+lda {z1}
+sec
+sbc #1
+//FRAGMENT 0_eq_vbuyy_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vbuyy=_deref_pbuc1
+ldy {c1}
+//FRAGMENT vbuzz=_deref_pbuc1
+ldz {c1}
+//FRAGMENT vbuyy_le_vbuaa_then_la1
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx=vbuz1_minus_1
+ldx {z1}
+dex
+//FRAGMENT vbuyy_le_vbuxx_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuzz=vbuz1_minus_1
+lda {z1}
+taz
+dez
+//FRAGMENT vbuyy_le_vbuzz_then_la1
+sty $ff
+cpz $ff
+bcs {la1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy
+ldx {c1},y
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuyy
+lda {c1},y
+taz
+//FRAGMENT vbuaa_lt_vbuzz_then_la1
+stz $ff
+cmp $ff
+bcc {la1}
+//FRAGMENT vbuxx=vbuzz_minus_1
+tza
+tax
+dex
+//FRAGMENT vbuyy_lt_vbuzz_then_la1
+stz $ff
+cpy $ff
+bcc {la1}
+//FRAGMENT vwuz1=vwuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_3
+asw {z1}
+asw {z1}
+asw {z1}
 //FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
 tza
 tax
 sta {c1},x
-//FRAGMENT vbuzz=_inc_vbuzz
-inz
 //FRAGMENT vbsz1=_deref_pbsc1
 lda {c1}
 sta {z1}
diff --git a/src/main/fragment/cache/fragment-cache-mega45gs02.asm b/src/main/fragment/cache/fragment-cache-mega45gs02.asm
index 00853108c..d916d6ebf 100644
--- a/src/main/fragment/cache/fragment-cache-mega45gs02.asm
+++ b/src/main/fragment/cache/fragment-cache-mega45gs02.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
 //FRAGMENT _deref_pbuc1=vbuc2
 lda #{c2}
 sta {c1}
@@ -59,363 +59,27 @@ sta ({z1}),y
 ldy {z1}
 //FRAGMENT vbuzz=_lo_pbuz1
 ldz {z1}
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {c1}
-//FRAGMENT pvoz1=pvoc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
 //FRAGMENT vbuz1=vbuc1
 lda #{c1}
 sta {z1}
-//FRAGMENT vwuz1=vwuc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT pwuz1=pbuc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT vbuz1_lt_vbuc1_then_la1
-lda {z1}
-cmp #{c1}
-bcc {la1}
-//FRAGMENT pbuz1=pbuz1_plus_vwuc1
-clc
-lda {z1}
-adc #<{c1}
-sta {z1}
-lda {z1}+1
-adc #>{c1}
-sta {z1}+1
-//FRAGMENT pbuz1=pbuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vbuz1=_inc_vbuz1
-inc {z1}
-//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz2
-ldy {z2}
-lda ({z3}),y
-sta ({z1}),y
-//FRAGMENT vwuz1=_word_vbuz2
-lda {z2}
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT pwuz1=pwuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vbuz1=vbuz2_rol_1
-lda {z2}
-asl
-sta {z1}
-//FRAGMENT pwuz1_derefidx_vbuz2=vwuz3
-ldy {z2}
-lda {z3}
-sta ({z1}),y
-iny
-lda {z3}+1
-sta ({z1}),y
-//FRAGMENT vwuz1=vwuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vbuz1=_deref_pbuc1
-lda {c1}
-sta {z1}
-//FRAGMENT _deref_pwuc1=vwuz1
-lda {z1}
-sta {c1}
-lda {z1}+1
-sta {c1}+1
-//FRAGMENT _deref_qbuc1=_ptr_vbuz1
-lda {z1}
-sta {c1}
-lda #0
-sta {c1}+1
-//FRAGMENT _deref_qbuc1=pbuz1
-lda {z1}
-sta {c1}
-lda {z1}+1
-sta {c1}+1
-//FRAGMENT _deref_pbuc1=vbuz1
-lda {z1}
-sta {c1}
-//FRAGMENT _deref_pwuc1=vwuc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
-//FRAGMENT _deref_qbuc1=pbuc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
-//FRAGMENT vbuaa_lt_vbuc1_then_la1
-cmp #{c1}
-bcc {la1}
-//FRAGMENT pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuaa
-tay
-lda ({z2}),y
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuxx
-txa
-tay
-lda ({z2}),y
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy
-lda ({z2}),y
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuzz=pbuz2_derefidx_vbuzz
-tza
-tay
-lda ({z2}),y
-sta ({z1}),y
-//FRAGMENT vwuz1=_word_vbuaa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuxx
-txa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuyy
-tya
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuzz
-tza
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vbuz1=vbuaa_rol_1
-asl
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_rol_1
-txa
-asl
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_rol_1
-tya
-asl
-sta {z1}
-//FRAGMENT vbuz1=vbuzz_rol_1
-tza
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_rol_1
-lda {z1}
-asl
-//FRAGMENT vbuaa=vbuaa_rol_1
-asl
-//FRAGMENT vbuaa=vbuxx_rol_1
-txa
-asl
-//FRAGMENT vbuaa=vbuyy_rol_1
-tya
-asl
-//FRAGMENT vbuaa=vbuzz_rol_1
-tza
-asl
-//FRAGMENT vbuxx=vbuz1_rol_1
-lda {z1}
-asl
-tax
-//FRAGMENT vbuxx=vbuaa_rol_1
-asl
-tax
-//FRAGMENT vbuxx=vbuxx_rol_1
-txa
-asl
-tax
-//FRAGMENT vbuxx=vbuyy_rol_1
-tya
-asl
-tax
-//FRAGMENT vbuxx=vbuzz_rol_1
-tza
-asl
-tax
-//FRAGMENT vbuyy=vbuz1_rol_1
-lda {z1}
-asl
-tay
-//FRAGMENT vbuyy=vbuaa_rol_1
-asl
-tay
-//FRAGMENT vbuyy=vbuxx_rol_1
-txa
-asl
-tay
-//FRAGMENT vbuyy=vbuyy_rol_1
-tya
-asl
-tay
-//FRAGMENT vbuyy=vbuzz_rol_1
-tza
-asl
-tay
-//FRAGMENT vbuzz=vbuz1_rol_1
-lda {z1}
-asl
-taz
-//FRAGMENT vbuzz=vbuaa_rol_1
-asl
-taz
-//FRAGMENT vbuzz=vbuxx_rol_1
-txa
-asl
-taz
-//FRAGMENT vbuzz=vbuyy_rol_1
-tya
-asl
-taz
-//FRAGMENT vbuzz=vbuzz_rol_1
-tza
-asl
-taz
-//FRAGMENT pwuz1_derefidx_vbuaa=vwuz2
-tay
-lda {z2}
-sta ({z1}),y
-iny
-lda {z2}+1
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuxx=vwuz2
-txa
-tay
-lda {z2}
-sta ({z1}),y
-iny
-lda {z2}+1
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuyy=vwuz2
-lda {z2}
-sta ({z1}),y
-iny
-lda {z2}+1
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuzz=vwuz2
-tza
-tay
-lda {z2}
-sta ({z1}),y
-iny
-lda {z2}+1
-sta ({z1}),y
-//FRAGMENT vbuaa=_deref_pbuc1
-lda {c1}
-//FRAGMENT vbuxx=_deref_pbuc1
-ldx {c1}
-//FRAGMENT _deref_qbuc1=_ptr_vbuxx
-txa
-sta {c1}
-lda #0
-sta {c1}+1
-//FRAGMENT _deref_qbuc1=_ptr_vbuyy
-tya
-sta {c1}
-lda #0
-sta {c1}+1
-//FRAGMENT _deref_qbuc1=_ptr_vbuzz
-tza
-sta {c1}
-lda #0
-sta {c1}+1
-//FRAGMENT _deref_pbuc1=vbuxx
-stx {c1}
-//FRAGMENT vbuxx_lt_vbuc1_then_la1
-cpx #{c1}
-bcc {la1}
-//FRAGMENT vbuxx=vbuc1
-ldx #{c1}
-//FRAGMENT vbuxx=_inc_vbuxx
-inx
-//FRAGMENT vbuyy=vbuc1
-ldy #{c1}
-//FRAGMENT vbuyy_lt_vbuc1_then_la1
-cpy #{c1}
-bcc {la1}
-//FRAGMENT vbuyy=_inc_vbuyy
-iny
-//FRAGMENT vbuzz=vbuc1
-ldz #{c1}
-//FRAGMENT vbuzz_lt_vbuc1_then_la1
-cpz #{c1}
-bcc {la1}
-//FRAGMENT vbuzz=_inc_vbuzz
-inz
-//FRAGMENT vbuyy=_deref_pbuc1
-ldy {c1}
-//FRAGMENT _deref_pbuc1=vbuyy
-sty {c1}
-//FRAGMENT vbuzz=_deref_pbuc1
-ldz {c1}
-//FRAGMENT _deref_pbuc1=vbuzz
-stz {c1}
 //FRAGMENT isr_hardware_all_entry
 pha @clob_a
 phx @clob_x
 phy @clob_y
 phz @clob_z
-//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
-inc {c1}
-//FRAGMENT vwuz1=vbuc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT _deref_pbuc1_eq_vbuz1_then_la1
-lda {c1}
-cmp {z1}
-beq {la1}
-//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
-dec {c1}
-//FRAGMENT isr_hardware_all_exit
-plz @clob_z
-ply @clob_y
-plx @clob_x
-pla @clob_a
-rti
-//FRAGMENT _deref_qprc1=pprc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
-//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
-ldx {z1}
-inc {c1},x
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},y
-//FRAGMENT vbuz1=_lo_vwuz2
-lda {z2}
-sta {z1}
+//FRAGMENT vbuz1=_inc_vbuz1
+inc {z1}
 //FRAGMENT vbuz1=vbuz2
 lda {z2}
 sta {z1}
+//FRAGMENT vbuz1_neq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bne {la1}
+//FRAGMENT vbuz1_lt_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcc {la1}
 //FRAGMENT vbuz1=vbuz2_rol_4
 lda {z2}
 asl
@@ -423,46 +87,119 @@ asl
 asl
 asl
 sta {z1}
-//FRAGMENT vbuz1=_hi_vwuz2
-lda {z2}+1
+//FRAGMENT vbuz1=_dec_vbuz1
+dec {z1}
+//FRAGMENT vbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
 sta {z1}
+//FRAGMENT vbuz1_neq_0_then_la1
+lda {z1}
+bne {la1}
 //FRAGMENT vbuz1=vbuz2_band_vbuc1
 lda #{c1}
 and {z2}
 sta {z1}
-//FRAGMENT vbuz1=vbuz2_bor_vbuz3
-lda {z2}
-ora {z3}
-sta {z1}
-//FRAGMENT _deref_pbuc1_eq_vbuaa_then_la1
-cmp {c1}
-beq {la1}
-//FRAGMENT pbuc1_derefidx_vbuaa=_inc_pbuc1_derefidx_vbuaa
-tax
-inc {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx
-inc {c1},x
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
-lda {c2},x
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
-lda {c2},y
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuzz=pbuc2_derefidx_vbuzz
-tza
-tay
-lda {c2},y
-sta {c1},y
-//FRAGMENT vbuaa=_lo_vwuz1
+//FRAGMENT _deref_pbuc1=vbuz1
 lda {z1}
-//FRAGMENT vbuxx=_lo_vwuz1
-ldx {z1}
-//FRAGMENT vbuz1=vbuaa
+sta {c1}
+//FRAGMENT isr_hardware_all_exit
+plz @clob_z
+ply @clob_y
+plx @clob_x
+pla @clob_a
+rti
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},y
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_band_vbuc2
+lda #{c2}
+ldy {z2}
+and {c1},y
 sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
+lda {z2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_ror_1
+ldy {z2}
+lda {c1},y
+lsr
+sta {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_ror_2
+ldy {z2}
+lda {c1},y
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_ror_1
+lda {z2}
+lsr
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1_eq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT vbuz1=vbuz2_plus_1
+lda {z2}
+inc
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1
+lda {c1}
+sta {z1}
+//FRAGMENT vbuz1_eq__deref_pbuc1_then_la1
+lda {c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+sta {c1}
+//FRAGMENT _deref_qprc1=pprc2
+lda #<{c2}
+sta {c1}
+lda #>{c2}
+sta {c1}+1
+//FRAGMENT pbuz1_neq_pbuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne {la1}
+lda {z1}
+cmp #<{c1}
+bne {la1}
+//FRAGMENT vbuaa=vbuz1
+lda {z1}
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//FRAGMENT vbuaa_neq_vbuc1_then_la1
+cmp #{c1}
+bne {la1}
+//FRAGMENT vbuaa_lt_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
 //FRAGMENT vbuaa=vbuz1_rol_4
 lda {z1}
 asl
@@ -490,6 +227,385 @@ asl
 asl
 asl
 taz
+//FRAGMENT vbuaa=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tay
+//FRAGMENT vbuzz=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+taz
+//FRAGMENT vbuaa_neq_0_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=vbuaa_band_vbuc1
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_band_vbuc1
+txa
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_band_vbuc1
+tya
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_band_vbuc1
+tza
+and #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+//FRAGMENT vbuaa=vbuaa_band_vbuc1
+and #{c1}
+//FRAGMENT vbuaa=vbuxx_band_vbuc1
+txa
+and #{c1}
+//FRAGMENT vbuaa=vbuyy_band_vbuc1
+tya
+and #{c1}
+//FRAGMENT vbuaa=vbuzz_band_vbuc1
+tza
+and #{c1}
+//FRAGMENT vbuxx=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_band_vbuc1
+and #{c1}
+tax
+//FRAGMENT vbuxx=vbuxx_band_vbuc1
+txa
+and #{c1}
+tax
+//FRAGMENT vbuxx=vbuyy_band_vbuc1
+tya
+and #{c1}
+tax
+//FRAGMENT vbuxx=vbuzz_band_vbuc1
+tza
+and #{c1}
+tax
+//FRAGMENT vbuyy=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_band_vbuc1
+and #{c1}
+tay
+//FRAGMENT vbuyy=vbuxx_band_vbuc1
+txa
+and #{c1}
+tay
+//FRAGMENT vbuyy=vbuyy_band_vbuc1
+tya
+and #{c1}
+tay
+//FRAGMENT vbuyy=vbuzz_band_vbuc1
+tza
+and #{c1}
+tay
+//FRAGMENT vbuzz=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+taz
+//FRAGMENT vbuzz=vbuaa_band_vbuc1
+and #{c1}
+taz
+//FRAGMENT vbuzz=vbuxx_band_vbuc1
+txa
+and #{c1}
+taz
+//FRAGMENT vbuzz=vbuyy_band_vbuc1
+tya
+and #{c1}
+taz
+//FRAGMENT vbuzz=vbuzz_band_vbuc1
+tza
+and #{c1}
+taz
+//FRAGMENT _deref_pbuc1=vbuaa
+sta {c1}
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuzz=pbuc2_derefidx_vbuzz
+tza
+tay
+lda {c2},y
+sta {c1},y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_band_vbuc2
+lda #{c2}
+ldy {z1}
+and {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_band_vbuc2
+lda #{c2}
+ldx {z1}
+and {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_band_vbuc2
+lda #{c2}
+ldy {z1}
+and {c1},y
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1_band_vbuc2
+lda #{c2}
+ldy {z1}
+and {c1},y
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa_band_vbuc2
+tay
+lda #{c2}
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa_band_vbuc2
+tay
+lda #{c2}
+and {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa_band_vbuc2
+tax
+lda #{c2}
+and {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa_band_vbuc2
+tay
+lda #{c2}
+and {c1},y
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuaa_band_vbuc2
+tay
+lda #{c2}
+and {c1},y
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_band_vbuc2
+lda #{c2}
+and {c1},x
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_band_vbuc2
+lda #{c2}
+and {c1},x
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_band_vbuc2
+lda #{c2}
+and {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_band_vbuc2
+lda #{c2}
+and {c1},x
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuxx_band_vbuc2
+lda #{c2}
+and {c1},x
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_band_vbuc2
+lda #{c2}
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_band_vbuc2
+lda #{c2}
+and {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_band_vbuc2
+lda #{c2}
+and {c1},y
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_band_vbuc2
+lda #{c2}
+and {c1},y
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuyy_band_vbuc2
+lda #{c2}
+and {c1},y
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz_band_vbuc2
+tza
+tay
+lda #{c2}
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuzz_band_vbuc2
+tza
+tay
+lda #{c2}
+and {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuzz_band_vbuc2
+tza
+tax
+lda #{c2}
+and {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuzz_band_vbuc2
+tza
+tay
+lda #{c2}
+and {c1},y
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuzz_band_vbuc2
+tza
+tay
+lda #{c2}
+and {c1},y
+taz
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuz1
+lda {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuzz=vbuz1
+tza
+tay
+lda {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuaa
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_ror_1
+ldy {z1}
+lda {c1},y
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_ror_1
+ldx {z1}
+lda {c1},x
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_ror_1
+ldy {z1}
+lda {c1},y
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1_ror_1
+ldy {z1}
+lda {c1},y
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa_ror_1
+tay
+lda {c1},y
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa_ror_1
+tay
+lda {c1},y
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa_ror_1
+tax
+lda {c1},x
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa_ror_1
+tay
+lda {c1},y
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuaa_ror_1
+tay
+lda {c1},y
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_ror_1
+lda {c1},x
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_ror_1
+lda {c1},x
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_ror_1
+lda {c1},x
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_ror_1
+lda {c1},x
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuxx_ror_1
+lda {c1},x
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_ror_1
+lda {c1},y
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_ror_1
+lda {c1},y
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_ror_1
+lda {c1},y
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_ror_1
+lda {c1},y
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuyy_ror_1
+lda {c1},y
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz_ror_1
+tza
+tay
+lda {c1},y
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuzz_ror_1
+tza
+tay
+lda {c1},y
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuzz_ror_1
+tza
+tax
+lda {c1},x
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuzz_ror_1
+tza
+tay
+lda {c1},y
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuzz_ror_1
+tza
+tay
+lda {c1},y
+lsr
+taz
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuxx
+ldy {z1}
+txa
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuyy
+tya
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuzz
+ldy {z1}
+tza
+sta {c1},y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
+ldy {z1}
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldy {c1},x
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldz {c1},x
 //FRAGMENT vbuz1=vbuaa_rol_4
 asl
 asl
@@ -621,193 +737,672 @@ asl
 asl
 asl
 taz
-//FRAGMENT vbuaa=_hi_vwuz1
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+clc
+adc #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuzz=vbuzz_plus_vbuc1
+tza
+clc
+adc #{c1}
+taz
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuc2
+tay
+lda #{c2}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
+lda #{c2}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuc2
+lda #{c2}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuzz=vbuc2
+tza
+tay
+lda #{c2}
+sta {c1},y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_ror_2
+ldy {z1}
+lda {c1},y
+lsr
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_ror_2
+ldx {z1}
+lda {c1},x
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_ror_2
+ldy {z1}
+lda {c1},y
+lsr
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuz1_ror_2
+ldy {z1}
+lda {c1},y
+lsr
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa_ror_2
+tay
+lda {c1},y
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa_ror_2
+tay
+lda {c1},y
+lsr
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa_ror_2
+tax
+lda {c1},x
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa_ror_2
+tay
+lda {c1},y
+lsr
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuaa_ror_2
+tay
+lda {c1},y
+lsr
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_ror_2
+lda {c1},x
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_ror_2
+lda {c1},x
+lsr
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_ror_2
+lda {c1},x
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_ror_2
+lda {c1},x
+lsr
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuxx_ror_2
+lda {c1},x
+lsr
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_ror_2
+lda {c1},y
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_ror_2
+lda {c1},y
+lsr
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_ror_2
+lda {c1},y
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_ror_2
+lda {c1},y
+lsr
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuyy_ror_2
+lda {c1},y
+lsr
+lsr
+taz
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz_ror_2
+tza
+tay
+lda {c1},y
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuzz_ror_2
+tza
+tay
+lda {c1},y
+lsr
+lsr
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuzz_ror_2
+tza
+tax
+lda {c1},x
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuzz_ror_2
+tza
+tay
+lda {c1},y
+lsr
+lsr
+tay
+//FRAGMENT vbuzz=pbuc1_derefidx_vbuzz_ror_2
+tza
+tay
+lda {c1},y
+lsr
+lsr
+taz
+//FRAGMENT vbuz1=vbuaa_ror_1
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_ror_1
+txa
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_ror_1
+tya
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_ror_1
+tza
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_1
+lda {z1}
+lsr
+//FRAGMENT vbuaa=vbuaa_ror_1
+lsr
+//FRAGMENT vbuaa=vbuxx_ror_1
+txa
+lsr
+//FRAGMENT vbuaa=vbuyy_ror_1
+tya
+lsr
+//FRAGMENT vbuaa=vbuzz_ror_1
+tza
+lsr
+//FRAGMENT vbuxx=vbuz1_ror_1
+lda {z1}
+lsr
+tax
+//FRAGMENT vbuxx=vbuaa_ror_1
+lsr
+tax
+//FRAGMENT vbuxx=vbuxx_ror_1
+txa
+lsr
+tax
+//FRAGMENT vbuxx=vbuyy_ror_1
+tya
+lsr
+tax
+//FRAGMENT vbuxx=vbuzz_ror_1
+tza
+lsr
+tax
+//FRAGMENT vbuyy=vbuz1_ror_1
+lda {z1}
+lsr
+tay
+//FRAGMENT vbuyy=vbuaa_ror_1
+lsr
+tay
+//FRAGMENT vbuyy=vbuxx_ror_1
+txa
+lsr
+tay
+//FRAGMENT vbuyy=vbuyy_ror_1
+tya
+lsr
+tay
+//FRAGMENT vbuyy=vbuzz_ror_1
+tza
+lsr
+tay
+//FRAGMENT vbuzz=vbuz1_ror_1
+lda {z1}
+lsr
+taz
+//FRAGMENT vbuzz=vbuaa_ror_1
+lsr
+taz
+//FRAGMENT vbuzz=vbuxx_ror_1
+txa
+lsr
+taz
+//FRAGMENT vbuzz=vbuyy_ror_1
+tya
+lsr
+taz
+//FRAGMENT vbuzz=vbuzz_ror_1
+tza
+lsr
+taz
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1
+ldx {z1}
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuzz=pbuc2_derefidx_vbuz1
+ldx {z1}
+tza
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuzz=pbuc2_derefidx_vbuxx
+tza
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuzz=pbuc2_derefidx_vbuyy
+tza
+tax
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuzz
+tza
+tay
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuzz
+tza
+tay
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuzz
+tza
+tax
+lda {c2},x
+sta {c1},y
+//FRAGMENT vbuaa_eq_vbuc1_then_la1
+cmp #{c1}
+beq {la1}
+//FRAGMENT vbuaa=vbuz1_plus_1
+lda {z1}
+inc
+//FRAGMENT vbuxx=vbuz1_plus_1
+ldx {z1}
+inx
+//FRAGMENT vbuaa=_deref_pbuc1
+lda {c1}
+//FRAGMENT vbuxx=_deref_pbuc1
+ldx {c1}
+//FRAGMENT vbuaa_eq__deref_pbuc1_then_la1
+cmp {c1}
+beq {la1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuzz
+tza
+tay
+lda {c2},y
+sta {c1}
+//FRAGMENT vbuxx_neq_0_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuxx_neq_vbuc1_then_la1
+cpx #{c1}
+bne {la1}
+//FRAGMENT vbuxx_lt_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+//FRAGMENT vbuxx_eq_vbuc1_then_la1
+cpx #{c1}
+beq {la1}
+//FRAGMENT vbuxx=vbuc1
+ldx #{c1}
+//FRAGMENT vbuxx=_inc_vbuxx
+inx
+//FRAGMENT vbuyy=vbuc1
+ldy #{c1}
+//FRAGMENT vbuyy_lt_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
+//FRAGMENT vbuyy=_inc_vbuyy
+iny
+//FRAGMENT vbuzz=vbuc1
+ldz #{c1}
+//FRAGMENT vbuzz_lt_vbuc1_then_la1
+cpz #{c1}
+bcc {la1}
+//FRAGMENT vbuzz=_inc_vbuzz
+inz
+//FRAGMENT vbuyy_neq_0_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT vbuzz_neq_0_then_la1
+cpz #0
+bne {la1}
+//FRAGMENT vbuaa=_dec_vbuaa
+sec
+sbc #1
+//FRAGMENT vbuaa=_inc_vbuaa
+inc
+//FRAGMENT vbuxx=_dec_vbuxx
+dex
+//FRAGMENT vbuyy=_dec_vbuyy
+dey
+//FRAGMENT vbuzz=_dec_vbuzz
+dez
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuzz
+tza
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuzz
+tza
+sta {c1},y
+//FRAGMENT vbuaa=vbuc1
+lda #{c1}
+//FRAGMENT vbuxx_eq__deref_pbuc1_then_la1
+cpx {c1}
+beq {la1}
+//FRAGMENT vbuyy=_deref_pbuc1
+ldy {c1}
+//FRAGMENT vbuyy_eq__deref_pbuc1_then_la1
+cpy {c1}
+beq {la1}
+//FRAGMENT vbuzz=_deref_pbuc1
+ldz {c1}
+//FRAGMENT vbuzz_eq__deref_pbuc1_then_la1
+cpz {c1}
+beq {la1}
+//FRAGMENT vbuyy=vbuz1
+ldy {z1}
+//FRAGMENT vbuzz=vbuz1
+ldz {z1}
+//FRAGMENT vbuyy_neq_vbuc1_then_la1
+cpy #{c1}
+bne {la1}
+//FRAGMENT vbuzz_neq_vbuc1_then_la1
+cpz #{c1}
+bne {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuyy_eq_vbuc1_then_la1
+cpy #{c1}
+beq {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuzz_eq_vbuc1_then_la1
+cpz #{c1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuyy
+tya
+sta {c1},x
+//FRAGMENT vbuyy=vbuz1_plus_1
+ldy {z1}
+iny
+//FRAGMENT _deref_pbuc1=vbuyy
+sty {c1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuzz
+tza
+tay
+lda {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuzz
+tza
+tax
+ldy {c1},x
+//FRAGMENT vbuaa=vbuaa_plus_1
+inc
+//FRAGMENT vbuaa=vbuyy_plus_1
+tya
+inc
+//FRAGMENT _deref_pbuc1=vbuxx
+stx {c1}
+//FRAGMENT _deref_pbuc1=vbuzz
+stz {c1}
+//FRAGMENT vbuz1=_deref_pbuc1_plus_1
+lda {c1}
+inc
+sta {z1}
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_2
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_4
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT 0_neq_vbuz1_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
+lda {z3}
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
+lda #{c1}
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1=pbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pvoz1=pvoc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
 lda {z1}+1
-//FRAGMENT vbuxx=_hi_vwuz1
-ldx {z1}+1
-//FRAGMENT vbuz1=vbuaa_band_vbuc1
-and #{c1}
+sbc #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_vwuc1
+clc
+lda {z2}
+adc #<{c1}
 sta {z1}
-//FRAGMENT vbuz1=vbuxx_band_vbuc1
-txa
-and #{c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_band_vbuc1
-tya
-and #{c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuzz_band_vbuc1
-tza
-and #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_band_vbuc1
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1_neq_pbuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT _deref_pbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=pbuz2_plus_vbuc1
 lda #{c1}
-and {z1}
-//FRAGMENT vbuaa=vbuaa_band_vbuc1
-and #{c1}
-//FRAGMENT vbuaa=vbuxx_band_vbuc1
-txa
-and #{c1}
-//FRAGMENT vbuaa=vbuyy_band_vbuc1
-tya
-and #{c1}
-//FRAGMENT vbuaa=vbuzz_band_vbuc1
-tza
-and #{c1}
-//FRAGMENT vbuxx=vbuz1_band_vbuc1
-lda #{c1}
-and {z1}
-tax
-//FRAGMENT vbuxx=vbuaa_band_vbuc1
-and #{c1}
-tax
-//FRAGMENT vbuxx=vbuxx_band_vbuc1
-txa
-and #{c1}
-tax
-//FRAGMENT vbuxx=vbuyy_band_vbuc1
-tya
-and #{c1}
-tax
-//FRAGMENT vbuxx=vbuzz_band_vbuc1
-tza
-and #{c1}
-tax
-//FRAGMENT vbuyy=vbuz1_band_vbuc1
-lda #{c1}
-and {z1}
-tay
-//FRAGMENT vbuyy=vbuaa_band_vbuc1
-and #{c1}
-tay
-//FRAGMENT vbuyy=vbuxx_band_vbuc1
-txa
-and #{c1}
-tay
-//FRAGMENT vbuyy=vbuyy_band_vbuc1
-tya
-and #{c1}
-tay
-//FRAGMENT vbuyy=vbuzz_band_vbuc1
-tza
-and #{c1}
-tay
-//FRAGMENT vbuzz=vbuz1_band_vbuc1
-lda #{c1}
-and {z1}
-taz
-//FRAGMENT vbuzz=vbuaa_band_vbuc1
-and #{c1}
-taz
-//FRAGMENT vbuzz=vbuxx_band_vbuc1
-txa
-and #{c1}
-taz
-//FRAGMENT vbuzz=vbuyy_band_vbuc1
-tya
-and #{c1}
-taz
-//FRAGMENT vbuzz=vbuzz_band_vbuc1
-tza
-and #{c1}
-taz
-//FRAGMENT vbuz1=vbuxx_bor_vbuz2
-txa
-ora {z2}
+clc
+adc {z2}
 sta {z1}
-//FRAGMENT vbuz1=vbuyy_bor_vbuz2
-tya
-ora {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuzz_bor_vbuz2
-tza
-ora {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_bor_vbuaa
-ora {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_bor_vbuaa
-stx $ff
-ora $ff
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_bor_vbuaa
-sty $ff
-ora $ff
-sta {z1}
-//FRAGMENT vbuz1=vbuzz_bor_vbuaa
-tay
-tza
-sty $ff
-ora $ff
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_bor_vbuxx
-txa
-ora {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_bor_vbuxx
-stx {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vbuaa=_deref_pbuc1_plus_1
+lda {c1}
+inc
+//FRAGMENT vbuxx=_deref_pbuc1_plus_1
+ldx {c1}
+inx
 //FRAGMENT vbuz1=vbuxx
 stx {z1}
-//FRAGMENT vbuyy=_lo_vwuz1
-ldy {z1}
+//FRAGMENT vwuz1=_word_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuzz
+tza
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT 0_neq_vbuaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
+txa
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
+tya
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuzz
+tza
+ldz {z2}
+sta ({z1}),z
+//FRAGMENT 0_neq_vbuxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuaa=vbuxx
+txa
+//FRAGMENT 0_neq_vbuyy_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT vbuaa=vbuyy
+tya
+//FRAGMENT 0_neq_vbuzz_then_la1
+cpz #0
+bne {la1}
+//FRAGMENT vbuaa=vbuzz
+tza
 //FRAGMENT vbuz1=vbuyy
 sty {z1}
-//FRAGMENT vbuzz=_lo_vwuz1
-ldz {z1}
 //FRAGMENT vbuz1=vbuzz
 tza
 sta {z1}
-//FRAGMENT vbuyy=_hi_vwuz1
-ldy {z1}+1
-//FRAGMENT vbuzz=_hi_vwuz1
-ldz {z1}+1
-//FRAGMENT vbuz1=vbuz2_bor_vbuyy
+//FRAGMENT vbuxx=vbuaa
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_plus_1
+ldy {c1}
+iny
+//FRAGMENT vbuxx=vbuyy
 tya
-ora {z2}
-sta {z1}
-//FRAGMENT pbuc1_derefidx_vbuyy=_inc_pbuc1_derefidx_vbuyy
-lda {c1},y
+tax
+//FRAGMENT vbuzz=_deref_pbuc1_plus_1
+lda {c1}
 inc
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuzz=_inc_pbuc1_derefidx_vbuzz
-tza
-tax
-inc {c1},x
-//FRAGMENT _deref_pbuc1_eq_vbuxx_then_la1
-cpx {c1}
-beq {la1}
-//FRAGMENT _deref_pbuc1_eq_vbuyy_then_la1
-cpy {c1}
-beq {la1}
-//FRAGMENT _deref_pbuc1_eq_vbuzz_then_la1
-cpz {c1}
-beq {la1}
-//FRAGMENT vbuaa=vbuz1_bor_vbuaa
-ora {z1}
-//FRAGMENT vbuxx=vbuz1_bor_vbuaa
-ora {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_bor_vbuaa
-ora {z1}
-tay
-//FRAGMENT vbuzz=vbuz1_bor_vbuaa
-ora {z1}
 taz
-//FRAGMENT vbuz1=vbuz2_bor_vbuzz
+//FRAGMENT vbuxx=vbuzz
 tza
-ora {z2}
+tax
+//FRAGMENT vwuz1=vwuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
 sta {z1}
-//FRAGMENT vbuaa=vbuxx_bor_vbuaa
-stx $ff
-ora $ff
-//FRAGMENT vbuaa=vbuyy_bor_vbuaa
-sty $ff
-ora $ff
-//FRAGMENT vbuaa=vbuzz_bor_vbuaa
-tay
-tza
-sty $ff
-ora $ff
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_4
+asw {z1}
+asw {z1}
+asw {z1}
+asw {z1}
+//FRAGMENT vwuz1=vbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
 //FRAGMENT vduz1=vduc1
 lda #<{c1}
 sta {z1}
@@ -829,10 +1424,6 @@ lda #{c1}
 clc
 adc {z2}
 sta {z1}
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
-lda {z2}
-ldy {z1}
-sta {c1},y
 //FRAGMENT vwuz1=vwuc1_minus_vbuz2
 sec
 lda #<{c1}
@@ -865,6 +1456,16 @@ lda {z2}
 sta {z1}
 lda {z2}+1
 sta {z1}+1
+//FRAGMENT vbuz1=_lo_vwuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=_hi_vwuz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuz3
+lda {z2}
+ora {z3}
+sta {z1}
 //FRAGMENT vduz1=vduz2_ror_4
 lda {z2}+3
 lsr
@@ -1008,20 +1609,6 @@ tza
 clc
 adc #{c1}
 taz
-//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
-lda {z1}
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=vbuz1
-lda {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuzz=vbuz1
-tza
-tay
-lda {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuaa
-ldy {z1}
-sta {c1},y
 //FRAGMENT vwuz1=vwuc1_minus_vbuaa
 tax
 stx $ff
@@ -1465,10 +2052,49 @@ dey
 bne !-
 !e:
 taz
-//FRAGMENT vbuaa=vbuz1
+//FRAGMENT vbuaa=_lo_vwuz1
 lda {z1}
-//FRAGMENT vbuxx=vbuz1
+//FRAGMENT vbuxx=_lo_vwuz1
 ldx {z1}
+//FRAGMENT vbuaa=_hi_vwuz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_vwuz1
+ldx {z1}+1
+//FRAGMENT vbuz1=vbuxx_bor_vbuz2
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bor_vbuz2
+tya
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_bor_vbuz2
+tza
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuaa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bor_vbuaa
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuzz_bor_vbuaa
+tay
+tza
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuxx
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bor_vbuxx
+stx {z1}
 //FRAGMENT vbuaa=_hi__word_vduz1
 lda {z1}+1
 //FRAGMENT vbuxx=_hi__word_vduz1
@@ -1533,6 +2159,20 @@ tay
 tza
 ora {z1}
 taz
+//FRAGMENT vbuaa=vbuz1_bor_vbuaa
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuaa
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuaa
+ora {z1}
+tay
+//FRAGMENT vbuzz=vbuz1_bor_vbuaa
+ora {z1}
+taz
+//FRAGMENT vbuaa=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
 //FRAGMENT vbuxx=vbuxx_bor_vbuaa
 stx $ff
 ora $ff
@@ -1545,6 +2185,9 @@ tay
 stx $ff
 ora $ff
 taz
+//FRAGMENT vbuaa=vbuyy_bor_vbuaa
+sty $ff
+ora $ff
 //FRAGMENT vbuxx=vbuyy_bor_vbuaa
 sty $ff
 ora $ff
@@ -1557,6 +2200,11 @@ tay
 sty $ff
 ora $ff
 taz
+//FRAGMENT vbuaa=vbuzz_bor_vbuaa
+tay
+tza
+sty $ff
+ora $ff
 //FRAGMENT vbuxx=vbuzz_bor_vbuaa
 tax
 tza
@@ -1590,13 +2238,23 @@ tay
 txa
 ora {z1}
 taz
+//FRAGMENT vbuyy=_lo_vwuz1
+ldy {z1}
+//FRAGMENT vbuzz=_lo_vwuz1
+ldz {z1}
+//FRAGMENT vbuyy=_hi_vwuz1
+ldy {z1}+1
+//FRAGMENT vbuzz=_hi_vwuz1
+ldz {z1}+1
+//FRAGMENT vbuz1=vbuz2_bor_vbuyy
+tya
+ora {z2}
+sta {z1}
 //FRAGMENT vbuyy=_hi__word_vduz1
 ldy {z1}+1
 //FRAGMENT vbuzz=_hi__word_vduz1
 lda {z1}+1
 taz
-//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
-sta {c1},x
 //FRAGMENT pbuc1_derefidx_vbuyy=vbuaa
 sta {c1},y
 //FRAGMENT pbuc1_derefidx_vbuzz=vbuaa
@@ -1605,10 +2263,6 @@ tza
 tay
 txa
 sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuxx
-ldy {z1}
-txa
-sta {c1},y
 //FRAGMENT pbuc1_derefidx_vbuyy=vbuxx
 txa
 sta {c1},y
@@ -1617,30 +2271,15 @@ tza
 tay
 txa
 sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuyy
-tya
-ldy {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=vbuyy
-tya
-sta {c1},x
 //FRAGMENT pbuc1_derefidx_vbuzz=vbuyy
 tza
 tax
 tya
 sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuzz
-ldy {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuzz
 tza
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=vbuzz
-tza
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=vbuzz
-tza
-sta {c1},y
-//FRAGMENT vbuxx=vbuaa
-tax
+ora {z2}
+sta {z1}
 //FRAGMENT vbuyy=vbuaa
 tay
 //FRAGMENT vbuzz=vbuaa
diff --git a/src/main/fragment/cache/fragment-cache-mos6502.asm b/src/main/fragment/cache/fragment-cache-mos6502.asm
index 9f0fa3360..8ec78f979 100644
--- a/src/main/fragment/cache/fragment-cache-mos6502.asm
+++ b/src/main/fragment/cache/fragment-cache-mos6502.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
 //FRAGMENT vbuz1=vbuc1
 lda #{c1}
 sta {z1}
diff --git a/src/main/fragment/cache/fragment-cache-mos6502x.asm b/src/main/fragment/cache/fragment-cache-mos6502x.asm
index 2d2541703..d720981ec 100644
--- a/src/main/fragment/cache/fragment-cache-mos6502x.asm
+++ b/src/main/fragment/cache/fragment-cache-mos6502x.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
 //FRAGMENT vbuz1=vbuc1
 lda #{c1}
 sta {z1}
@@ -304,6 +304,1091 @@ bcc {la1}
 //FRAGMENT vbuyy=vbuyy_plus_2
 iny
 iny
+//FRAGMENT vwuz1_lt_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bcc {la1}
+bne !+
+lda {z1}
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT vbsz1=vbsz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=_hi_vwsz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_plus_vbuz2
+lax {z2}
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT vbuz1=vbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_plus_vwuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=_inc_vwuz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT pbuz1_neq_pbuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne {la1}
+lda {z1}
+cmp #<{c1}
+bne {la1}
+//FRAGMENT _deref_pbuz1=vbuc1
+lda #{c1}
+ldy #0
+sta ({z1}),y
+//FRAGMENT 0_neq__deref_pbuz1_then_la1
+ldy #0
+lda ({z1}),y
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_minus_vwuc1
+lda {z1}
+sec
+sbc #<{c1}
+sta {z1}
+lda {z1}+1
+sbc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_minus_vwuz1
+sec
+lda #<{c1}
+sbc {z1}
+sta {z1}
+lda #>{c1}
+sbc {z1}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_3
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vbuz1=vbuz2_minus_vbuz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_plus_vbuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+//FRAGMENT vbuz1=_dec_vbuz1
+dec {z1}
+//FRAGMENT vbuz1_eq_0_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT vbsz1=_neg_vbsz2
+lda {z2}
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbsz1_ge_0_then_la1
+lda {z1}
+cmp #0
+bpl {la1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuc1
+lax {z2}
+axs #{c1}
+stx {z1}
+//FRAGMENT vwuz1=vwuz1_sethi_vbuz2
+lda {z2}
+sta {z1}+1
+//FRAGMENT vbsz1_lt_0_then_la1
+lda {z1}
+bmi {la1}
+//FRAGMENT vbsz1=_neg_vbsz1
+lda {z1}
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vwuz1=vbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_rol_vbuz3
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+ldy {z3}
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuz1_neq_0_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT vbuz1=vbuz1_ror_1
+lsr {z1}
+//FRAGMENT vbsaa=vbsz1
+lda {z1}
+//FRAGMENT vbsxx=vbsz1
+ldx {z1}
+//FRAGMENT vbsz1=vbsaa
+sta {z1}
+//FRAGMENT vbuaa=_hi_vwsz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_vwsz1
+ldx {z1}+1
+//FRAGMENT vbuaa=vbuc1_plus_vbuz1
+lda #{c1}
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuc1_plus_vbuz1
+lax {z1}
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuc1_plus_vbuz1
+lda #{c1}
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuc1_plus_vbuaa
+clc
+adc #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuc1_plus_vbuaa
+clc
+adc #{c1}
+//FRAGMENT vbuxx=vbuc1_plus_vbuaa
+tax
+axs #-[{c1}]
+//FRAGMENT vbuz1=vbuxx
+stx {z1}
+//FRAGMENT vbuaa=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tay
+//FRAGMENT vbuz1=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuz1=vbuyy_band_vbuc1
+tya
+and #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_band_vbuc1
+tya
+and #{c1}
+//FRAGMENT vbuxx=vbuyy_band_vbuc1
+ldx #{c1}
+tya
+axs #0
+//FRAGMENT vbuyy=vbuyy_band_vbuc1
+tya
+and #{c1}
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuz1
+lda {z1}
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuz2
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuz2
+txa
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuz2
+tya
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuaa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuaa
+lda #0
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuxx
+lda #0
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuyy
+lda #0
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+//FRAGMENT vbuaa=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuaa
+lda #0
+//FRAGMENT vbuaa=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuxx_minus_vbuxx
+lda #0
+//FRAGMENT vbuaa=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+//FRAGMENT vbuaa=vbuyy_minus_vbuyy
+lda #0
+//FRAGMENT vbuxx=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuxx=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuaa
+lda #0
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuxx
+lda #0
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuxx=vbuyy_minus_vbuyy
+lda #0
+tax
+//FRAGMENT vbuyy=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuz1
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuz1
+tya
+sec
+sbc {z1}
+tay
+//FRAGMENT vbuyy=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuaa
+lda #0
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuaa
+sta $ff
+tya
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuxx
+stx $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuxx
+lda #0
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuxx
+tya
+stx $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_minus_vbuyy
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuyy
+lda #0
+tay
+//FRAGMENT vbuaa=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+//FRAGMENT vbuxx=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+tay
+//FRAGMENT vbuz1=vbuz2_plus_vbuaa
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_vbuaa
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_vbuaa
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_vbuaa
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuz2_plus_vbuxx
+txa
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuz2_plus_vbuyy
+tya
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_plus_vbuz2
+txa
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_plus_vbuaa
+stx $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuaa
+stx $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuxx_plus_vbuaa
+stx $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuxx_plus_vbuaa
+stx $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuz1=vbuxx_plus_vbuxx
+txa
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuxx
+txa
+asl
+//FRAGMENT vbuxx=vbuxx_plus_vbuxx
+txa
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_plus_vbuxx
+txa
+asl
+tay
+//FRAGMENT vbuz1=vbuxx_plus_vbuyy
+txa
+sty $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuyy
+txa
+sty $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuxx_plus_vbuyy
+txa
+sty $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuxx_plus_vbuyy
+txa
+sty $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuz1=vbuyy_plus_vbuz2
+tya
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuyy_plus_vbuaa
+sty $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuaa
+sty $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuyy_plus_vbuaa
+sty $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuaa
+sty $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuz1=vbuyy_plus_vbuxx
+txa
+sty $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuxx
+txa
+sty $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuyy_plus_vbuxx
+txa
+sty $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuxx
+txa
+sty $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuz1=vbuyy_plus_vbuyy
+tya
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuyy
+tya
+asl
+//FRAGMENT vbuxx=vbuyy_plus_vbuyy
+tya
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuyy
+tya
+asl
+tay
+//FRAGMENT vbuxx_eq_0_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT vbsaa=_neg_vbsz1
+lda {z1}
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbsxx=_neg_vbsz1
+lda {z1}
+eor #$ff
+clc
+adc #$01
+tax
+//FRAGMENT vbsyy=_neg_vbsz1
+lda {z1}
+eor #$ff
+clc
+adc #$01
+tay
+//FRAGMENT vbsz1=_neg_vbsaa
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbsaa=_neg_vbsaa
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbsxx=_neg_vbsaa
+eor #$ff
+clc
+adc #$01
+tax
+//FRAGMENT vbsyy=_neg_vbsaa
+eor #$ff
+clc
+adc #$01
+tay
+//FRAGMENT vbsz1=_neg_vbsxx
+txa
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbsaa=_neg_vbsxx
+txa
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbsxx=_neg_vbsxx
+txa
+eor #$ff
+clc
+adc #$01
+tax
+//FRAGMENT vbsyy=_neg_vbsxx
+txa
+eor #$ff
+clc
+adc #$01
+tay
+//FRAGMENT vbsz1=_neg_vbsyy
+tya
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbsaa=_neg_vbsyy
+tya
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbsxx=_neg_vbsyy
+tya
+eor #$ff
+clc
+adc #$01
+tax
+//FRAGMENT vbsyy=_neg_vbsyy
+tya
+eor #$ff
+clc
+adc #$01
+tay
+//FRAGMENT vbsxx_ge_0_then_la1
+cpx #0
+bpl {la1}
+//FRAGMENT vbuz1=vbuaa_minus_vbuc1
+sec
+sbc #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_minus_vbuc1
+txa
+axs #{c1}
+stx {z1}
+//FRAGMENT vbuz1=vbuyy_minus_vbuc1
+tya
+sec
+sbc #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_minus_vbuc1
+lda {z1}
+sec
+sbc #{c1}
+//FRAGMENT vbuaa=vbuaa_minus_vbuc1
+sec
+sbc #{c1}
+//FRAGMENT vbuaa=vbuxx_minus_vbuc1
+txa
+sec
+sbc #{c1}
+//FRAGMENT vbuaa=vbuyy_minus_vbuc1
+tya
+sec
+sbc #{c1}
+//FRAGMENT vbuxx=vbuz1_minus_vbuc1
+lax {z1}
+axs #{c1}
+//FRAGMENT vbuxx=vbuaa_minus_vbuc1
+tax
+axs #{c1}
+//FRAGMENT vwuz1=vwuz1_sethi_vbuaa
+sta {z1}+1
+//FRAGMENT vbsaa_lt_0_then_la1
+cmp #0
+bmi {la1}
+//FRAGMENT vbuz1=vbuaa_band_vbuc1
+and #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_band_vbuc1
+and #{c1}
+//FRAGMENT vbuxx=vbuaa_band_vbuc1
+ldx #{c1}
+axs #0
+//FRAGMENT vbuaa_eq_0_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vwuz1=vwuz2_rol_vbuxx
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dex
+bne !-
+!e:
+//FRAGMENT vwuz1=vwuz2_rol_vbuyy
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=_word_vbuaa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuxx_neq_0_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbsz1=vbsxx
+stx {z1}
+//FRAGMENT vbuyy_eq_0_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vbuxx=vbuxx_ror_1
+txa
+lsr
+tax
+//FRAGMENT vbuyy=vbuz1
+ldy {z1}
+//FRAGMENT vbuyy_neq_0_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT vbuyy=vbuyy_ror_1
+tya
+lsr
+tay
+//FRAGMENT vbuyy=_hi_vwuz1
+ldy {z1}+1
+//FRAGMENT vbuyy=vbuaa_band_vbuc1
+and #{c1}
+tay
+//FRAGMENT vbuxx=_inc_vbuxx
+inx
+//FRAGMENT vbuyy=_inc_vbuyy
+iny
+//FRAGMENT vbuyy_neq_vbuc1_then_la1
+cpy #{c1}
+bne {la1}
+//FRAGMENT vbuxx=vbuaa
+tax
+//FRAGMENT vbuxx=vbuyy
+tya
+tax
+//FRAGMENT vbuaa=vbuyy
+tya
+//FRAGMENT vbuz1=vbuyy
+sty {z1}
+//FRAGMENT vbuaa=vbuxx
+txa
+//FRAGMENT vbuaa=_dec_vbuaa
+sec
+sbc #1
+//FRAGMENT vbuxx=_dec_vbuxx
+dex
+//FRAGMENT vbuyy=_dec_vbuyy
+dey
+//FRAGMENT vbsz1=vbsyy
+sty {z1}
+//FRAGMENT vbsaa=vbsxx
+txa
+//FRAGMENT vbsaa=vbsyy
+tya
+//FRAGMENT vbsxx=vbsaa
+tax
+//FRAGMENT vbsxx=vbsyy
+tya
+tax
+//FRAGMENT vbsyy=vbsz1
+ldy {z1}
+//FRAGMENT vbsyy=vbsaa
+tay
+//FRAGMENT vbsyy=vbsxx
+txa
+tay
+//FRAGMENT vbuyy=vbuaa
+tay
+//FRAGMENT vwuz1=vwuz1_sethi_vbuxx
+stx {z1}+1
+//FRAGMENT vbuxx=vbuxx_minus_vbuc1
+txa
+axs #{c1}
+//FRAGMENT vbuxx=vbuyy_minus_vbuc1
+tya
+tax
+axs #{c1}
+//FRAGMENT vbuyy=vbuz1_minus_vbuc1
+lda {z1}
+sec
+sbc #{c1}
+tay
+//FRAGMENT vwuz1=vwuz1_sethi_vbuyy
+sty {z1}+1
+//FRAGMENT vbuyy=vbuaa_minus_vbuc1
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbuyy=vbuxx_minus_vbuc1
+txa
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbuyy=vbuyy_minus_vbuc1
+tya
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbsyy_ge_0_then_la1
+cpy #0
+bpl {la1}
+//FRAGMENT vbsxx_lt_0_then_la1
+cpx #0
+bmi {la1}
+//FRAGMENT vbuz1=vbuc1_plus_vbuxx
+txa
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT vbuyy=_hi_vwsz1
+ldy {z1}+1
+//FRAGMENT vbuz1=vbuc1_plus_vbuyy
+tya
+clc
+adc #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_plus__hi_vwsz2
+lda #{c1}
+clc
+adc {z2}+1
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_rol_3
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_vbuz2
+ldy {z2}
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
 //FRAGMENT vbuz1_eq_vbuz2_then_la1
 lda {z1}
 cmp {z2}
@@ -341,10 +1426,6 @@ sta {c1},y
 //FRAGMENT pbuc1_derefidx_vbuyy=vbuyy
 tya
 sta {c1},y
-//FRAGMENT vbuxx=_inc_vbuxx
-inx
-//FRAGMENT vbuyy=_inc_vbuyy
-iny
 //FRAGMENT vbuz1_eq_vbuyy_then_la1
 tya
 cmp {z1}
@@ -358,300 +1439,436 @@ tax
 sty $ff
 cpx $ff
 beq  {la1}
-//FRAGMENT vbuz1_ge_vbuc1_then_la1
-lda {z1}
-cmp #{c1}
-bcs {la1}
-//FRAGMENT vbuz1_neq_0_then_la1
-lda {z1}
-bne {la1}
-//FRAGMENT vbuz1=vbuaa_band_vbuc1
-and #{c1}
+//FRAGMENT vwuz1=vwuz2_plus_1
+clc
+lda {z2}
+adc #1
 sta {z1}
-//FRAGMENT vbuaa=vbuaa_band_vbuc1
-and #{c1}
-//FRAGMENT vbuxx=vbuaa_band_vbuc1
-ldx #{c1}
-axs #0
-//FRAGMENT vbuaa_ge_vbuc1_then_la1
-cmp #{c1}
-bcs {la1}
-//FRAGMENT vbuaa_neq_0_then_la1
-cmp #0
-bne {la1}
-//FRAGMENT vbuz1=vbuyy_band_vbuc1
-tya
-and #{c1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_1
+lda {z2}
+asl
 sta {z1}
-//FRAGMENT vbuaa=vbuyy_band_vbuc1
-tya
-and #{c1}
-//FRAGMENT vbuxx=vbuyy_band_vbuc1
-ldx #{c1}
-tya
-axs #0
-//FRAGMENT vbuyy=vbuyy_band_vbuc1
-tya
-and #{c1}
-tay
-//FRAGMENT vbuxx_ge_vbuc1_then_la1
-cpx #{c1}
-bcs {la1}
-//FRAGMENT vbuyy_ge_vbuc1_then_la1
-cpy #{c1}
-bcs {la1}
-//FRAGMENT vbuyy_neq_vbuc1_then_la1
-cpy #{c1}
+lda {z2}+1
+rol
+sta {z1}+1
+//FRAGMENT pwuz1=pwuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=_deref_pwuz2_plus__deref_pwuz3
+ldy #0
+clc
+lda ({z2}),y
+adc ({z3}),y
+sta {z1}
+iny
+lda ({z2}),y
+adc ({z3}),y
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus__deref_pwuz3
+ldy #0
+clc
+lda {z2}
+adc ({z3}),y
+sta {z1}
+iny
+lda {z2}+1
+adc ({z3}),y
+sta {z1}+1
+//FRAGMENT vwuz1_neq_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
 bne {la1}
-//FRAGMENT vbuxx_neq_0_then_la1
-cpx #0
+lda {z1}
+cmp #<{c1}
 bne {la1}
-//FRAGMENT vbuyy_neq_0_then_la1
-cpy #0
-bne {la1}
-//FRAGMENT 0_neq_pbuz1_derefidx_vbuz2_then_la1
-ldy {z2}
-lda ({z1}),y
-
-cmp #0
-bne {la1}
-//FRAGMENT vbuxx=vbuz1
-ldx {z1}
-//FRAGMENT vbuaa=pbuz1_derefidx_vbuz2
-ldy {z2}
-lda ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuxx=vbuaa
-stx $ff
-ldy $ff
-sta ({z1}),y
-//FRAGMENT 0_neq_pbuz1_derefidx_vbuaa_then_la1
-tay
-lda ({z1}),y
-
-cmp #0
-bne {la1}
-//FRAGMENT 0_neq_pbuz1_derefidx_vbuxx_then_la1
-txa
-tay
-lda ({z1}),y
-
-cmp #0
-bne {la1}
-//FRAGMENT 0_neq_pbuz1_derefidx_vbuyy_then_la1
-lda ({z1}),y
-
-cmp #0
-bne {la1}
-//FRAGMENT vbuaa=pbuz1_derefidx_vbuxx
-txa
-tay
-lda ({z1}),y
-//FRAGMENT vbuaa=pbuz1_derefidx_vbuyy
-lda ({z1}),y
-//FRAGMENT vbuz1=vbuz2
+//FRAGMENT vwuz1=_deref_pwuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vduz1=vduz2
 lda {z2}
 sta {z1}
-//FRAGMENT _deref_pbuc1=vbuz1
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=_lo_vduz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pvoz1=_deref_qvoc1
+lda {c1}
+sta {z1}
+lda {c1}+1
+sta {z1}+1
+//FRAGMENT 0_neq_vbuz1_then_la1
 lda {z1}
-sta {c1}
-//FRAGMENT vbuz1_neq_vbuz2_then_la1
+bne {la1}
+//FRAGMENT vbuz1=_deref_pbuc1
+lda {c1}
+sta {z1}
+//FRAGMENT vduz1=_dword_vwuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda #0
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vduz1=vduc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+lda #<{c1}>>$10
+sta {z1}+2
+lda #>{c1}>>$10
+sta {z1}+3
+//FRAGMENT vwuz1_neq_0_then_la1
+lda {z1}
+ora {z1}+1
+bne {la1}
+//FRAGMENT vbuz1=vwuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT vduz1=vduz1_plus_vduz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+lda {z1}+2
+adc {z2}+2
+sta {z1}+2
+lda {z1}+3
+adc {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz1_ror_1
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz1_rol_1
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vwuz1_le_0_then_la1
+lda {z1}
+bne !+
+lda {z1}+1
+beq {la1}
+!:
+//FRAGMENT pbuz1=pbuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT pbuz1_neq_pbuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne {la1}
 lda {z1}
 cmp {z2}
 bne {la1}
-//FRAGMENT vbuz1_gt_vbuz2_then_la1
-lda {z2}
-cmp {z1}
-bcc {la1}
-//FRAGMENT vbuz1=vbuz1_minus_vbuz2
-lda {z1}
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1
-lda {z1}
-//FRAGMENT _deref_pbuc1=vbuaa
+//FRAGMENT _deref_pwuc1=vbuc2
+lda #0
+sta {c1}+1
+lda #<{c2}
 sta {c1}
-//FRAGMENT vbuz1_neq_vbuaa_then_la1
+//FRAGMENT vbuz1_eq_vbuc1_then_la1
+lda #{c1}
 cmp {z1}
-bne {la1}
-//FRAGMENT vbuz1_gt_vbuaa_then_la1
-cmp {z1}
-bcc {la1}
-//FRAGMENT vbuaa=vbuaa_minus_vbuz1
-sec
-sbc {z1}
-//FRAGMENT vbuxx=vbuxx_minus_vbuz1
-txa
-sec
-sbc {z1}
-tax
-//FRAGMENT vbuyy=vbuyy_minus_vbuz1
-tya
-sec
-sbc {z1}
-tay
-//FRAGMENT vbuz1=vbuz1_minus_vbuaa
-eor #$ff
-sec
-adc {z1}
+beq {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_(_deref_pbuc2)
+ldy {c2}
+lda {c1},y
 sta {z1}
-//FRAGMENT vbuaa=vbuaa_minus_vbuaa
-lda #0
-//FRAGMENT vbuxx=vbuxx_minus_vbuaa
-sta $ff
-txa
-sec
-sbc $ff
-tax
-//FRAGMENT vbuyy=vbuyy_minus_vbuaa
-sta $ff
-tya
-sec
-sbc $ff
-tay
-//FRAGMENT vbuz1=vbuz1_minus_vbuxx
-txa
-eor #$ff
-sec
-adc {z1}
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_minus_vbuxx
-stx $ff
-sec
-sbc $ff
-//FRAGMENT vbuxx=vbuxx_minus_vbuxx
-lda #0
-tax
-//FRAGMENT vbuyy=vbuyy_minus_vbuxx
-tya
-stx $ff
-sec
-sbc $ff
-tay
-//FRAGMENT vbuz1=vbuz1_minus_vbuyy
-tya
-eor #$ff
-sec
-adc {z1}
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_minus_vbuyy
-sty $ff
-sec
-sbc $ff
-//FRAGMENT vbuxx=vbuxx_minus_vbuyy
-txa
-sty $ff
-sec
-sbc $ff
-tax
-//FRAGMENT vbuyy=vbuyy_minus_vbuyy
-lda #0
-tay
-//FRAGMENT vbuz1_neq_vbuxx_then_la1
-cpx {z1}
-bne {la1}
-//FRAGMENT vbuz1_gt_vbuxx_then_la1
-cpx {z1}
-bcc {la1}
-//FRAGMENT vbuz1_neq_vbuyy_then_la1
-cpy {z1}
-bne {la1}
-//FRAGMENT vbuz1_gt_vbuyy_then_la1
-cpy {z1}
-bcc {la1}
-//FRAGMENT vbuz1=vbuxx
-stx {z1}
-//FRAGMENT vbuxx_neq_vbuz1_then_la1
-cpx {z1}
-bne {la1}
-//FRAGMENT vbuxx_gt_vbuz1_then_la1
-cpx {z1}
-beq !+
-bcs {la1}
+//FRAGMENT _deref_pwuc1=_inc__deref_pwuc1
+inc {c1}
+bne !+
+inc {c1}+1
 !:
-//FRAGMENT vbuxx_neq_vbuyy_then_la1
-stx $ff
-cpy $ff
-bne {la1}
-//FRAGMENT vbuxx_gt_vbuyy_then_la1
-stx $ff
-cpy $ff
-bcc {la1}
-//FRAGMENT vbuz1=vbuyy
-sty {z1}
-//FRAGMENT vbuyy_neq_vbuz1_then_la1
-cpy {z1}
-bne {la1}
-//FRAGMENT vbuyy_gt_vbuz1_then_la1
-cpy {z1}
-beq !+
-bcs {la1}
+//FRAGMENT _deref_pwuc1_eq_vbuc2_then_la1
+lda {c1}+1
+bne !+
+lda {c1}
+cmp #{c2}
+beq {la1}
 !:
-//FRAGMENT vbuyy_neq_vbuxx_then_la1
-stx $ff
-cpy $ff
-bne {la1}
-//FRAGMENT vbuyy_gt_vbuxx_then_la1
-sty $ff
-cpx $ff
-bcc {la1}
-//FRAGMENT vbuz1=vbuaa
+//FRAGMENT vbuz1=_byte_vwuz2
+lda {z2}
 sta {z1}
-//FRAGMENT vbuaa=vbuxx
-txa
-//FRAGMENT vbuaa=vbuyy
-tya
-//FRAGMENT vbuxx=vbuyy
-tya
-tax
-//FRAGMENT vbuyy=vbuz1
-ldy {z1}
-//FRAGMENT vbuyy=vbuxx
-txa
-tay
-//FRAGMENT vbuxx=vbuaa
-tax
-//FRAGMENT _deref_pbuc1=vbuxx
-stx {c1}
-//FRAGMENT vbuyy=vbuaa
-tay
-//FRAGMENT _deref_pbuc1=vbuyy
-sty {c1}
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuz1
-ldy {z1}
-tya
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuaa=vbuaa
-tax
-sta {c1},x
-//FRAGMENT vbuaa_neq_vbuc1_then_la1
-cmp #{c1}
-bne {la1}
-//FRAGMENT vbuaa=_inc_vbuaa
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=_inc_pbuz2
 clc
+lda {z2}
 adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
 //FRAGMENT vbuz1=vbuz2_rol_1
 lda {z2}
 asl
 sta {z1}
-//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vbuc2
-ldy {z1}
-clc
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2
+ldy {z2}
 lda {c1},y
-adc #{c2}
-sta {c1},y
+sta {z1}
 lda {c1}+1,y
-adc #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1
-ldy {z1}
-clc
+sta {z1}+1
+//FRAGMENT vwuz1_ge_vwuz2_then_la1
+lda {z2}+1
+cmp {z1}+1
+bne !+
+lda {z2}
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT 0_eq_vbuz1_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT vbuz1=_byte_vduz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_rol_2
+lda {z2}
+asl
+asl
+sta {z1}
+//FRAGMENT vduz1=pduc1_derefidx_vbuz2
+ldy {z2}
 lda {c1},y
-adc {c2},y
-sta {c1},y
+sta {z1}
 lda {c1}+1,y
-adc {c2}+1,y
-sta {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1_ge_vduz2_then_la1
+lda {z1}+3
+cmp {z2}+3
+bcc !+
+bne {la1}
+lda {z1}+2
+cmp {z2}+2
+bcc !+
+bne {la1}
+lda {z1}+1
+cmp {z2}+1
+bcc !+
+bne {la1}
+lda {z1}
+cmp {z2}
+bcs {la1}
+!:
+//FRAGMENT _deref_(_deref_qbuc1)=_deref_pbuc2
+lda {c2}
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_pbuc1=vbuz1
+lda {z1}
+sta {c1}
+//FRAGMENT _deref_qbuc1=pbuz1
+lda {z1}
+sta {c1}
+lda {z1}+1
+sta {c1}+1
+//FRAGMENT vbuz1=vbuz2_bxor_vbuc1
+lda #{c1}
+eor {z2}
+sta {z1}
+//FRAGMENT _deref_(_deref_qbuc1)=vbuz1
+lda {z1}
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
+inc {c1}
+//FRAGMENT _deref_pbuc1_neq_vbuc2_then_la1
+lda #{c2}
+cmp {c1}
+bne {la1}
+//FRAGMENT _deref_(_deref_qbuc1)=_deref_(_deref_qbuc1)_bxor_vbuc2
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+lda ($fe),y
+eor #{c2}
+sta ($fe),y
+//FRAGMENT pbuz1=_deref_qbuc1
+lda {c1}
+sta {z1}
+lda {c1}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pvoz1=pvoz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_vwuc1
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_minus_vwuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_minus_vduz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+lda {z1}+2
+sbc {z2}+2
+sta {z1}+2
+lda {z1}+3
+sbc {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=_word__deref_pbuc1
+lda {c1}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_2
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT pbuz1=_deref_qbuc1_plus_vwuz2
+clc
+lda {z2}
+adc {c1}
+sta {z1}
+lda {z2}+1
+adc {c1}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus__deref_pwuc1
+clc
+lda {c1}
+adc {z2}
+sta {z1}
+lda {c1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT 0_neq_vbuaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuaa=_deref_pbuc1
+lda {c1}
+//FRAGMENT vbuxx=_deref_pbuc1
+ldx {c1}
+//FRAGMENT vbuaa=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+//FRAGMENT vbuxx=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tax
+//FRAGMENT vbuyy=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tay
+//FRAGMENT vbuaa=pbuc1_derefidx_(_deref_pbuc2)
+ldy {c2}
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_(_deref_pbuc2)
+ldy {c2}
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_(_deref_pbuc2)
+ldx {c2}
+ldy {c1},x
+//FRAGMENT vbuaa=_byte_vwuz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vwuz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vwuz1
+lda {z1}
+tay
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+sta ({z1}),y
 //FRAGMENT vbuaa=vbuz1_rol_1
 lda {z1}
 asl
@@ -704,6 +1921,894 @@ tax
 tya
 asl
 tay
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT 0_neq_vbuxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT 0_eq_vbuaa_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vbuaa=_byte_vduz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vduz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vduz1
+lda {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_rol_2
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_rol_2
+txa
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_rol_2
+tya
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_rol_2
+lda {z1}
+asl
+asl
+//FRAGMENT vbuaa=vbuaa_rol_2
+asl
+asl
+//FRAGMENT vbuaa=vbuxx_rol_2
+txa
+asl
+asl
+//FRAGMENT vbuaa=vbuyy_rol_2
+tya
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuaa_rol_2
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuxx_rol_2
+txa
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuyy_rol_2
+tya
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuaa_rol_2
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuxx_rol_2
+txa
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuyy_rol_2
+tya
+asl
+asl
+tay
+//FRAGMENT vduz1=pduc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+lda {c1}+2,x
+sta {z1}+2
+lda {c1}+3,x
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT _deref_pbuc1=vbuaa
+sta {c1}
+//FRAGMENT vbuaa=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+//FRAGMENT vbuxx=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+//FRAGMENT vbuxx=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+tax
+//FRAGMENT vbuyy=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+tay
+//FRAGMENT vbuz1=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+//FRAGMENT vbuxx=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+tay
+//FRAGMENT _deref_(_deref_qbuc1)=vbuaa
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=vbuxx
+txa
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=vbuyy
+tya
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_pbuc1=vbuxx
+stx {c1}
+//FRAGMENT _deref_pbuc1=vbuyy
+sty {c1}
+//FRAGMENT 0_neq_vbuyy_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT 0_eq_vbuxx_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT vbuyy=_deref_pbuc1
+ldy {c1}
+//FRAGMENT 0_eq_vbuyy_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vwuz1=_deref_pwuz1
+ldy #0
+lda ({z1}),y
+pha
+iny
+lda ({z1}),y
+sta {z1}+1
+pla
+sta {z1}
+//FRAGMENT pbuz1=pbuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=_deref_pwuz1_plus__deref_pwuz2
+ldy #0
+clc
+lda ({z1}),y
+adc ({z2}),y
+pha
+iny
+lda ({z1}),y
+adc ({z2}),y
+sta {z1}+1
+pla
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_plus__deref_pwuz1
+ldy #0
+clc
+lda ({z1}),y
+adc {z2}
+pha
+iny
+lda ({z1}),y
+adc {z2}+1
+sta {z1}+1
+pla
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=_deref_qbuc1_plus_vwuz1
+clc
+lda {z1}
+adc {c1}
+sta {z1}
+lda {z1}+1
+adc {c1}+1
+sta {z1}+1
+//FRAGMENT pwuz1=pwuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_plus_vwuc1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_plus__deref_pwuc1
+clc
+lda {c1}
+adc {z1}
+sta {z1}
+lda {c1}+1
+adc {z1}+1
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_minus_1
+ldx {z2}
+dex
+stx {z1}
+//FRAGMENT pbuz1_derefidx_vbuz2_neq_vbuz3_then_la1
+ldy {z2}
+lda ({z1}),y
+
+cmp {z3}
+bne {la1}
+//FRAGMENT vbuz1_lt_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcc {la1}
+//FRAGMENT vbuz1_le_vbuz2_then_la1
+lda {z2}
+cmp {z1}
+bcs {la1}
+//FRAGMENT _deref_pbuz1_neq_vbuz2_then_la1
+ldy #0
+lda ({z1}),y
+cmp {z2}
+bne {la1}
+//FRAGMENT pbuz1=pbuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
+lda #{c1}
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT vbuz1_le_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bcs {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
+lda {z3}
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pvoz1=pvoc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
+lda {z1}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vbuaa=vbuz1_minus_1
+lda {z1}
+sec
+sbc #1
+//FRAGMENT pbuz1_derefidx_vbuaa_neq_vbuz2_then_la1
+tay
+lda ({z1}),y
+
+cmp {z2}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuxx_neq_vbuz2_then_la1
+txa
+tay
+lda ({z1}),y
+
+cmp {z2}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_neq_vbuz2_then_la1
+lda ({z1}),y
+
+cmp {z2}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2_neq_vbuxx_then_la1
+ldy {z2}
+lda ({z1}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuaa_neq_vbuxx_then_la1
+tay
+lda ({z1}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuxx_neq_vbuxx_then_la1
+txa
+tay
+lda ({z1}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_neq_vbuxx_then_la1
+lda ({z1}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2_neq_vbuyy_then_la1
+tya
+ldy {z2}
+tax
+lda ({z1}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuaa_neq_vbuyy_then_la1
+NO_SYNTHESIS
+//FRAGMENT pbuz1_derefidx_vbuxx_neq_vbuyy_then_la1
+NO_SYNTHESIS
+//FRAGMENT pbuz1_derefidx_vbuyy_neq_vbuyy_then_la1
+lda ({z1}),y
+
+tax
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuxx_lt_vbuz1_then_la1
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuxx_le_vbuz1_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuz1_le_vbuxx_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vbuxx_eq_vbuc1_then_la1
+cpx #{c1}
+beq {la1}
+//FRAGMENT _deref_pbuz1_neq_vbuxx_then_la1
+ldy #0
+lda ({z1}),y
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1
+tay
+lda #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=vbuc1
+txa
+tay
+lda #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=vbuc1
+lda #{c1}
+sta ({z1}),y
+//FRAGMENT vbuaa_le_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuz1=vbuaa_plus_vbuz2
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_plus_vbuz1
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuaa_plus_vbuz1
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuaa_plus_vbuz1
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_plus_vbuxx
+stx $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_plus_vbuxx
+stx $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuaa_plus_vbuxx
+stx $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuaa_plus_vbuxx
+stx $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuz1=vbuaa_plus_vbuyy
+sty $ff
+clc
+adc $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_plus_vbuyy
+sty $ff
+clc
+adc $ff
+//FRAGMENT vbuxx=vbuaa_plus_vbuyy
+sty $ff
+clc
+adc $ff
+tax
+//FRAGMENT vbuyy=vbuaa_plus_vbuyy
+sty $ff
+clc
+adc $ff
+tay
+//FRAGMENT vbuaa_eq_vbuc1_then_la1
+cmp #{c1}
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
+ldy {z2}
+txa
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
+tya
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT vbuxx_le_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuyy_eq_vbuc1_then_la1
+cpy #{c1}
+beq {la1}
+//FRAGMENT vbuyy_le_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuxx=vbuz1_minus_1
+ldx {z1}
+dex
+//FRAGMENT vbuyy=vbuz1_minus_1
+lda {z1}
+tay
+dey
+//FRAGMENT vbuz1=vbuz1_plus_vbuaa
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT pbuz1=pbuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1
+ldy {z2}
+lda ({z1}),y
+
+cmp #{c1}
+bne {la1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuc1
+lax {z1}
+axs #{c1}
+stx {z1}
+//FRAGMENT pbuz1=pbuz1_plus_vbuz2
+lda {z2}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vwuz1=vwuz1_plus_vbuz2
+lda {z2}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pbuz1_derefidx_vbuxx_neq_vbuc1_then_la1
+txa
+tay
+lda ({z1}),y
+
+cmp #{c1}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_neq_vbuc1_then_la1
+lda ({z1}),y
+
+cmp #{c1}
+bne {la1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT pbuz1=pbuz1_plus_vbuaa
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pbuz1=pbuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pbuz1=pbuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vwuz1=vwuz1_plus_vbuxx
+txa
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vwuz1=vwuz1_plus_vbuyy
+tya
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT _deref_pbuz1_neq_vbuc1_then_la1
+ldy #0
+lda ({z1}),y
+cmp #{c1}
+bne {la1}
+//FRAGMENT 0_eq_pbuc1_derefidx_vbuz1_then_la1
+ldy {z1}
+lda {c1},y
+cmp #0
+beq {la1}
+//FRAGMENT 0_eq__deref_pbuz1_then_la1
+ldy #0
+lda ({z1}),y
+cmp #0
+beq {la1}
+//FRAGMENT _deref_pbuz1_eq_vbuc1_then_la1
+lda #{c1}
+ldy #0
+cmp ({z1}),y
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2_neq_pbuz3_derefidx_vbuz2_then_la1
+ldy {z2}
+lda ({z1}),y
+
+tax
+lda ({z3}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT 0_eq_pbuc1_derefidx_vbuaa_then_la1
+tay
+lda {c1},y
+cmp #0
+beq {la1}
+//FRAGMENT 0_eq_pbuc1_derefidx_vbuxx_then_la1
+lda {c1},x
+cmp #0
+beq {la1}
+//FRAGMENT 0_eq_pbuc1_derefidx_vbuyy_then_la1
+lda {c1},y
+cmp #0
+beq {la1}
+//FRAGMENT vbuaa_neq_vbuc1_then_la1
+cmp #{c1}
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuaa_neq_pbuz2_derefidx_vbuaa_then_la1
+tay
+lda ({z1}),y
+
+tax
+lda ({z2}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuxx_neq_pbuz2_derefidx_vbuxx_then_la1
+txa
+tay
+lda ({z1}),y
+
+tax
+lda ({z2}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_neq_pbuz2_derefidx_vbuyy_then_la1
+lda ({z1}),y
+
+tax
+lda ({z2}),y
+
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuz1_ge_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcs {la1}
+//FRAGMENT vbuaa_ge_vbuc1_then_la1
+cmp #{c1}
+bcs {la1}
+//FRAGMENT vbuaa_neq_0_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuxx_ge_vbuc1_then_la1
+cpx #{c1}
+bcs {la1}
+//FRAGMENT vbuyy_ge_vbuc1_then_la1
+cpy #{c1}
+bcs {la1}
+//FRAGMENT 0_neq_pbuz1_derefidx_vbuz2_then_la1
+ldy {z2}
+lda ({z1}),y
+
+cmp #0
+bne {la1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=vbuaa
+stx $ff
+ldy $ff
+sta ({z1}),y
+//FRAGMENT 0_neq_pbuz1_derefidx_vbuaa_then_la1
+tay
+lda ({z1}),y
+
+cmp #0
+bne {la1}
+//FRAGMENT 0_neq_pbuz1_derefidx_vbuxx_then_la1
+txa
+tay
+lda ({z1}),y
+
+cmp #0
+bne {la1}
+//FRAGMENT 0_neq_pbuz1_derefidx_vbuyy_then_la1
+lda ({z1}),y
+
+cmp #0
+bne {la1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+//FRAGMENT vbuz1_neq_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT vbuz1_gt_vbuz2_then_la1
+lda {z2}
+cmp {z1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuz1_neq_vbuaa_then_la1
+cmp {z1}
+bne {la1}
+//FRAGMENT vbuz1_gt_vbuaa_then_la1
+cmp {z1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuz1_neq_vbuxx_then_la1
+cpx {z1}
+bne {la1}
+//FRAGMENT vbuz1_gt_vbuxx_then_la1
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuz1_neq_vbuyy_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbuz1_gt_vbuyy_then_la1
+cpy {z1}
+bcc {la1}
+//FRAGMENT vbuxx_neq_vbuz1_then_la1
+cpx {z1}
+bne {la1}
+//FRAGMENT vbuxx_gt_vbuz1_then_la1
+cpx {z1}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT vbuxx_neq_vbuyy_then_la1
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuxx_gt_vbuyy_then_la1
+stx $ff
+cpy $ff
+bcc {la1}
+//FRAGMENT vbuyy_neq_vbuz1_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbuyy_gt_vbuz1_then_la1
+cpy {z1}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT vbuyy_neq_vbuxx_then_la1
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuyy_gt_vbuxx_then_la1
+sty $ff
+cpx $ff
+bcc {la1}
+//FRAGMENT vbuyy=vbuxx
+txa
+tay
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuz1
+ldy {z1}
+tya
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuaa
+tax
+sta {c1},x
+//FRAGMENT vbuaa=_inc_vbuaa
+clc
+adc #1
+//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vbuc2
+ldy {z1}
+clc
+lda {c1},y
+adc #{c2}
+sta {c1},y
+lda {c1}+1,y
+adc #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1
+ldy {z1}
+clc
+lda {c1},y
+adc {c2},y
+sta {c1},y
+lda {c1}+1,y
+adc {c2}+1,y
+sta {c1}+1,y
 //FRAGMENT pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_vbuc2
 tay
 clc
@@ -769,23 +2874,14 @@ lda #<{c2}
 sta {c1}
 lda #>{c2}
 sta {c1}+1
-//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
-inc {c1}
 //FRAGMENT isr_rom_min_c64_entry
 
 //FRAGMENT isr_rom_min_c64_exit
 jmp $ea81
-//FRAGMENT vbuz1=_deref_pbuc1
-lda {c1}
-sta {z1}
 //FRAGMENT vbuz1=vbuz2_plus_vbuc1
 lax {z2}
 axs #-[{c1}]
 stx {z1}
-//FRAGMENT vbuaa=_deref_pbuc1
-lda {c1}
-//FRAGMENT vbuxx=_deref_pbuc1
-ldx {c1}
 //FRAGMENT vbuaa=vbuz1_plus_vbuc1
 lda #{c1}
 clc
@@ -844,8 +2940,6 @@ txa
 clc
 adc #{c1}
 tay
-//FRAGMENT vbuyy=_deref_pbuc1
-ldy {c1}
 //FRAGMENT vbuz1=vbuyy_plus_vbuc1
 tya
 clc
@@ -911,17 +3005,6 @@ sta {z1}
 lda {z2}+1
 sbc #>{c1}
 sta {z1}+1
-//FRAGMENT pbuz1_neq_pbuc1_then_la1
-lda {z1}+1
-cmp #>{c1}
-bne {la1}
-lda {z1}
-cmp #<{c1}
-bne {la1}
-//FRAGMENT _deref_pbuz1=vbuc1
-lda #{c1}
-ldy #0
-sta ({z1}),y
 //FRAGMENT vwsz1=vwsz1_minus_vbsc1
 lda {z1}
 sec
@@ -952,11 +3035,6 @@ lda {z1}
 sta {c1},y
 lda {z1}+1
 sta {c1}+1,y
-//FRAGMENT pvoz1=pvoc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
 //FRAGMENT vbuz1=_bnot_vbuz2
 lda {z2}
 eor #$ff
@@ -1477,9 +3555,6 @@ tya
 sty $ff
 ora $ff
 tay
-//FRAGMENT vbuyy=vbuaa_band_vbuc1
-and #{c1}
-tay
 //FRAGMENT vboxx_then_la1
 cpx #0
 bne {la1}
@@ -1659,23 +3734,848 @@ dey
 bne !-
 !e:
 tay
-//FRAGMENT vbuz1_eq_0_then_la1
+//FRAGMENT pssz1=pssc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pssz1=pssz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pssz1=pssz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vbuz1=vbuz1_plus_vbuc1
+lax {z1}
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT pssz1=pssz1_plus_vwuc1
+clc
 lda {z1}
-beq {la1}
-//FRAGMENT vbuaa_eq_0_then_la1
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pssz1=pssz1_minus_vwuc1
+lda {z1}
+sec
+sbc #<{c1}
+sta {z1}
+lda {z1}+1
+sbc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_ror_3
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vbuz1=vbuc1_minus_vbuz2
+lda #{c1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuc1
+lda #{c1}
+ora {z2}
+sta {z1}
+//FRAGMENT vwuz1_lt_vbuc1_then_la1
+lda {z1}+1
+bne !+
+lda {z1}
+cmp #{c1}
+bcc {la1}
+!:
+//FRAGMENT vwuz1=vwuz2_minus_vbuc1
+sec
+lda {z2}
+sbc #{c1}
+sta {z1}
+lda {z2}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vwuz1_gt_vwuc1_then_la1
+lda #>{c1}
+cmp {z1}+1
+bcc {la1}
+bne !+
+lda #<{c1}
+cmp {z1}
+bcc {la1}
+!:
+//FRAGMENT vwuz1=vwuz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+sta {c1}
+//FRAGMENT vbuz1=vbuz2_ror_1
+lda {z2}
+lsr
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz3
+ldx {z1}
+ldy {z3}
+lda ({z2}),y
+sta {c1},x
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+//FRAGMENT 0_neq_pbuc1_derefidx_vbuz1_then_la1
+ldy {z1}
+lda {c1},y
 cmp #0
+bne {la1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_pbuc2_derefidx_vbuz1
+lda {c1}
+ldy {z1}
+and {c2},y
+sta {c1}
+//FRAGMENT vbuz1=vbuz2_plus_1
+ldy {z2}
+iny
+sty {z1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_pbuc2_derefidx_vbuz1
+lda {c1}
+ldy {z1}
+ora {c2},y
+sta {c1}
+//FRAGMENT _deref_pbuz1_neq_0_then_la1
+ldy #0
+lda ({z1}),y
+cmp #0
+bne {la1}
+//FRAGMENT vwuz1_le_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne !+
+lda {z1}
+cmp #<{c1}
+!:
+bcc {la1}
 beq {la1}
-//FRAGMENT vbuxx_eq_0_then_la1
-cpx #0
-beq {la1}
-//FRAGMENT vbuyy_eq_0_then_la1
-cpy #0
+//FRAGMENT pssz1=pssz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pssz1_eq_pssz2_then_la1
+lda {z1}
+cmp {z2}
+bne !+
+lda {z1}+1
+cmp {z2}+1
 beq {la1}
+!:
+//FRAGMENT pbuc1_derefidx_vbuz1_le_vbuz2_then_la1
+lda {z2}
+ldy {z1}
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuz1_derefidx_vbuc1=vbuz2
+lda {z2}
+ldy #{c1}
+sta ({z1}),y
+//FRAGMENT vbuz1=vbuz1_plus_1
+inc {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=_deref_pbuc2
+lda {c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
+lda {z1}
+ldx {z2}
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},y
+//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
+lda {z1}
+ldx {z2}
+ldy {c2},x
+cmp {c1},y
+bcc {la1}
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz2
+ldy {z2}
+lda ({z3}),y
+sta ({z1}),y
+//FRAGMENT vbuaa=vbuc1_minus_vbuz1
+lda #{c1}
+sec
+sbc {z1}
+//FRAGMENT vbuxx=vbuc1_minus_vbuz1
+lda #{c1}
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuyy=vbuc1_minus_vbuz1
+lda #{c1}
+sec
+sbc {z1}
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuz1
+ldx {z1}
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1
+ldx {z1}
+lda {c2},x
+sta {c1},y
+//FRAGMENT vbuaa=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_ror_1
+txa
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_ror_1
+tya
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_1
+lda {z1}
+lsr
+//FRAGMENT vbuaa=vbuxx_ror_1
+txa
+lsr
+//FRAGMENT vbuaa=vbuyy_ror_1
+tya
+lsr
+//FRAGMENT vbuxx=vbuz1_ror_1
+lda {z1}
+lsr
+tax
+//FRAGMENT vbuxx=vbuyy_ror_1
+tya
+lsr
+tax
+//FRAGMENT vbuyy=vbuz1_ror_1
+lda {z1}
+lsr
+tay
+//FRAGMENT vbuyy=vbuxx_ror_1
+txa
+lsr
+tay
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuz2
+tya
+ldy {z2}
+tax
+lda ({z1}),y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuxx
+txa
+ldx {z1}
+tay
+lda ({z2}),y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuxx
+sty $ff
+txa
+tay
+lda ({z1}),y
+ldy $ff
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuyy
+lda ({z2}),y
+ldx {z1}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+sta {c1},y
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuaa
+tay
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuyy
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+tax
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+tax
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+tax
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+tay
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+tay
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+tay
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+tay
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuaa
+tax
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},y
+//FRAGMENT 0_neq_pbuc1_derefidx_vbuxx_then_la1
+lda {c1},x
+cmp #0
+bne {la1}
+//FRAGMENT 0_neq_pbuc1_derefidx_vbuyy_then_la1
+lda {c1},y
+cmp #0
+bne {la1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_pbuc2_derefidx_vbuxx
+lda {c1}
+and {c2},x
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_pbuc2_derefidx_vbuyy
+lda {c1}
+and {c2},y
+sta {c1}
+//FRAGMENT vbuaa=vbuz1_plus_1
+lda {z1}
+clc
+adc #1
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_pbuc2_derefidx_vbuxx
+lda {c1}
+ora {c2},x
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_pbuc2_derefidx_vbuyy
+lda {c1}
+ora {c2},y
+sta {c1}
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuyy
+tax
+lda {c2},y
+sta {c1},x
+//FRAGMENT vbuaa=vbuc1_plus_vbuxx
+txa
+clc
+adc #{c1}
+//FRAGMENT vbuaa=vbuc1_plus_vbuyy
+tya
+clc
+adc #{c1}
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa_le_vbuz1_then_la1
+tay
+lda {z1}
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_le_vbuz1_then_la1
+txa
+tay
+lda {z1}
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_le_vbuz1_then_la1
+lda {z1}
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_le_vbuxx_then_la1
+ldy {z1}
+txa
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_le_vbuxx_then_la1
+tay
+txa
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_le_vbuxx_then_la1
+txa
+tay
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_le_vbuxx_then_la1
+txa
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_le_vbuyy_then_la1
+tya
+ldy {z1}
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_le_vbuyy_then_la1
+tax
+lda {c1},x
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_le_vbuyy_then_la1
+lda {c1},x
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_le_vbuyy_then_la1
+tya
+cmp {c1},y
+bcs {la1}
+//FRAGMENT pbuz1_derefidx_vbuc1=vbuxx
+ldy #{c1}
+txa
+sta ({z1}),y
+//FRAGMENT vbuz1=vbuxx_plus_1
+inx
+stx {z1}
+//FRAGMENT pbuc1_derefidx_vbuaa=_deref_pbuc2
+tay
+lda {c2}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=_deref_pbuc2
+lda {c2}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=_deref_pbuc2
+lda {c2}
+sta {c1},y
+//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
+ldx {z1}
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
+ldy {z1}
+txa
+ldx {c2},y
+cmp {c1},x
+bcs {la1}
+//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
+ldx {z1}
+tya
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1
+tax
+lda {z1}
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1
+tax
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1
+tay
+txa
+ldx {c2},y
+cmp {c1},x
+bcs {la1}
+//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1
+tax
+tya
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+lda {z1}
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+txa
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+tya
+ldy {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+lda {z1}
+ldx {c2},y
+cmp {c1},x
+bcs {la1}
+//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+lda {z1}
+ldy {c2},x
+cmp {c1},y
+bcc {la1}
+//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+lda {z1}
+ldx {c2},y
+cmp {c1},x
+bcc {la1}
+//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
+ldy {z1}
+txa
+ldx {c2},y
+cmp {c1},x
+bcc {la1}
+//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+txa
+ldy {c2},x
+cmp {c1},y
+bcc {la1}
+//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+txa
+ldx {c2},y
+cmp {c1},x
+bcc {la1}
+//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
+ldx {z1}
+tya
+ldy {c2},x
+cmp {c1},y
+bcc {la1}
+//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
+tya
+ldy {c2},x
+cmp {c1},y
+bcc {la1}
+//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+tya
+ldx {c2},y
+cmp {c1},x
+bcc {la1}
+//FRAGMENT vbuaa_lt_vbuz1_then_la1
+cmp {z1}
+bcc {la1}
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuaa
+tay
+lda ({z2}),y
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuyy
+lda ({z2}),y
+sta ({z1}),y
+//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+txa
+ldx {c2},y
+cmp {c1},x
+bcs {la1}
+//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
+tya
+ldx {c2},y
+cmp {c1},x
+bcs {la1}
+//FRAGMENT vbuxx=vbuxx_plus_1
+inx
+//FRAGMENT vbuyy_lt_vbuz1_then_la1
+cpy {z1}
+bcc {la1}
+//FRAGMENT vbuxx=vbuc1_plus_vbuxx
+txa
+axs #-[{c1}]
+//FRAGMENT vbuxx=vbuc1_plus_vbuyy
+tya
+tax
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuc1_plus_vbuaa
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuyy=vbuc1_plus_vbuxx
+txa
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuyy=vbuc1_plus_vbuyy
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuxx=vbuz1_plus_1
+ldx {z1}
+inx
+//FRAGMENT vbuyy=vbuz1_plus_1
+ldy {z1}
+iny
+//FRAGMENT vbuyy=_lo_vwuz1
+ldy {z1}
+//FRAGMENT vbuaa=vbuxx_plus_1
+inx
+txa
+//FRAGMENT vbuaa=vbuyy_plus_1
+iny
+tya
+//FRAGMENT vwuz1=vwuz1_ror_3
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
 //FRAGMENT pprz1=pprc1
 lda #<{c1}
 sta {z1}
 lda #>{c1}
 sta {z1}+1
+//FRAGMENT _deref_pwsc1=vbsc2
+NO_SYNTHESIS
+//FRAGMENT _deref_pwsc1=vwuc2
+NO_SYNTHESIS
+//FRAGMENT _deref_pwsc1=vwsc2
+lda #<{c2}
+sta {c1}
+lda #>{c2}
+sta {c1}+1
+//FRAGMENT vwsz1=vbsc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz2_rol_1
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+//FRAGMENT pwsz1=pwsc1_plus_vwsz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=_deref_pwsz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vdsz1=vdsz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vwsz1=_sword_vdsz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwsz1_le_vwsz2_then_la1
+lda {z2}
+cmp {z1}
+lda {z2}+1
+sbc {z1}+1
+bvc !+
+eor #$80
+!:
+bpl {la1}
+//FRAGMENT vwsz1=_inc_vwsz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT vwsz1_neq_0_then_la1
+lda {z1}+1
+ora {z1}
+bne {la1}
+//FRAGMENT _deref_pwsz1=vwsz2
+ldy #0
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT vwsz1_lt_vwsc1_then_la1
+lda {z1}
+cmp #<{c1}
+lda {z1}+1
+sbc #>{c1}
+bvc !+
+eor #$80
+!:
+bmi {la1}
+//FRAGMENT vwsz1_ge_0_then_la1
+lda {z1}+1
+bpl {la1}
+//FRAGMENT vwuz1=_hi_vduz2
+lda {z2}+2
+sta {z1}
+lda {z2}+3
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_minus_vwuz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+lda {z2}+1
+sbc {z3}+1
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_sethi_vwuz2
+lda {z2}
+sta {z1}+2
+lda {z2}+1
+sta {z1}+3
+//FRAGMENT vwsz1=_neg_vwsz2
+sec
+lda #0
+sbc {z2}
+sta {z1}
+lda #0
+sbc {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+sta {z1}
+//FRAGMENT vwuz1_lt_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bcc {la1}
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT pwsz1=pwsc1_plus_vwsz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=_deref_pwsz1
+ldy #0
+lda ({z1}),y
+pha
+iny
+lda ({z1}),y
+sta {z1}+1
+pla
+sta {z1}
 //FRAGMENT pprz1=pprz2
 lda {z2}
 sta {z1}
@@ -1719,146 +4619,19 @@ clc
 adc #1
 ldy #0
 sta ({z1}),y
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
-ldy {z2}
-lda {c2},y
-ldy {z1}
-sta {c1},y
-//FRAGMENT 0_neq_pbuc1_derefidx_vbuz1_then_la1
-ldy {z1}
-lda {c1},y
-cmp #0
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-ldy {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx
-lda {c2},x
-ldy {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy
-lda {c2},y
-ldy {z1}
-sta {c1},y
-//FRAGMENT 0_neq_pbuc1_derefidx_vbuxx_then_la1
-lda {c1},x
-cmp #0
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz3
-ldx {z1}
-ldy {z3}
-lda ({z2}),y
-sta {c1},x
 //FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuaa
 ldx {z1}
 tay
 lda ({z2}),y
 sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuxx
-txa
-ldx {z1}
-tay
-lda ({z2}),y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuyy
-lda ({z2}),y
-ldx {z1}
-sta {c1},x
-//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
-ldy {z2}
-lda {c1},y
-ldy #0
-sta ({z1}),y
-//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
-tay
-lda {c1},y
-ldy #0
-sta ({z1}),y
-//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
-lda {c1},x
-ldy #0
-sta ({z1}),y
-//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
-lda {c1},y
-ldy #0
-sta ({z1}),y
-//FRAGMENT vwuz1=_word_vbuz2
-lda {z2}
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=vbuc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
 //FRAGMENT vwuz1=_deref_pbuc1_word__deref_pbuc2
 lda {c2}
 sta {z1}
 lda {c1}
 sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuaa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuxx
-txa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=_word_vbuyy
-tya
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vbuz1=vbuyy_ror_4
-tya
-lsr
-lsr
-lsr
-lsr
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_ror_4
-tya
-lsr
-lsr
-lsr
-lsr
-//FRAGMENT vbuxx=vbuyy_ror_4
-tya
-lsr
-lsr
-lsr
-lsr
-tax
-//FRAGMENT vbuyy=vbuyy_ror_4
-tya
-lsr
-lsr
-lsr
-lsr
-tay
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuyy=_lo_vwuz1
-ldy {z1}
-//FRAGMENT vbuyy=_hi_vwuz1
-ldy {z1}+1
 //FRAGMENT vbsz1=vbsc1
 lda #{c1}
 sta {z1}
-//FRAGMENT _deref_pbuc1_neq_vbuc2_then_la1
-lda #{c2}
-cmp {c1}
-bne {la1}
-//FRAGMENT vbuz1=vbuz2_plus_vbuz3
-lda {z2}
-clc
-adc {z3}
-sta {z1}
 //FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=vbuc2
 lda #{c2}
 ldx {z2}
@@ -1900,231 +4673,6 @@ ldx {z2}
 lda {c2},x
 ldy {c1},x
 sta ({z1}),y
-//FRAGMENT vbsz1=_neg_vbsz1
-lda {z1}
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_plus_vbuz2
-lda {z1}
-clc
-adc {z2}
-//FRAGMENT vbuxx=vbuz1_plus_vbuz2
-lda {z1}
-clc
-adc {z2}
-tax
-//FRAGMENT vbuyy=vbuz1_plus_vbuz2
-lda {z1}
-clc
-adc {z2}
-tay
-//FRAGMENT vbuz1=vbuz2_plus_vbuxx
-txa
-clc
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_plus_vbuxx
-txa
-clc
-adc {z1}
-//FRAGMENT vbuxx=vbuz1_plus_vbuxx
-txa
-clc
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_plus_vbuxx
-txa
-clc
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuz2_plus_vbuyy
-tya
-clc
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_plus_vbuyy
-tya
-clc
-adc {z1}
-//FRAGMENT vbuxx=vbuz1_plus_vbuyy
-tya
-clc
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_plus_vbuyy
-tya
-clc
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuaa_plus_vbuz2
-clc
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_plus_vbuz1
-clc
-adc {z1}
-//FRAGMENT vbuxx=vbuaa_plus_vbuz1
-clc
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuaa_plus_vbuz1
-clc
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuaa_plus_vbuxx
-stx $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_plus_vbuxx
-stx $ff
-clc
-adc $ff
-//FRAGMENT vbuxx=vbuaa_plus_vbuxx
-stx $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuyy=vbuaa_plus_vbuxx
-stx $ff
-clc
-adc $ff
-tay
-//FRAGMENT vbuz1=vbuaa_plus_vbuyy
-sty $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_plus_vbuyy
-sty $ff
-clc
-adc $ff
-//FRAGMENT vbuxx=vbuaa_plus_vbuyy
-sty $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuyy=vbuaa_plus_vbuyy
-sty $ff
-clc
-adc $ff
-tay
-//FRAGMENT vbuz1=vbuxx_plus_vbuz2
-txa
-clc
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_plus_vbuz1
-txa
-clc
-adc {z1}
-//FRAGMENT vbuxx=vbuxx_plus_vbuz1
-txa
-clc
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuxx_plus_vbuz1
-txa
-clc
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuxx_plus_vbuxx
-txa
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_plus_vbuxx
-txa
-asl
-//FRAGMENT vbuxx=vbuxx_plus_vbuxx
-txa
-asl
-tax
-//FRAGMENT vbuyy=vbuxx_plus_vbuxx
-txa
-asl
-tay
-//FRAGMENT vbuz1=vbuxx_plus_vbuyy
-txa
-sty $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_plus_vbuyy
-txa
-sty $ff
-clc
-adc $ff
-//FRAGMENT vbuxx=vbuxx_plus_vbuyy
-txa
-sty $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuyy=vbuxx_plus_vbuyy
-txa
-sty $ff
-clc
-adc $ff
-tay
-//FRAGMENT vbuz1=vbuyy_plus_vbuz2
-tya
-clc
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_plus_vbuz1
-tya
-clc
-adc {z1}
-//FRAGMENT vbuxx=vbuyy_plus_vbuz1
-tya
-clc
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuyy_plus_vbuz1
-tya
-clc
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuyy_plus_vbuxx
-txa
-sty $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_plus_vbuxx
-txa
-sty $ff
-clc
-adc $ff
-//FRAGMENT vbuxx=vbuyy_plus_vbuxx
-txa
-sty $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuyy=vbuyy_plus_vbuxx
-txa
-sty $ff
-clc
-adc $ff
-tay
-//FRAGMENT vbuz1=vbuyy_plus_vbuyy
-tya
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_plus_vbuyy
-tya
-asl
-//FRAGMENT vbuxx=vbuyy_plus_vbuyy
-tya
-asl
-tax
-//FRAGMENT vbuyy=vbuyy_plus_vbuyy
-tya
-asl
-tay
 //FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=vbuc2
 tax
 lda #{c2}
@@ -2245,90 +4793,14 @@ sta {c1},y
 //FRAGMENT pbsc1_derefidx_vbuyy=vbsyy
 tya
 sta {c1},y
-//FRAGMENT vbsxx=_neg_vbsxx
-txa
-eor #$ff
-clc
-adc #$01
-tax
-//FRAGMENT vbsyy=_neg_vbsyy
-tya
-eor #$ff
-clc
-adc #$01
-tay
 //FRAGMENT pbsc1_derefidx_vbuxx=vbsaa
 sta {c1},x
 //FRAGMENT vbsyy=vbsc1
 ldy #{c1}
-//FRAGMENT vbuxx=vbuxx_plus_vbuc1
-txa
-axs #-[{c1}]
-//FRAGMENT vbuyy=vbuyy_plus_vbuc1
-tya
-clc
-adc #{c1}
-tay
-//FRAGMENT 0_neq__deref_pbuz1_then_la1
-ldy #0
-lda ({z1}),y
-cmp #0
-bne {la1}
-//FRAGMENT _deref_pbuz1=_deref_pbuz2
-ldy #0
-lda ({z2}),y
-ldy #0
-sta ({z1}),y
 //FRAGMENT vbuz1=vbuz2_plus_vbuz2
 lda {z2}
 asl
 sta {z1}
-//FRAGMENT vbuz1=vbuz2_plus_1
-ldy {z2}
-iny
-sty {z1}
-//FRAGMENT vwuz1_lt_vwuc1_then_la1
-lda {z1}+1
-cmp #>{c1}
-bcc {la1}
-bne !+
-lda {z1}
-cmp #<{c1}
-bcc {la1}
-!:
-//FRAGMENT vwuz1=_inc_vwuz1
-inc {z1}
-bne !+
-inc {z1}+1
-!:
-//FRAGMENT vwuz1=vwuz2_rol_2
-lda {z2}
-asl
-sta {z1}
-lda {z2}+1
-rol
-sta {z1}+1
-asl {z1}
-rol {z1}+1
-//FRAGMENT vwuz1=vwuz2_plus_vwuz3
-lda {z2}
-clc
-adc {z3}
-sta {z1}
-lda {z2}+1
-adc {z3}+1
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz2_rol_3
-lda {z2}
-asl
-sta {z1}
-lda {z2}+1
-rol
-sta {z1}+1
-asl {z1}
-rol {z1}+1
-asl {z1}
-rol {z1}+1
 //FRAGMENT vwuz1=vwuz2_plus_vbuz3
 lda {z3}
 clc
@@ -2337,25 +4809,11 @@ sta {z1}
 lda #0
 adc {z2}+1
 sta {z1}+1
-//FRAGMENT pbuz1=pbuc1_plus_vwuz2
-clc
-lda {z2}
-adc #<{c1}
-sta {z1}
-lda {z2}+1
-adc #>{c1}
-sta {z1}+1
 //FRAGMENT _deref_pbuz1=pbuz2_derefidx_vbuz3
 ldy {z3}
 lda ({z2}),y
 ldy #0
 sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1
-ldy {z2}
-lda ({z1}),y
-
-cmp #{c1}
-bne {la1}
 //FRAGMENT pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1
 lda #{c1}
 ldy {z2}
@@ -2367,20 +4825,6 @@ lda ({z1}),y
 
 cmp #0
 bne {la1}
-//FRAGMENT vbuz1=vbuz2_minus_vbuz3
-lda {z2}
-sec
-sbc {z3}
-sta {z1}
-//FRAGMENT vbuz1_lt_vbuz2_then_la1
-lda {z1}
-cmp {z2}
-bcc {la1}
-//FRAGMENT vbuz1=vbuz2_rol_2
-lda {z2}
-asl
-asl
-sta {z1}
 //FRAGMENT vwuz1=vbuz2_rol_3
 lda {z2}
 sta {z1}
@@ -2414,10 +4858,6 @@ tay
 //FRAGMENT vbuyy=vbuaa_plus_vbuaa
 asl
 tay
-//FRAGMENT vbuaa=vbuz1_plus_1
-lda {z1}
-clc
-adc #1
 //FRAGMENT vbuz1=vbuaa_plus_1
 clc
 adc #1
@@ -2451,16 +4891,6 @@ sta ({z1}),y
 lda ({z2}),y
 ldy #0
 sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuxx_neq_vbuc1_then_la1
-txa
-tay
-lda ({z1}),y
-
-cmp #{c1}
-bne {la1}
-//FRAGMENT vbuz1=vbuxx_plus_1
-inx
-stx {z1}
 //FRAGMENT pbuz1_derefidx_vbuaa_eq_vbuc1_then_la1
 tay
 lda #{c1}
@@ -2488,104 +4918,6 @@ lda ({z1}),y
 
 cmp #0
 bne {la1}
-//FRAGMENT vbuz1=vbuz2_minus_vbuxx
-txa
-eor #$ff
-sec
-adc {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_minus_vbuz2
-txa
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_minus_vbuxx
-lda #0
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_minus_vbuz2
-lda {z1}
-sec
-sbc {z2}
-//FRAGMENT vbuaa=vbuz1_minus_vbuxx
-txa
-eor #$ff
-sec
-adc {z1}
-//FRAGMENT vbuaa=vbuxx_minus_vbuz1
-txa
-sec
-sbc {z1}
-//FRAGMENT vbuaa=vbuxx_minus_vbuxx
-lda #0
-//FRAGMENT vbuxx=vbuz1_minus_vbuz2
-lda {z1}
-sec
-sbc {z2}
-tax
-//FRAGMENT vbuxx=vbuz1_minus_vbuxx
-txa
-eor #$ff
-sec
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_minus_vbuz2
-lda {z1}
-sec
-sbc {z2}
-tay
-//FRAGMENT vbuyy=vbuz1_minus_vbuxx
-txa
-eor #$ff
-sec
-adc {z1}
-tay
-//FRAGMENT vbuyy=vbuxx_minus_vbuz1
-txa
-sec
-sbc {z1}
-tay
-//FRAGMENT vbuyy=vbuxx_minus_vbuxx
-lda #0
-tay
-//FRAGMENT vbuxx_lt_vbuz1_then_la1
-cpx {z1}
-bcc {la1}
-//FRAGMENT vbuxx=vbuz1_plus_1
-ldx {z1}
-inx
-//FRAGMENT vbuz1=vbuxx_rol_2
-txa
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_rol_2
-lda {z1}
-asl
-asl
-//FRAGMENT vbuaa=vbuxx_rol_2
-txa
-asl
-asl
-//FRAGMENT vbuxx=vbuz1_rol_2
-lda {z1}
-asl
-asl
-tax
-//FRAGMENT vbuxx=vbuxx_rol_2
-txa
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuz1_rol_2
-lda {z1}
-asl
-asl
-tay
-//FRAGMENT vbuyy=vbuxx_rol_2
-txa
-asl
-asl
-tay
 //FRAGMENT vwuz1=vbuaa_rol_3
 sta {z1}
 lda #0
@@ -2618,43 +4950,6 @@ asl {z1}
 rol {z1}+1
 asl {z1}
 rol {z1}+1
-//FRAGMENT vbuz1=vbuaa_rol_2
-asl
-asl
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_rol_2
-tya
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_rol_2
-asl
-asl
-//FRAGMENT vbuaa=vbuyy_rol_2
-tya
-asl
-asl
-//FRAGMENT vbuxx=vbuaa_rol_2
-asl
-asl
-tax
-//FRAGMENT vbuxx=vbuyy_rol_2
-tya
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuaa_rol_2
-asl
-asl
-tay
-//FRAGMENT vbuyy=vbuyy_rol_2
-tya
-asl
-asl
-tay
-//FRAGMENT vbuaa_lt_vbuz1_then_la1
-cmp {z1}
-bcc {la1}
 //FRAGMENT vbuz1_lt_vbuxx_then_la1
 cpx {z1}
 beq !+
@@ -2667,12 +4962,6 @@ sta {z1}
 lda #0
 adc {z2}+1
 sta {z1}+1
-//FRAGMENT vbuyy=vbuz1_plus_1
-ldy {z1}
-iny
-//FRAGMENT vbuyy_lt_vbuz1_then_la1
-cpy {z1}
-bcc {la1}
 //FRAGMENT vbuz1=vbuyy_plus_1
 iny
 sty {z1}
@@ -2680,39 +4969,6 @@ sty {z1}
 sta $ff
 cpx $ff
 bcc {la1}
-//FRAGMENT vbuz1=vbuz1_plus_1
-inc {z1}
-//FRAGMENT vwuz1=vwuz1_rol_3
-asl {z1}
-rol {z1}+1
-asl {z1}
-rol {z1}+1
-asl {z1}
-rol {z1}+1
-//FRAGMENT pbuz1=pbuc1_plus_vwuz1
-clc
-lda {z1}
-adc #<{c1}
-sta {z1}
-lda {z1}+1
-adc #>{c1}
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz1_plus_vbuz2
-lda {z2}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vwuz1=vwuz2_plus_vwuz1
-lda {z1}
-clc
-adc {z2}
-sta {z1}
-lda {z1}+1
-adc {z2}+1
-sta {z1}+1
 //FRAGMENT vbuz1=_lo__deref_pwuc1
 lda {c1}
 sta {z1}
@@ -2731,15 +4987,6 @@ ldx {c1}+1
 ldy {c1}
 //FRAGMENT vbuyy=_hi__deref_pwuc1
 ldy {c1}+1
-//FRAGMENT vwsz1_lt_vwsc1_then_la1
-lda {z1}
-cmp #<{c1}
-lda {z1}+1
-sbc #>{c1}
-bvc !+
-eor #$80
-!:
-bmi {la1}
 //FRAGMENT pbuz1=pbuz2_plus_vwsz3
 lda {z2}
 clc
@@ -2748,20 +4995,6 @@ sta {z1}
 lda {z2}+1
 adc {z3}+1
 sta {z1}+1
-//FRAGMENT pbuz1_neq_pbuz2_then_la1
-lda {z1}+1
-cmp {z2}+1
-bne {la1}
-lda {z1}
-cmp {z2}
-bne {la1}
-//FRAGMENT vwsz1=vwsz2_rol_1
-lda {z2}
-asl
-sta {z1}
-lda {z2}+1
-rol
-sta {z1}+1
 //FRAGMENT vwsz1=vbsc1_minus_vwsz2
 NO_SYNTHESIS
 //FRAGMENT vwsz1=vwuc1_minus_vwsz2
@@ -2772,15 +5005,6 @@ sta {z1}
 lda #>{c1}
 sbc {z2}+1
 sta {z1}+1 
-//FRAGMENT vwsz1_le_vwsz2_then_la1
-lda {z2}
-cmp {z1}
-lda {z2}+1
-sbc {z1}+1
-bvc !+
-eor #$80
-!:
-bpl {la1}
 //FRAGMENT vwsz1=vwsz1_minus_1
 sec
 lda {z1}
@@ -2838,11 +5062,6 @@ sta {z1}
 lda #>{c1}
 sbc {z2}+1
 sta {z1}+1
-//FRAGMENT vwsz1=_inc_vwsz1
-inc {z1}
-bne !+
-inc {z1}+1
-!:
 //FRAGMENT vwsz1_gt_vwsc1_then_la1
 lda #<{c1}
 cmp {z1}
@@ -3108,13 +5327,6 @@ sta {z1}
 lda {z1}+1
 adc {z2}+1
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz1_plus_vbuaa
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
 //FRAGMENT vwsz1=vwsz1_rol_6
 lda {z1}+1
 sta $ff
@@ -3133,10 +5345,6 @@ lda #<{c2}
 sta {c1}
 lda #>{c2}
 sta {c1}+1
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},y
 //FRAGMENT 0_eq_vwuz1_then_la1
 lda {z1}
 ora {z1}+1
@@ -3152,88 +5360,11 @@ tay
 lda {c1},y
 cmp #0
 bne {la1}
-//FRAGMENT 0_neq_pbuc1_derefidx_vbuyy_then_la1
-lda {c1},y
-cmp #0
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
-lda {c2},x
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy
-lda {c2},y
-sta {c1},y
 //FRAGMENT _deref_pwuc1=_deref_pwuc2
 lda {c2}
 sta {c1}
 lda {c2}+1
 sta {c1}+1
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuz1
-ldx {z1}
-tay
-lda {c2},x
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx
-tay
-lda {c2},x
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuyy
-tax
-lda {c2},y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
-lda {c2},y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1
-ldx {z1}
-lda {c2},x
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuaa
-tax
-lda {c2},x
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
-lda {c2},x
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2
-ldy {z2}
-lda ({z1}),y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuxx
-txa
-tay
-lda ({z1}),y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuyy
-lda ({z1}),y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuz2
-tya
-ldy {z2}
-tax
-lda ({z1}),y
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuxx
-sty $ff
-txa
-tay
-lda ({z1}),y
-ldy $ff
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy
-lda ({z1}),y
-sta {c1},y
 //FRAGMENT _deref_pbuc1=_deref_qbuc2_memcpy_vbuc3
 ldy #{c3}
 !:
@@ -3487,32 +5618,11 @@ sta {z1}
 lda {c1}+1
 adc #>{c2}
 sta {z1}+1
-//FRAGMENT _deref_qbuc1=pbuz1
-lda {z1}
-sta {c1}
-lda {z1}+1
-sta {c1}+1
-//FRAGMENT 0_neq__deref_pbuc1_then_la1
-lda {c1}
-cmp #0
-bne {la1}
 //FRAGMENT vwuz1=vbuz2_word_vbuc1
 lda {z2}
 ldy #{c1}
 sta {z1}+1
 sty {z1}
-//FRAGMENT vwuz1=vwuz2_plus_vbuc1
-lda #{c1}
-clc
-adc {z2}
-sta {z1}
-lda #0
-adc {z2}+1
-sta {z1}+1
-//FRAGMENT vbuz1=_deref_pbuz2
-ldy #0
-lda ({z2}),y
-sta {z1}
 //FRAGMENT vbuz1=vbuz2_minus__deref_pbuz3
 lda {z2}
 sec
@@ -3542,29 +5652,6 @@ sta {z1}
 lda {z2}
 ora {z3}
 sta {z1}
-//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
-lda {z3}
-ldy {z2}
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
-lda #{c1}
-ldy {z2}
-sta ({z1}),y
-//FRAGMENT vwsz1_ge_0_then_la1
-lda {z1}+1
-bpl {la1}
-//FRAGMENT vwsz1=_neg_vwsz2
-sec
-lda #0
-sbc {z2}
-sta {z1}
-lda #0
-sbc {z2}+1
-sta {z1}+1
-//FRAGMENT vwsz1_neq_0_then_la1
-lda {z1}+1
-ora {z1}
-bne {la1}
 //FRAGMENT vwuz1=vwuz2_ror_1
 lda {z2}+1
 lsr
@@ -3572,14 +5659,6 @@ sta {z1}+1
 lda {z2}
 ror
 sta {z1}
-//FRAGMENT vwuz1=vwuc1_minus_vwuz1
-sec
-lda #<{c1}
-sbc {z1}
-sta {z1}
-lda #>{c1}
-sbc {z1}+1
-sta {z1}+1
 //FRAGMENT vwuz1=_neg_vwuz1
 sec
 lda #0
@@ -3588,9 +5667,6 @@ sta {z1}
 lda #0
 sbc {z1}+1
 sta {z1}+1
-//FRAGMENT 0_eq_vbuz1_then_la1
-lda {z1}
-beq {la1}
 //FRAGMENT vwsz1=vwsz1_ror_1
 lda {z1}+1
 cmp #$80
@@ -3613,10 +5689,6 @@ sta {z1}
 lda {z1}+1
 sbc {c1}+1,y
 sta {z1}+1
-//FRAGMENT vbuz1_eq_vbuc1_then_la1
-lda #{c1}
-cmp {z1}
-beq {la1}
 //FRAGMENT vwuz1=vwuz1_plus_pwuc1_derefidx_vbuz2
 ldy {z2}
 clc
@@ -3652,17 +5724,6 @@ tya
 ldy #{c1}
 sta {z1}+1
 sty {z1}
-//FRAGMENT vbuaa=_deref_pbuz1
-ldy #0
-lda ({z1}),y
-//FRAGMENT vbuxx=_deref_pbuz1
-ldy #0
-lda ({z1}),y
-tax
-//FRAGMENT vbuyy=_deref_pbuz1
-ldy #0
-lda ({z1}),y
-tay
 //FRAGMENT vwuz1=vwuz1_plus_vbuaa
 clc
 adc {z1}
@@ -3670,22 +5731,6 @@ sta {z1}
 bcc !+
 inc {z1}+1
 !:
-//FRAGMENT vwuz1=vwuz1_plus_vbuxx
-txa
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vwuz1=vwuz1_plus_vbuyy
-tya
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
 //FRAGMENT vbuz1=vbuxx_minus__deref_pbuz2
 txa
 sec
@@ -3930,24 +5975,6 @@ sta ({z1}),y
 //FRAGMENT pbuz1_derefidx_vbuyy=vbuz2
 lda {z2}
 sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
-ldy {z2}
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuxx=vbuc1
-txa
-tay
-lda #{c1}
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuyy=vbuc1
-lda #{c1}
-sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuaa=vbuc1
-tay
-lda #{c1}
-sta ({z1}),y
-//FRAGMENT 0_eq_vbuxx_then_la1
-cpx #0
-beq {la1}
 //FRAGMENT vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa
 tay
 sec
@@ -3973,9 +6000,6 @@ sta {z1}
 lda {z1}+1
 sbc {c1}+1,y
 sta {z1}+1
-//FRAGMENT vbuxx_eq_vbuc1_then_la1
-cpx #{c1}
-beq {la1}
 //FRAGMENT vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa
 tay
 clc
@@ -4006,152 +6030,12 @@ cmp {z1}
 beq !+
 bcs {la1}
 !:
-//FRAGMENT vbuz1=vbuz2_minus_vbuaa
-eor #$ff
-sec
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_minus_vbuaa
-eor #$ff
-sec
-adc {z1}
-//FRAGMENT vbuxx=vbuz1_minus_vbuaa
-eor #$ff
-sec
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_minus_vbuaa
-eor #$ff
-sec
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuz2_minus_vbuyy
-tya
-eor #$ff
-sec
-adc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_minus_vbuyy
-tya
-eor #$ff
-sec
-adc {z1}
-//FRAGMENT vbuxx=vbuz1_minus_vbuyy
-tya
-eor #$ff
-sec
-adc {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_minus_vbuyy
-tya
-eor #$ff
-sec
-adc {z1}
-tay
-//FRAGMENT vbuz1=vbuxx_minus_vbuaa
-sta $ff
-txa
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_minus_vbuaa
-sta $ff
-txa
-sec
-sbc $ff
-//FRAGMENT vbuyy=vbuxx_minus_vbuaa
-sta $ff
-txa
-sec
-sbc $ff
-tay
-//FRAGMENT vbuz1=vbuxx_minus_vbuyy
-txa
-sty $ff
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_minus_vbuyy
-txa
-sty $ff
-sec
-sbc $ff
-//FRAGMENT vbuyy=vbuxx_minus_vbuyy
-txa
-sty $ff
-sec
-sbc $ff
-tay
-//FRAGMENT vbuz1=vbuaa_minus_vbuz2
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_minus_vbuz2
-tya
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_minus_vbuz1
-tya
-sec
-sbc {z1}
-//FRAGMENT vbuxx=vbuaa_minus_vbuz1
-sec
-sbc {z1}
-tax
-//FRAGMENT vbuxx=vbuyy_minus_vbuz1
-tya
-sec
-sbc {z1}
-tax
-//FRAGMENT vbuyy=vbuaa_minus_vbuz1
-sec
-sbc {z1}
-tay
-//FRAGMENT vbuz1=vbuaa_minus_vbuxx
-stx $ff
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_minus_vbuxx
-tya
-stx $ff
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_minus_vbuxx
-tya
-stx $ff
-sec
-sbc $ff
-//FRAGMENT vbuxx=vbuaa_minus_vbuxx
-stx $ff
-sec
-sbc $ff
-tax
-//FRAGMENT vbuxx=vbuyy_minus_vbuxx
-tya
-stx $ff
-sec
-sbc $ff
-tax
-//FRAGMENT vbuyy=vbuaa_minus_vbuxx
-stx $ff
-sec
-sbc $ff
-tay
 //FRAGMENT vbuxx=vbuxx_minus_2
 dex
 dex
-//FRAGMENT 0_eq_vbuyy_then_la1
-cpy #0
-beq {la1}
 //FRAGMENT vbuyy=vbuyy_minus_2
 dey
 dey
-//FRAGMENT vbuyy_eq_vbuc1_then_la1
-cpy #{c1}
-beq {la1}
 //FRAGMENT vbuz1=vbuz2_bor_vbuyy
 tya
 ora {z2}
@@ -4171,10 +6055,6 @@ ora {z1}
 lda {z1}
 ora {z2}
 tax
-//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
-ldy {z2}
-txa
-sta ({z1}),y
 //FRAGMENT vbuxx=vbuz1_bor_vbuaa
 ora {z1}
 tax
@@ -4190,10 +6070,6 @@ tax
 lda {z1}
 ora {z2}
 tay
-//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
-tya
-ldy {z2}
-sta ({z1}),y
 //FRAGMENT vbuyy=vbuz1_bor_vbuaa
 ora {z1}
 tay
@@ -4224,9 +6100,6 @@ sta ({z1}),y
 //FRAGMENT vbuaa=vbuyy_bor_vbuaa
 sty $ff
 ora $ff
-//FRAGMENT vwuz1=vwuz1_ror_1
-lsr {z1}+1
-ror {z1}
 //FRAGMENT vwuz1=vwuz1_plus_vbuc1
 lda #{c1}
 clc
@@ -4235,9 +6108,6 @@ sta {z1}
 bcc !+
 inc {z1}+1
 !:
-//FRAGMENT vbuaa_eq_vbuc1_then_la1
-cmp #{c1}
-beq {la1}
 //FRAGMENT vbuz1_eq_vbuxx_then_la1
 cpx {z1}
 beq {la1}
@@ -4301,126 +6171,101 @@ sta {z1}+1
 //FRAGMENT vwsz1=vwsz1_rol_1
 asl {z1}
 rol {z1}+1
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {c1}
-//FRAGMENT vbuz1=vbuc1_plus_vbuz2
-lax {z2}
-axs #-[{c1}]
-stx {z1}
-//FRAGMENT vbuz1=vbuc1_plus_vbuaa
-clc
-adc #{c1}
+//FRAGMENT vboz1=vbuz2_lt_vbuc1
+lda {z2}
+cmp #{c1}
+lda #0
+rol
+eor #1
 sta {z1}
-//FRAGMENT vbuz1=vbuc1_plus_vbuxx
-txa
-axs #-[{c1}]
-stx {z1}
-//FRAGMENT vbuz1=vbuc1_plus_vbuyy
-tya
-clc
-adc #{c1}
+//FRAGMENT vboaa=vbuz1_lt_vbuc1
+lda {z1}
+cmp #{c1}
+lda #0
+rol
+eor #1
+//FRAGMENT vboxx=vbuz1_lt_vbuc1
+lda {z1}
+cmp #{c1}
+lda #0
+rol
+eor #1
+tax
+//FRAGMENT vboyy=vbuz1_lt_vbuc1
+lda {z1}
+cmp #{c1}
+lda #0
+rol
+eor #1
+tay
+//FRAGMENT vboz1=vbuaa_lt_vbuc1
+cmp #{c1}
+lda #0
+rol
+eor #1
 sta {z1}
-//FRAGMENT vbuaa=vbuc1_plus_vbuz1
-lda #{c1}
-clc
-adc {z1}
-//FRAGMENT vbuaa=vbuc1_plus_vbuaa
-clc
-adc #{c1}
-//FRAGMENT vbuaa=vbuc1_plus_vbuxx
-txa
-clc
-adc #{c1}
-//FRAGMENT vbuaa=vbuc1_plus_vbuyy
-tya
-clc
-adc #{c1}
-//FRAGMENT vbuxx=vbuc1_plus_vbuz1
-lax {z1}
-axs #-[{c1}]
-//FRAGMENT vbuxx=vbuc1_plus_vbuaa
+//FRAGMENT vboaa=vbuaa_lt_vbuc1
+cmp #{c1}
+lda #0
+rol
+eor #1
+//FRAGMENT vboxx=vbuaa_lt_vbuc1
+cmp #{c1}
+lda #0
+rol
+eor #1
 tax
-axs #-[{c1}]
-//FRAGMENT vbuxx=vbuc1_plus_vbuxx
-txa
-axs #-[{c1}]
-//FRAGMENT vbuxx=vbuc1_plus_vbuyy
-tya
-tax
-axs #-[{c1}]
-//FRAGMENT vbuyy=vbuc1_plus_vbuz1
-lda #{c1}
-clc
-adc {z1}
+//FRAGMENT vboyy=vbuaa_lt_vbuc1
+cmp #{c1}
+lda #0
+rol
+eor #1
 tay
-//FRAGMENT vbuyy=vbuc1_plus_vbuaa
-clc
-adc #{c1}
-tay
-//FRAGMENT vbuyy=vbuc1_plus_vbuxx
-txa
-clc
-adc #{c1}
-tay
-//FRAGMENT vbuyy=vbuc1_plus_vbuyy
-tya
-clc
-adc #{c1}
-tay
-//FRAGMENT vbuz1=vbuz2_plus_vbuaa
-clc
-adc {z2}
+//FRAGMENT vboz1=vbuxx_lt_vbuc1
+cpx #{c1}
+lda #0
+rol
+eor #1
 sta {z1}
-//FRAGMENT vbuz1=vbuxx_plus_vbuaa
-stx $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_plus_vbuaa
-sty $ff
-clc
-adc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_plus_vbuaa
-clc
-adc {z1}
-//FRAGMENT vbuaa=vbuxx_plus_vbuaa
-stx $ff
-clc
-adc $ff
-//FRAGMENT vbuaa=vbuyy_plus_vbuaa
-sty $ff
-clc
-adc $ff
-//FRAGMENT vbuxx=vbuz1_plus_vbuaa
-clc
-adc {z1}
+//FRAGMENT vboaa=vbuxx_lt_vbuc1
+cpx #{c1}
+lda #0
+rol
+eor #1
+//FRAGMENT vboxx=vbuxx_lt_vbuc1
+cpx #{c1}
+lda #0
+rol
+eor #1
 tax
-//FRAGMENT vbuxx=vbuxx_plus_vbuaa
-stx $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuxx=vbuyy_plus_vbuaa
-sty $ff
-clc
-adc $ff
-tax
-//FRAGMENT vbuyy=vbuz1_plus_vbuaa
-clc
-adc {z1}
+//FRAGMENT vboyy=vbuxx_lt_vbuc1
+cpx #{c1}
+lda #0
+rol
+eor #1
 tay
-//FRAGMENT vbuyy=vbuxx_plus_vbuaa
-stx $ff
-clc
-adc $ff
-tay
-//FRAGMENT vbuyy=vbuyy_plus_vbuaa
-sty $ff
-clc
-adc $ff
+//FRAGMENT vboz1=vbuyy_lt_vbuc1
+cpy #{c1}
+lda #0
+rol
+eor #1
+sta {z1}
+//FRAGMENT vboaa=vbuyy_lt_vbuc1
+cpy #{c1}
+lda #0
+rol
+eor #1
+//FRAGMENT vboxx=vbuyy_lt_vbuc1
+cpy #{c1}
+lda #0
+rol
+eor #1
+tax
+//FRAGMENT vboyy=vbuyy_lt_vbuc1
+cpy #{c1}
+lda #0
+rol
+eor #1
 tay
 //FRAGMENT vbuz1=vbuz2_rol_4
 lda {z2}
@@ -4620,6 +6465,9 @@ txa
 sty $ff
 ora $ff
 tay
+//FRAGMENT vboz1=vboyy
+tya
+sta {z1}
 //FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuz2
 ldy {z2}
 lda {c1},y
@@ -4764,16 +6612,6 @@ bne {la1}
 lda {z1}
 cmp #<{c1}
 bne {la1}
-//FRAGMENT vbuz1=_byte_vwuz2
-lda {z2}
-sta {z1}
-//FRAGMENT vwuz1_neq_vwuc1_then_la1
-lda {z1}+1
-cmp #>{c1}
-bne {la1}
-lda {z1}
-cmp #<{c1}
-bne {la1}
 //FRAGMENT vbuz1=vbuc1_bor_vbuaa
 ora #{c1}
 sta {z1}
@@ -4826,24 +6664,12 @@ tay
 tya
 ora #{c1}
 tay
-//FRAGMENT vbuaa=_byte_vwuz1
-lda {z1}
-//FRAGMENT vbuxx=_byte_vwuz1
-lda {z1}
-tax
-//FRAGMENT vbuyy=_byte_vwuz1
-lda {z1}
-tay
 //FRAGMENT vwuz1_gt_vbuc1_then_la1
 lda {z1}+1
 bne {la1}
 lda #{c1}
 cmp {z1}
 bcc {la1}
-//FRAGMENT vbuz1=vbuz2_bxor_vbuc1
-lda #{c1}
-eor {z2}
-sta {z1}
 //FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuz1
 lda {c1}
 and {z1}
@@ -4852,17 +6678,6 @@ sta {c1}
 lda {c1}
 ora {z1}
 sta {c1}
-//FRAGMENT vbuaa=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-//FRAGMENT vbuxx=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-tax
-//FRAGMENT vbuyy=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-tay
 //FRAGMENT vbuz1=vbuaa_bxor_vbuc1
 eor #{c1}
 sta {z1}
@@ -4874,36 +6689,6 @@ tax
 //FRAGMENT vbuyy=vbuaa_bxor_vbuc1
 eor #{c1}
 tay
-//FRAGMENT vbuz1=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-//FRAGMENT vbuxx=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-tax
-//FRAGMENT vbuyy=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-tay
-//FRAGMENT vbuz1=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-//FRAGMENT vbuxx=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-tax
-//FRAGMENT vbuyy=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-tay
 //FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuaa
 and {c1}
 sta {c1}
@@ -4972,10 +6757,6 @@ sta STACK_BASE+{c1},x
 tya
 tsx
 sta STACK_BASE+{c1},x
-//FRAGMENT vbsz1_ge_0_then_la1
-lda {z1}
-cmp #0
-bpl {la1}
 //FRAGMENT vbsz1=_dec_vbsz1
 dec {z1}
 //FRAGMENT pbuz1=pbuc1_plus_vbsz2
@@ -5069,9 +6850,6 @@ tay
 sty $ff
 ora $ff
 tay
-//FRAGMENT vbsxx_ge_0_then_la1
-cpx #0
-bpl {la1}
 //FRAGMENT vbuyy=vbuxx_bor_vbuyy
 txa
 sty $ff
@@ -5086,15 +6864,6 @@ tax
 ldx #{c1}
 //FRAGMENT vbsxx=_dec_vbsxx
 dex
-//FRAGMENT vduz1=vduz2
-lda {z2}
-sta {z1}
-lda {z2}+1
-sta {z1}+1
-lda {z2}+2
-sta {z1}+2
-lda {z2}+3
-sta {z1}+3
 //FRAGMENT vduz1=vduz2_minus_vduc1
 lda {z2}
 sec
@@ -5118,25 +6887,6 @@ lda #<{c2}>>$10
 sta {c1}+2
 lda #>{c2}>>$10
 sta {c1}+3
-//FRAGMENT vbuz1=vbuc1_minus_vbuz2
-lda #{c1}
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT pbuz1=pbuz1_minus_vbuc1
-sec
-lda {z1}
-sbc #{c1}
-sta {z1}
-lda {z1}+1
-sbc #0
-sta {z1}+1
-//FRAGMENT vbuz1=_dec_vbuz1
-dec {z1}
-//FRAGMENT vbuz1=vbuz2_minus_vbuc1
-lax {z2}
-axs #{c1}
-stx {z1}
 //FRAGMENT vduz1=vduc1_minus__deref_pduc2
 lda #<{c1}
 sec
@@ -5151,16 +6901,6 @@ sta {z1}+2
 lda #>{c1}>>$10
 sbc {c2}+3
 sta {z1}+3
-//FRAGMENT vwuz1=_hi_vduz2
-lda {z2}+2
-sta {z1}
-lda {z2}+3
-sta {z1}+1
-//FRAGMENT vwuz1=_lo_vduz2
-lda {z2}
-sta {z1}
-lda {z2}+1
-sta {z1}+1
 //FRAGMENT pwuz1=pwuc1
 lda #<{c1}
 sta {z1}
@@ -5181,12 +6921,6 @@ sta {z1}
 bcc !+
 inc {z1}+1
 !:
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2
-ldy {z2}
-lda {c1},y
-sta {z1}
-lda {c1}+1,y
-sta {z1}+1
 //FRAGMENT pwuz1=pwuz2
 lda {z2}
 sta {z1}
@@ -5200,14 +6934,6 @@ sta {z1}
 lda {z2}+1
 sbc #>{c1}
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz2_plus_vbuc1
-lda #{c1}
-clc
-adc {z2}
-sta {z1}
-lda #0
-adc {z2}+1
-sta {z1}+1
 //FRAGMENT vbuz1_gt_0_then_la1
 lda {z1}
 bne {la1}
@@ -5230,10 +6956,6 @@ sta {z1}
 lda {z1}+1
 sbc #0
 sta {z1}+1
-//FRAGMENT vbuz1=vbuz2_ror_1
-lda {z2}
-lsr
-sta {z1}
 //FRAGMENT pwuz1=pwuz2_plus_vbuz3
 lda {z3}
 clc
@@ -5267,8 +6989,6 @@ sta {z1}
 lda #0
 adc {z2}+1
 sta {z1}+1
-//FRAGMENT vbuz1=vbuz1_ror_1
-lsr {z1}
 //FRAGMENT pbuz1=pbuz2_plus_1
 clc
 lda {z2}
@@ -5277,20 +6997,6 @@ sta {z1}
 lda {z2}+1
 adc #0
 sta {z1}+1
-//FRAGMENT vbuaa=vbuc1_minus_vbuz1
-lda #{c1}
-sec
-sbc {z1}
-//FRAGMENT vbuxx=vbuc1_minus_vbuz1
-lda #{c1}
-sec
-sbc {z1}
-tax
-//FRAGMENT vbuyy=vbuc1_minus_vbuz1
-lda #{c1}
-sec
-sbc {z1}
-tay
 //FRAGMENT vbuz1=vbuc1_minus_vbuaa
 eor #$ff
 sec
@@ -5357,75 +7063,9 @@ tay
 txa
 tay
 sta ({z1}),y
-//FRAGMENT vbuz1=vbuaa_minus_vbuc1
-sec
-sbc #{c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_minus_vbuc1
-txa
-axs #{c1}
-stx {z1}
-//FRAGMENT vbuz1=vbuyy_minus_vbuc1
-tya
-sec
-sbc #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_minus_vbuc1
-lda {z1}
-sec
-sbc #{c1}
-//FRAGMENT vbuaa=vbuaa_minus_vbuc1
-sec
-sbc #{c1}
-//FRAGMENT vbuaa=vbuxx_minus_vbuc1
-txa
-sec
-sbc #{c1}
-//FRAGMENT vbuaa=vbuyy_minus_vbuc1
-tya
-sec
-sbc #{c1}
-//FRAGMENT vbuxx=vbuz1_minus_vbuc1
-lax {z1}
-axs #{c1}
-//FRAGMENT vbuxx=vbuaa_minus_vbuc1
-tax
-axs #{c1}
-//FRAGMENT vbuyy=vbuz1_minus_vbuc1
-lda {z1}
-sec
-sbc #{c1}
-tay
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa
-tay
-lda {c1},y
-sta {z1}
-lda {c1}+1,y
-sta {z1}+1
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx
-lda {c1},x
-sta {z1}
-lda {c1}+1,x
-sta {z1}+1
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy
-lda {c1},y
-sta {z1}
-lda {c1}+1,y
-sta {z1}+1
 //FRAGMENT vbuaa_gt_0_then_la1
 cmp #0
 bne {la1}
-//FRAGMENT vbuaa=vbuz1_ror_1
-lda {z1}
-lsr
-//FRAGMENT vbuxx=vbuz1_ror_1
-lda {z1}
-lsr
-tax
-//FRAGMENT vbuyy=vbuz1_ror_1
-lda {z1}
-lsr
-tay
 //FRAGMENT vbuz1=vbuaa_ror_1
 lsr
 sta {z1}
@@ -5437,36 +7077,6 @@ tax
 //FRAGMENT vbuyy=vbuaa_ror_1
 lsr
 tay
-//FRAGMENT vbuz1=vbuxx_ror_1
-txa
-lsr
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_ror_1
-txa
-lsr
-//FRAGMENT vbuxx=vbuxx_ror_1
-txa
-lsr
-tax
-//FRAGMENT vbuyy=vbuxx_ror_1
-txa
-lsr
-tay
-//FRAGMENT vbuz1=vbuyy_ror_1
-tya
-lsr
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_ror_1
-tya
-lsr
-//FRAGMENT vbuxx=vbuyy_ror_1
-tya
-lsr
-tax
-//FRAGMENT vbuyy=vbuyy_ror_1
-tya
-lsr
-tay
 //FRAGMENT pwuz1=pwuz2_plus_vbuaa
 clc
 adc {z2}
@@ -5493,43 +7103,12 @@ sta {z1}+1
 //FRAGMENT vbuxx_gt_0_then_la1
 cpx #0
 bne {la1}
-//FRAGMENT vbuxx=_dec_vbuxx
-dex
-//FRAGMENT vbuyy=vbuaa_minus_vbuc1
-sec
-sbc #{c1}
-tay
-//FRAGMENT vbuxx=vbuxx_minus_vbuc1
-txa
-axs #{c1}
-//FRAGMENT vbuyy=vbuxx_minus_vbuc1
-txa
-sec
-sbc #{c1}
-tay
-//FRAGMENT vbuxx=vbuyy_minus_vbuc1
-tya
-tax
-axs #{c1}
-//FRAGMENT vbuyy=vbuyy_minus_vbuc1
-tya
-sec
-sbc #{c1}
-tay
 //FRAGMENT vbuaa=vbuaa_plus_1
 clc
 adc #1
-//FRAGMENT vbuaa=vbuxx_plus_1
-inx
-txa
-//FRAGMENT vbuaa=vbuyy_plus_1
-iny
-tya
 //FRAGMENT vbuxx=vbuaa_plus_1
 tax
 inx
-//FRAGMENT vbuxx=vbuxx_plus_1
-inx
 //FRAGMENT vbuxx=vbuyy_plus_1
 tya
 tax
@@ -5570,14 +7149,6 @@ sta {z1}+2
 lda {z1}+3
 sbc #>{c1}>>$10
 sta {z1}+3
-//FRAGMENT vwuz1=vwuz1_plus_vwuz2
-lda {z1}
-clc
-adc {z2}
-sta {z1}
-lda {z1}+1
-adc {z2}+1
-sta {z1}+1
 //FRAGMENT pbuz1=_dec_pbuz1
 lda {z1}
 bne !+
@@ -5628,23 +7199,8 @@ tsx
 txa
 axs #-3
 txs
-//FRAGMENT vbuz1=vbuz2_minus_1
-ldx {z2}
-dex
-stx {z1}
-//FRAGMENT vbuaa=vbuz1_minus_1
-lda {z1}
-sec
-sbc #1
 //FRAGMENT _stackpushbyte_=vbuaa
 pha
-//FRAGMENT vbuxx=vbuz1_minus_1
-ldx {z1}
-dex
-//FRAGMENT vbuyy=vbuz1_minus_1
-lda {z1}
-tay
-dey
 //FRAGMENT vbuz1=vbuaa_minus_1
 sec
 sbc #1
@@ -5655,6 +7211,126 @@ sbc #1
 //FRAGMENT vbuxx=vbuaa_minus_1
 tax
 dex
+//FRAGMENT vwuz1=vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuz1=_lo_pbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=_hi_pbuz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vwuz1_eq_0_then_la1
+lda {z1}
+ora {z1}+1
+beq {la1}
+//FRAGMENT vwuz1_gt_vwuz2_then_la1
+lda {z2}+1
+cmp {z1}+1
+bcc {la1}
+bne !+
+lda {z2}
+cmp {z1}
+bcc {la1}
+!:
+//FRAGMENT vwuz1_neq_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}+1
+lda {c2},y
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_band_vwuc1
+lda {z2}
+and #<{c1}
+sta {z1}
+lda {z2}+1
+and #>{c1}
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
+ldy #0
+lda ({z1}),y
+ldy {z2}
+ora {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vwuz1=vbuaa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuaa=_lo_pbuz1
+lda {z1}
+//FRAGMENT vbuxx=_lo_pbuz1
+ldx {z1}
+//FRAGMENT vbuz1=vbuaa_bor_vbuaa
+sta {z1}
+//FRAGMENT vbuaa=_hi_pbuz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_pbuz1
+ldx {z1}+1
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}+1
+lda {c2},y
+sta {z1}
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
+lda {c1},x
+sta {z1}+1
+lda {c2},x
+sta {z1}
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
+lda {c1},y
+sta {z1}+1
+lda {c2},y
+sta {z1}
+//FRAGMENT _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy #0
+ora ({z1}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+ora ({z1}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+ora ({z1}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuyy=_hi_pbuz1
+ldy {z1}+1
+//FRAGMENT pbuz1=pbuz1_plus_vwuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
 //FRAGMENT pbuc1_derefidx_vbuz1_neq_0_then_la1
 ldy {z1}
 lda {c1},y
@@ -5677,25 +7353,670 @@ bne {la1}
 lda {c1},y
 cmp #0
 bne {la1}
-//FRAGMENT vbuaa=_dec_vbuaa
+//FRAGMENT pbuz1=pbuz2_minus_vwuz3
+lda {z2}
 sec
-sbc #1
-//FRAGMENT vbuyy=_dec_vbuyy
-dey
+sbc {z3}
+sta {z1}
+lda {z2}+1
+sbc {z3}+1
+sta {z1}+1
+//FRAGMENT pwuz1=qwuz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vbuz1_le_0_then_la1
+lda {z1}
+cmp #0
+beq {la1}
+//FRAGMENT vwuz1_eq_vwuc1_then_la1
+lda {z1}
+cmp #<{c1}
+bne !+
+lda {z1}+1
+cmp #>{c1}
+beq {la1}
+!:
+//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
+dec {c1}
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT _deref_pbuz1_gt_vbuz2_then_la1
+ldy #0
+lda ({z1}),y
+cmp {z2}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT vbuz1=_neg_vbuz2
+lda {z2}
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2)
+ldy #0
+lda ({z2}),y
+tay
+lda ({z1}),y
+clc
+adc #1
+sta ({z1}),y
+//FRAGMENT vwuz1=_deref_pbuz2_rol_1
+ldy #0
+lda ({z2}),y
+asl
+sta {z1}
+lda #0
+rol
+sta {z1}+1
+//FRAGMENT qwuz1=qwuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT _deref_qwuz1=pwuz2
+ldy #0
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT vwuz1_neq_vbuc1_then_la1
+NO_SYNTHESIS
+//FRAGMENT vwuz1_neq_vbsc1_then_la1
+NO_SYNTHESIS
+//FRAGMENT pwuz1=_deref_qwuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vwuz1=pbuz2_minus_pbuz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+lda {z2}+1
+sbc {z3}+1
+sta {z1}+1
+//FRAGMENT pwuz1_derefidx_vbuz2=vwuz3
+ldy {z2}
+lda {z3}
+sta ({z1}),y
+iny
+lda {z3}+1
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+clc
+adc #1
+sta ({z1}),y
+//FRAGMENT vwuz1=pwuz2_minus_pwuz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+lda {z2}+1
+sbc {z3}+1
+sta {z1}+1
+//FRAGMENT pwuz1=qwuz2_derefidx_vbuaa
+tay
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT pwuz1=qwuz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT pwuz1=qwuz2_derefidx_vbuyy
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vbuaa_le_0_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuaa
+tay
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuyy
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT _deref_pbuz1_gt_vbuxx_then_la1
+ldy #0
+lda ({z1}),y
+sta $ff
+cpx $ff
+bcc {la1}
+//FRAGMENT vbuz1=_neg_vbuaa
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbuz1=_neg_vbuxx
+dex
+txa
+eor #$ff
+sta {z1}
+//FRAGMENT vbuaa=_neg_vbuz1
+lda {z1}
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbuaa=_neg_vbuaa
+eor #$ff
+clc
+adc #$01
+//FRAGMENT vbuaa=_neg_vbuxx
+dex
+txa
+eor #$ff
+//FRAGMENT vbuxx=_neg_vbuz1
+lda {z1}
+eor #$ff
+tax
+inx
+//FRAGMENT vbuxx=_neg_vbuaa
+eor #$ff
+tax
+inx
+//FRAGMENT vbuxx=_neg_vbuxx
+dex
+txa
+eor #$ff
+tax
+//FRAGMENT vbuyy=_neg_vbuz1
+lda {z1}
+eor #$ff
+tay
+iny
+//FRAGMENT vbuyy=_neg_vbuaa
+eor #$ff
+tay
+iny
+//FRAGMENT vbuyy=_neg_vbuxx
+txa
+eor #$ff
+tay
+iny
+//FRAGMENT pwuz1_derefidx_vbuaa=vwuz2
+tay
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuxx=vwuz2
+txa
+tay
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuyy=vwuz2
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=_inc_pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+clc
+adc #1
+sta ({z1}),y
+//FRAGMENT vbuxx_le_0_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT pbuz1=pbuz2_minus_vwuz1
+lda {z2}
+sec
+sbc {z1}
+sta {z1}
+lda {z2}+1
+sbc {z1}+1
+sta {z1}+1
+//FRAGMENT vwuz1=_deref_pbuz1_rol_1
+ldy #0
+lda ({z1}),y
+asl
+sta {z1}
+lda #0
+rol
+sta {z1}+1
+//FRAGMENT qwuz1=qwuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pwuz1=_deref_qwuz1
+ldy #0
+lda ({z1}),y
+pha
+iny
+lda ({z1}),y
+sta {z1}+1
+pla
+sta {z1}
+//FRAGMENT vwuz1=pwuz1_minus_pwuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
 //FRAGMENT vbuyy_gt_0_then_la1
 cpy #0
 bne {la1}
-//FRAGMENT 0_neq_vbuz1_then_la1
-lda {z1}
-bne {la1}
-//FRAGMENT 0_neq_vbuxx_then_la1
-cpx #0
-bne {la1}
-//FRAGMENT 0_neq_vbuyy_then_la1
-cpy #0
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT 0_neq__deref_pbuc1_then_la1
+lda {c1}
+cmp #0
 bne {la1}
 //FRAGMENT vbuyy=pbuc1_derefidx_vbuxx
 ldy {c1},x
+//FRAGMENT vduz1=_inc_vduz1
+inc {z1}
+bne !+
+inc {z1}+1
+bne !+
+inc {z1}+2
+bne !+
+inc {z1}+3
+!:
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1
+ldy {z1}
+lda {c1},y
+cmp {z2}
+beq {la1}
+//FRAGMENT vbsz1=_sbyte_vwuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsz3
+lda {z2}
+sec
+sbc {z3}
+sta {z1}
+//FRAGMENT 0_neq_vbsz1_then_la1
+lda {z1}
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1_ge_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcs {la1}
+//FRAGMENT vbuaa_le_vbuz1_then_la1
+ldy {z1}
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuz1_then_la1
+tay
+lda {c1},y
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1
+lda {c1},x
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1
+lda {c1},y
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuaa_then_la1
+ldx {z1}
+tay
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuaa_then_la1
+tax
+lda {c1},x
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuaa_then_la1
+tay
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuaa_then_la1
+tax
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuxx_then_la1
+ldy {z1}
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuxx_then_la1
+tay
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuxx_then_la1
+lda {c1},x
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuxx_then_la1
+lda {c1},y
+tay
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuyy_then_la1
+ldx {z1}
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_eq_vbuyy_then_la1
+tax
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuyy_then_la1
+lda {c1},x
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuyy_then_la1
+lda {c1},y
+tax
+sty $ff
+cpx $ff
+beq  {la1}
+//FRAGMENT vbuaa_neq_vbuz1_then_la1
+cmp {z1}
+bne {la1}
+//FRAGMENT vbsaa=_sbyte_vwuz1
+lda {z1}
+//FRAGMENT vbsxx=_sbyte_vwuz1
+ldx {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsaa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsxx
+txa
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsyy
+tya
+eor #$ff
+sec
+adc {z2}
+sta {z1}
+//FRAGMENT vbsxx=vbsz1_minus_vbsz2
+lda {z1}
+sec
+sbc {z2}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsaa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsxx=vbsz1_minus_vbsyy
+tya
+eor #$ff
+sec
+adc {z1}
+tax
+//FRAGMENT vbsz1=vbsxx_minus_vbsz2
+txa
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsxx
+lda #0
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsyy
+txa
+sty $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsxx=vbsxx_minus_vbsz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsxx
+lda #0
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsz1=vbsyy_minus_vbsz2
+tya
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsaa
+sta $ff
+tya
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsxx
+tya
+stx $ff
+sec
+sbc $ff
+sta {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsyy
+lda #0
+sta {z1}
+//FRAGMENT vbsxx=vbsyy_minus_vbsz1
+tya
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsaa
+sta $ff
+tya
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsxx
+tya
+stx $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbsxx=vbsyy_minus_vbsyy
+lda #0
+tax
+//FRAGMENT 0_neq_vbsxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuaa_ge_vbuz1_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuz1=vbuxx_minus_1
+dex
+stx {z1}
+//FRAGMENT vbuz1=vbuyy_minus_1
+tya
+sec
+sbc #1
+sta {z1}
+//FRAGMENT vbuyy_le_vbuz1_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuz1_le_vbuaa_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuz1_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vbuz1_ge_vbuxx_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuz1_ge_vbuyy_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuyy_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuyy_ge_vbuz1_then_la1
+cpy {z1}
+bcs {la1}
+//FRAGMENT vbuyy_ge_vbuxx_then_la1
+stx $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT vbsaa=_inc_vbsaa
+clc
+adc #1
+//FRAGMENT vbsxx=_inc_vbsxx
+inx
+//FRAGMENT vbsyy=_sbyte_vwuz1
+ldy {z1}
+//FRAGMENT vbsyy=_inc_vbsyy
+iny
+//FRAGMENT vbuaa_lt_vbuxx_then_la1
+stx $ff
+cmp $ff
+bcc {la1}
+//FRAGMENT vbuaa_lt_vbuyy_then_la1
+tax
+sty $ff
+cpx $ff
+bcc {la1}
+//FRAGMENT vbuyy_lt_vbuaa_then_la1
+sta $ff
+cpy $ff
+bcc {la1}
+//FRAGMENT vbuyy_lt_vbuxx_then_la1
+stx $ff
+cpy $ff
+bcc {la1}
+//FRAGMENT vbuxx_le_vbuaa_then_la1
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuyy_le_vbuaa_then_la1
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuyy_le_vbuxx_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuz1_le_vbuyy_then_la1
+cpy {z1}
+bcs {la1}
+//FRAGMENT vbuxx_le_vbuyy_then_la1
+stx $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT vbuz1=vbuz2_minus_vbuz1
+lda {z2}
+sec
+sbc {z1}
+sta {z1}
+//FRAGMENT vbsz1=vbsz1_minus_vbsz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
 //FRAGMENT pbuz1_le_pbuc1_then_la1
 lda {z1}+1
 cmp #>{c1}
@@ -5714,6 +8035,8 @@ lda #<{c1}
 cmp {z1}
 bcc {la1}
 !:
+//FRAGMENT vbuz1=vbuz1_rol_1
+asl {z1}
 //FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1
 ldy {z1}
 lda {c1},y
@@ -5755,9 +8078,6 @@ sta {z1}+2
 lda #>{c1}>>$10
 adc #0
 sta {z1}+3
-//FRAGMENT vbuz1=_byte_vduz2
-lda {z2}
-sta {z1}
 //FRAGMENT vduz1=vduc1_plus_vbuaa
 clc
 adc #<{c1}
@@ -5799,16 +8119,6 @@ sta {z1}+2
 lda #>{c1}>>$10
 adc #0
 sta {z1}+3
-//FRAGMENT vbuaa=_byte_vduz1
-lda {z1}
-//FRAGMENT vbuxx=_byte_vduz1
-lda {z1}
-tax
-//FRAGMENT vbuyy=_byte_vduz1
-lda {z1}
-tay
-//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
-dec {c1}
 //FRAGMENT pbuz1_derefidx_vbuaa=vbuz2
 tay
 lda {z2}
@@ -5828,24 +8138,59 @@ sta ({z1}),y
 //FRAGMENT pbuz1_derefidx_vbuyy=vbuyy
 tya
 sta ({z1}),y
+//FRAGMENT vwuz1=vwuz2_rol_7
+lda {z2}+1
+lsr
+lda {z2}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_bxor_vwuz3
+lda {z2}
+eor {z3}
+sta {z1}
+lda {z2}+1
+eor {z3}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_ror_9
+lda {z2}+1
+lsr
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_8
+lda {z2}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_bxor_vwuz2
+lda {z1}
+eor {z2}
+sta {z1}
+lda {z1}+1
+eor {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vduz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vduz1=vwuz2_dword_vwuz3
+lda {z2}
+sta {z1}+2
+lda {z2}+1
+sta {z1}+3
+lda {z3}
+sta {z1}
+lda {z3}+1
+sta {z1}+1
 //FRAGMENT _deref_pbuz1_eq_vbuz2_then_la1
 lda {z2}
 ldy #0
 cmp ({z1}),y
 beq {la1}
-//FRAGMENT pbuz1=_inc_pbuz2
-clc
-lda {z2}
-adc #1
-sta {z1}
-lda {z2}+1
-adc #0
-sta {z1}+1
-//FRAGMENT _deref_pbuz1_neq_0_then_la1
-ldy #0
-lda ({z1}),y
-cmp #0
-bne {la1}
 //FRAGMENT _deref_pbuz1_eq_vbuxx_then_la1
 txa
 ldy #0
@@ -5864,14 +8209,6 @@ sta {z1}
 lda #>{c1}
 adc #0
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz2_plus_vwuz3
-lda {z2}
-clc
-adc {z3}
-sta {z1}
-lda {z2}+1
-adc {z3}+1
-sta {z1}+1
 //FRAGMENT pbuz1=pbuc1_plus_vbuaa
 clc
 adc #<{c1}
@@ -5895,52 +8232,17 @@ sta {z1}
 lda #>{c1}
 adc #0
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz1_plus_vwuz2
-lda {z1}
-clc
-adc {z2}
-sta {z1}
-lda {z1}+1
-adc {z2}+1
-sta {z1}+1
-//FRAGMENT vbuz1=vbuz1_plus_vbuc1
-lax {z1}
-axs #-[{c1}]
-stx {z1}
-//FRAGMENT vwuz1=vbuz2
-lda {z2}
-sta {z1}
-lda #0
-sta {z1}+1
 //FRAGMENT pwuc1_derefidx_vbuz1=vwuz2
 ldy {z1}
 lda {z2}
 sta {c1},y
 lda {z2}+1
 sta {c1}+1,y
-//FRAGMENT vbuz1=vwuz2_band_vbuc1
-lda #{c1}
-and {z2}
-sta {z1}
 //FRAGMENT vbuz1=pwuc1_derefidx_vbuz2_band_vbuc2
 lda #{c2}
 ldy {z2}
 and {c1},y
 sta {z1}
-//FRAGMENT vwuz1=vbuaa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=vbuxx
-txa
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=vbuyy
-tya
-sta {z1}
-lda #0
-sta {z1}+1
 //FRAGMENT pwuc1_derefidx_vbuaa=vwuz1
 tay
 lda {z1}
@@ -5957,17 +8259,6 @@ lda {z1}
 sta {c1},y
 lda {z1}+1
 sta {c1}+1,y
-//FRAGMENT vbuaa=vwuz1_band_vbuc1
-lda #{c1}
-and {z1}
-//FRAGMENT vbuxx=vwuz1_band_vbuc1
-lda #{c1}
-and {z1}
-tax
-//FRAGMENT vbuyy=vwuz1_band_vbuc1
-lda #{c1}
-and {z1}
-tay
 //FRAGMENT vbuaa=pwuc1_derefidx_vbuz1_band_vbuc2
 lda #{c2}
 ldy {z1}
@@ -6031,29 +8322,85 @@ tax
 lda #{c2}
 and {c1},y
 tay
-//FRAGMENT vbuz1=vbuz1_plus_vbuz2
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz2
+ldx {z2}
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuxx
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuyy
+ldx {c1},y
+tay
+txa
+sta ({z1}),y
+//FRAGMENT vwsz1=vwsz2_plus_pbuz3_derefidx_vbuz4
+ldy {z4}
+clc
+lda {z2}
+adc ({z3}),y
+sta {z1}
+bcc !+
+inc {z2}+1
+!:
+//FRAGMENT vwsz1=vwsz2_minus_vbuc1
+sec
+lda {z2}
+sbc #{c1}
+sta {z1}
+lda {z2}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz2_plus_pbuz3_derefidx_vbuxx
+txa
+tay
+clc
+lda {z2}
+adc ({z3}),y
+sta {z1}
+bcc !+
+inc {z2}+1
+!:
+//FRAGMENT vwsz1=vwsz2_plus_pbuz3_derefidx_vbuyy
+clc
+lda {z2}
+adc ({z3}),y
+sta {z1}
+bcc !+
+inc {z2}+1
+!:
+//FRAGMENT vwsz1=vwsz2_plus_vwsz1
 lda {z1}
 clc
 adc {z2}
 sta {z1}
-//FRAGMENT vbuz1=vbuz1_minus_vbuc1
-lax {z1}
-axs #{c1}
-stx {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
+bcs !+
+dec {z1}+1
+!:
+//FRAGMENT vwsz1=vwsz1_plus_pbuz2_derefidx_vbuyy
+clc
+lda {z1}
+adc ({z2}),y
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
 //FRAGMENT vbuz1=vbuz1_plus_pbuc1_derefidx_vbuz2
 lda {z1}
 ldy {z2}
 clc
 adc {c1},y
 sta {z1}
-//FRAGMENT pbuz1=pbuz2_plus_vwuc1
-clc
-lda {z2}
-adc #<{c1}
-sta {z1}
-lda {z2}+1
-adc #>{c1}
-sta {z1}+1
 //FRAGMENT vbuz1=pbuz2_derefidx_vbuc1_plus_pbuz2_derefidx_vbuc1
 ldy #{c1}
 lda ({z2}),y
@@ -6071,11 +8418,6 @@ lda {z2}
 lsr
 lsr
 sta {z1}
-//FRAGMENT vbuz1=vbuz1_plus_vbuxx
-txa
-clc
-adc {z1}
-sta {z1}
 //FRAGMENT vbuyy=vbuyy_plus_pbuc1_derefidx_vbuz1
 tya
 ldy {z1}
@@ -6280,14 +8622,6 @@ tya
 lsr
 lsr
 tay
-//FRAGMENT pbuz1=pbuz1_plus_vwuc1
-clc
-lda {z1}
-adc #<{c1}
-sta {z1}
-lda {z1}+1
-adc #>{c1}
-sta {z1}+1
 //FRAGMENT vwuz1=vbuz2_word_vbuz3
 lda {z2}
 sta {z1}+1
@@ -6364,9 +8698,6 @@ sty {z1}
 sec
 sbc #1
 sta {z1}
-//FRAGMENT 0_neq_vbuaa_then_la1
-cmp #0
-bne {la1}
 //FRAGMENT vbuz1=_dec_vbuxx
 dex
 stx {z1}
@@ -6405,10 +8736,92 @@ dey
 txa
 tay
 dey
-//FRAGMENT vbuz1_ge_vbuz2_then_la1
-lda {z1}
-cmp {z2}
-bcs {la1}
+//FRAGMENT vwuz1=vwuz2_bor_vbuz3
+lda {z3}
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_4
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c2},y
+ldy #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2_eq_pbuz3_derefidx_vbuz2_then_la1
+ldy {z2}
+lda ({z1}),y
+
+cmp ({z3}),y
+beq {la1}
+//FRAGMENT vwuz1=vwuz2_bor_vbuxx
+txa
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_bor_vbuyy
+tya
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+ldy #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuc1=pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy #{c1}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa_eq_pbuz2_derefidx_vbuaa_then_la1
+tay
+lda ({z1}),y
+
+cmp ({z2}),y
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuxx_eq_pbuz2_derefidx_vbuxx_then_la1
+txa
+tay
+lda ({z1}),y
+
+cmp ({z2}),y
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_eq_pbuz2_derefidx_vbuyy_then_la1
+lda ({z1}),y
+
+cmp ({z2}),y
+beq {la1}
+//FRAGMENT vwuz1=vwuz1_bor_vbuxx
+txa
+ora {z1}
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_rol_4
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
 //FRAGMENT vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1
 lda {z1}
 ldy {z2}
@@ -6418,10 +8831,6 @@ bcs {la1}
 lda {z1}
 cmp {z1}
 bcs {la1}
-//FRAGMENT vbuz1_le_vbuz2_then_la1
-lda {z2}
-cmp {z1}
-bcs {la1}
 //FRAGMENT vbuz1_le_pbuc1_derefidx_vbuz2_then_la1
 ldy {z2}
 lda {c1},y
@@ -6511,9 +8920,6 @@ tya
 sta $ff
 cpy $ff
 bcs {la1}
-//FRAGMENT vbuz1_le_vbuxx_then_la1
-cpx {z1}
-bcs {la1}
 //FRAGMENT vbuz1_le_pbuc1_derefidx_vbuxx_then_la1
 lda {c1},x
 cmp {z1}
@@ -6716,14 +9122,6 @@ tax
 stx $ff
 cpy $ff
 bne {la1}
-//FRAGMENT vbuz1_ge_vbuxx_then_la1
-lda {z1}
-stx $ff
-cmp $ff
-bcs {la1}
-//FRAGMENT vbuxx_ge_vbuz1_then_la1
-cpx {z1}
-bcs {la1}
 //FRAGMENT pwuz1_derefidx_vbuc1=vwuz2
 ldy #{c1}
 lda {z2}
@@ -6731,9 +9129,36 @@ sta ({z1}),y
 iny
 lda {z2}+1
 sta ({z1}),y
-//FRAGMENT vwuz1=vwuz1_rol_1
-asl {z1}
-rol {z1}+1
+//FRAGMENT vbuz1=vbuz2_plus_2
+lda {z2}
+clc
+adc #2
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_plus_2
+clc
+adc #2
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_plus_2
+inx
+inx
+stx {z1}
+//FRAGMENT vbuxx=vbuz1_plus_2
+ldx {z1}
+inx
+inx
+//FRAGMENT vbuyy=vbuz1_plus_2
+ldy {z1}
+iny
+iny
+//FRAGMENT vbuxx=vbuaa_plus_2
+tax
+inx
+inx
+//FRAGMENT vbuxx=vbuyy_plus_2
+tya
+clc
+adc #2
+tax
 //FRAGMENT vbsz1_lt_vbsc1_then_la1
 lda {z1}
 sec
@@ -6765,15 +9190,6 @@ bvc !+
 eor #$80
 !:
 bmi {la1}
-//FRAGMENT vbsxx=_inc_vbsxx
-inx
-//FRAGMENT vbsyy=_inc_vbsyy
-iny
-//FRAGMENT vwsz1=vbsc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
 //FRAGMENT vwsz1=vwsz1_plus_vwsc1
 clc
 lda {z1}
@@ -6825,15 +9241,6 @@ rol {z1}+1
 //FRAGMENT _deref_pbuc1=_byte_vwsz1
 lda {z1}
 sta {c1}
-//FRAGMENT vbuz1=_hi_vwsz2
-lda {z2}+1
-sta {z1}
-//FRAGMENT vbuaa=_hi_vwsz1
-lda {z1}+1
-//FRAGMENT vbuxx=_hi_vwsz1
-ldx {z1}+1
-//FRAGMENT vbuyy=_hi_vwsz1
-ldy {z1}+1
 //FRAGMENT vwsz1=vwsc1_minus_vwsz1
 lda #<{c1}
 sec
@@ -6978,6 +9385,28 @@ tax
 lda #{c2}
 and {c1},y
 tay
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
 //FRAGMENT _deref_pbuc1=_deref_pbuz1
 ldy #0
 lda ({z1}),y
@@ -6998,15 +9427,6 @@ sta {z1}
 lda #>{c1}
 sbc {z1}+1
 sta {z1}+1
-//FRAGMENT vduz1=vduc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-lda #<{c1}>>$10
-sta {z1}+2
-lda #>{c1}>>$10
-sta {z1}+3
 //FRAGMENT pbuc1_derefidx_vbuaa=_deref_pbuz1
 tax
 ldy #0
@@ -7022,18 +9442,10 @@ tax
 ldy #0
 lda ({z1}),y
 sta {c1},x
-//FRAGMENT pvoz1=pvoz2
-lda {z2}
-sta {z1}
-lda {z2}+1
-sta {z1}+1
 //FRAGMENT vbsz1=pbsc1_derefidx_vbuz2
 ldy {z2}
 lda {c1},y
 sta {z1}
-//FRAGMENT vbsz1=vbsz2
-lda {z2}
-sta {z1}
 //FRAGMENT vbsz1=vbsz1_plus_2
 inc {z1}
 inc {z1}
@@ -7041,19 +9453,11 @@ inc {z1}
 lax {z1}
 axs #{c1}
 stx {z1}
-//FRAGMENT vbsz1_lt_0_then_la1
-lda {z1}
-bmi {la1}
 //FRAGMENT vbsz1=vbsz2_plus_vbsz3
 lda {z2}
 clc
 adc {z3}
 sta {z1}
-//FRAGMENT vbsz1=vbsz2_minus_vbsz3
-lda {z2}
-sec
-sbc {z3}
-sta {z1}
 //FRAGMENT vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3
 ldy {z2}
 lda {c1},y
@@ -7101,8 +9505,6 @@ ldy {c1},x
 //FRAGMENT vbsz1=pbsc1_derefidx_vbuxx
 lda {c1},x
 sta {z1}
-//FRAGMENT vbsz1=vbsxx
-stx {z1}
 //FRAGMENT vbsz1=pbsc1_derefidx_vbuaa
 tay
 lda {c1},y
@@ -7124,13 +9526,6 @@ tya
 sec
 sbc #{c1}
 tay
-//FRAGMENT vbsaa_lt_0_then_la1
-cmp #0
-bmi {la1}
-//FRAGMENT vbsaa=vbsz1
-lda {z1}
-//FRAGMENT vbsxx=vbsz1
-ldx {z1}
 //FRAGMENT vbsz1=vbsz2_plus_vbsaa
 clc
 adc {z2}
@@ -7414,18 +9809,6 @@ tay
 tya
 asl
 tay
-//FRAGMENT vbsz1=vbsz2_minus_vbsxx
-txa
-eor #$ff
-sec
-adc {z2}
-sta {z1}
-//FRAGMENT vbsz1=vbsz2_minus_vbsyy
-tya
-eor #$ff
-sec
-adc {z2}
-sta {z1}
 //FRAGMENT vbsaa=vbsz1_minus_vbsz2
 lda {z1}
 sec
@@ -7440,23 +9823,6 @@ tya
 eor #$ff
 sec
 adc {z1}
-//FRAGMENT vbsxx=vbsz1_minus_vbsz2
-lda {z1}
-sec
-sbc {z2}
-tax
-//FRAGMENT vbsxx=vbsz1_minus_vbsxx
-txa
-eor #$ff
-sec
-adc {z1}
-tax
-//FRAGMENT vbsxx=vbsz1_minus_vbsyy
-tya
-eor #$ff
-sec
-adc {z1}
-tax
 //FRAGMENT vbsyy=vbsz1_minus_vbsz2
 lda {z1}
 sec
@@ -7474,20 +9840,6 @@ eor #$ff
 sec
 adc {z1}
 tay
-//FRAGMENT vbsz1=vbsxx_minus_vbsz2
-txa
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbsz1=vbsxx_minus_vbsxx
-lda #0
-sta {z1}
-//FRAGMENT vbsz1=vbsxx_minus_vbsyy
-txa
-sty $ff
-sec
-sbc $ff
-sta {z1}
 //FRAGMENT vbsaa=vbsxx_minus_vbsz1
 txa
 sec
@@ -7499,20 +9851,6 @@ txa
 sty $ff
 sec
 sbc $ff
-//FRAGMENT vbsxx=vbsxx_minus_vbsz1
-txa
-sec
-sbc {z1}
-tax
-//FRAGMENT vbsxx=vbsxx_minus_vbsxx
-lda #0
-tax
-//FRAGMENT vbsxx=vbsxx_minus_vbsyy
-txa
-sty $ff
-sec
-sbc $ff
-tax
 //FRAGMENT vbsyy=vbsxx_minus_vbsz1
 txa
 sec
@@ -7527,20 +9865,6 @@ sty $ff
 sec
 sbc $ff
 tay
-//FRAGMENT vbsz1=vbsyy_minus_vbsz2
-tya
-sec
-sbc {z2}
-sta {z1}
-//FRAGMENT vbsz1=vbsyy_minus_vbsxx
-tya
-stx $ff
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbsz1=vbsyy_minus_vbsyy
-lda #0
-sta {z1}
 //FRAGMENT vbsaa=vbsyy_minus_vbsz1
 tya
 sec
@@ -7552,20 +9876,6 @@ sec
 sbc $ff
 //FRAGMENT vbsaa=vbsyy_minus_vbsyy
 lda #0
-//FRAGMENT vbsxx=vbsyy_minus_vbsz1
-tya
-sec
-sbc {z1}
-tax
-//FRAGMENT vbsxx=vbsyy_minus_vbsxx
-tya
-stx $ff
-sec
-sbc $ff
-tax
-//FRAGMENT vbsxx=vbsyy_minus_vbsyy
-lda #0
-tax
 //FRAGMENT vbsyy=vbsyy_minus_vbsz1
 tya
 sec
@@ -8435,8 +10745,6 @@ tay
 sec
 sbc {c1},y
 tay
-//FRAGMENT vbsz1=vbsaa
-sta {z1}
 //FRAGMENT vbsaa=_deref_pbsc1
 lda {c1}
 //FRAGMENT vbsxx=_deref_pbsc1
@@ -8444,31 +10752,17 @@ ldx {c1}
 //FRAGMENT vbsz1=pbsc1_derefidx_vbuyy
 lda {c1},y
 sta {z1}
-//FRAGMENT vbsxx_lt_0_then_la1
-cpx #0
-bmi {la1}
-//FRAGMENT vbsyy=vbsz1
-ldy {z1}
-//FRAGMENT vbsz1=vbsyy
-sty {z1}
 //FRAGMENT vbsyy=_deref_pbsc1
 ldy {c1}
 //FRAGMENT _deref_pbsc1=vbsxx
 stx {c1}
 //FRAGMENT _deref_pbsc1=vbsyy
 sty {c1}
-//FRAGMENT vbsyy=vbsxx
-txa
-tay
 //FRAGMENT pbuz1=pbuz1_plus_1
 inc {z1}
 bne !+
 inc {z1}+1
 !:
-//FRAGMENT pbuz1_derefidx_vbuc1=vbuz2
-lda {z2}
-ldy #{c1}
-sta ({z1}),y
 //FRAGMENT vbuz1=pbuz2_derefidx_vbuc1
 ldy #{c1}
 lda ({z2}),y
@@ -8476,10 +10770,6 @@ sta {z1}
 //FRAGMENT pbuz1_derefidx_vbuc1=vbuaa
 ldy #{c1}
 sta ({z1}),y
-//FRAGMENT pbuz1_derefidx_vbuc1=vbuxx
-ldy #{c1}
-txa
-sta ({z1}),y
 //FRAGMENT pbuz1_derefidx_vbuc1=vbuyy
 tya
 ldy #{c1}
@@ -8495,6 +10785,134 @@ tax
 ldy #{c1}
 lda ({z1}),y
 tay
+//FRAGMENT vwuz1=vwuc1_plus_vbuz2
+lda {z2}
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT _deref_qbuz1=pbuz2
+ldy #0
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT qbuz1_derefidx_vbuc1=pbuz2
+ldy #{c1}
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT qwuz1_derefidx_vbuc1=pwuz2
+ldy #{c1}
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuc1
+ldy #{c1}
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_band__deref_pbuc1
+lda {c1}
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+sta {z1}
+//FRAGMENT vwuz1=vwuc1_plus_vbuaa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_plus_vbuxx
+txa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_plus_vbuyy
+tya
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuaa=vbuz1_band__deref_pbuc1
+lda {c1}
+and {z1}
+//FRAGMENT vbuxx=vbuz1_band__deref_pbuc1
+lda {c1}
+and {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_band__deref_pbuc1
+lda {c1}
+and {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_band__deref_pbuc1
+and {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_band__deref_pbuc1
+and {c1}
+//FRAGMENT vbuxx=vbuaa_band__deref_pbuc1
+ldx {c1}
+axs #0
+//FRAGMENT vbuaa=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+//FRAGMENT vbuxx=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+tax
+//FRAGMENT vbuyy=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+tay
+//FRAGMENT vbuz1=vbuxx_band__deref_pbuc1
+lda {c1}
+sax {z1}
+//FRAGMENT vbuz1=vbuyy_band__deref_pbuc1
+tya
+and {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_band__deref_pbuc1
+txa
+and {c1}
+//FRAGMENT vbuaa=vbuyy_band__deref_pbuc1
+tya
+and {c1}
+//FRAGMENT vbuxx=vbuxx_band__deref_pbuc1
+lda {c1}
+axs #0
+//FRAGMENT vbuxx=vbuyy_band__deref_pbuc1
+ldx {c1}
+tya
+axs #0
+//FRAGMENT vbuyy=vbuaa_band__deref_pbuc1
+and {c1}
+tay
+//FRAGMENT vbuyy=vbuxx_band__deref_pbuc1
+txa
+and {c1}
+tay
+//FRAGMENT vbuyy=vbuyy_band__deref_pbuc1
+tya
+and {c1}
+tay
 //FRAGMENT vwsz1_neq_vbsc1_then_la1
 NO_SYNTHESIS
 //FRAGMENT vwsz1_neq_vwuc1_then_la1
@@ -8504,10 +10922,70 @@ bne {la1}
 lda {z1}
 cmp #<{c1}
 bne {la1}
-//FRAGMENT vwuz1_neq_vbuc1_then_la1
-NO_SYNTHESIS
-//FRAGMENT vwuz1_neq_vbsc1_then_la1
-NO_SYNTHESIS
+//FRAGMENT _deref_pbuc1_lt_vbuc2_then_la1
+lda {c1}
+cmp #{c2}
+bcc {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+//FRAGMENT vwuz1=vwuz2_ror_4
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vwuz1=vwuz2_ror_8
+lda {z2}+1
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1_ge_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bcc !+
+bne {la1}
+lda {z1}
+cmp #<{c1}
+bcs {la1}
+!:
+//FRAGMENT vwuz1_ge_vbuc1_then_la1
+lda {z1}+1
+bne {la1}
+lda {z1}
+cmp #{c1}
+bcs {la1}
+!:
+//FRAGMENT pbuc1_derefidx_vbuxx=_byte_vwuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT vwuz1=vwuz1_plus_1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT vwuz1=vwuz1_rol_8
+lda {z1}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_ror_4
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
 //FRAGMENT pwsc1_derefidx_vbuz1=vwsc2
 ldy {z1}
 lda #<{c2}
@@ -8538,11 +11016,928 @@ sta {c1}+1,y
 //FRAGMENT _deref_pbuc1=_byte_vwuz1
 lda {z1}
 sta {c1}
-//FRAGMENT _deref_pbuz1_eq_vbuc1_then_la1
+//FRAGMENT vbuz1_eq__deref_pbuc1_then_la1
+lda {c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT _deref_pbuc1_eq_0_then_la1
+lda {c1}
+cmp #0
+beq {la1}
+//FRAGMENT vbuz1=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_rol_4
+lda {c1}
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor__deref_pbuc1
+lda {c1}
+ora {z2}
+sta {z1}
+//FRAGMENT vduz1=vduz2_plus_vbuz3
+lda {z3}
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz2_ror_6
+lda {z2}
+asl
+sta $ff
+lda {z2}+1
+rol
+sta {z1}
+lda #0
+rol
+sta {z1}+1
+asl $ff
+rol {z1}
+rol {z1}+1
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3)
+ldx {z3}
+ldy {c2},x
+lda {c1},y
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
+ldx {z1}
+dec {c1},x
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
+ldx {z2}
+ldy {c2},x
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
+ldy {z1}
+lda {c2},y
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuz1=_deref_pbuz2_bor_vbuc1
 lda #{c1}
 ldy #0
-cmp ({z1}),y
+ora ({z2}),y
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1
+ldy {z1}
+lda ({z2}),y
+sta {c1},y
+//FRAGMENT vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3
+lda {z2}
+ldy {z3}
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+lda {z2}
+ldy {z3}
+and {c1},y
+sta {z1}
+//FRAGMENT vduz1=vduz2_rol_2
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vwuz1=vwuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_ror_3
+lda {z2}
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuxx_eq__deref_pbuc1_then_la1
+cpx {c1}
 beq {la1}
+//FRAGMENT vbuxx=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+tay
+//FRAGMENT vbuaa=_deref_pbuc1_rol_4
+lda {c1}
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=_deref_pbuc1_rol_4
+lda {c1}
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_rol_4
+lda {c1}
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuaa=vbuz1_bor__deref_pbuc1
+lda {c1}
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor__deref_pbuc1
+lda {c1}
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor__deref_pbuc1
+lda {c1}
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_bor__deref_pbuc1
+ora {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bor__deref_pbuc1
+ora {c1}
+//FRAGMENT vbuxx=vbuaa_bor__deref_pbuc1
+ora {c1}
+tax
+//FRAGMENT vbuyy=vbuaa_bor__deref_pbuc1
+ora {c1}
+tay
+//FRAGMENT vbuz1=vbuxx_bor__deref_pbuc1
+txa
+ora {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor__deref_pbuc1
+txa
+ora {c1}
+//FRAGMENT vbuxx=vbuxx_bor__deref_pbuc1
+txa
+ora {c1}
+tax
+//FRAGMENT vbuyy=vbuxx_bor__deref_pbuc1
+txa
+ora {c1}
+tay
+//FRAGMENT vbuz1=vbuyy_bor__deref_pbuc1
+tya
+ora {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bor__deref_pbuc1
+tya
+ora {c1}
+//FRAGMENT vbuxx=vbuyy_bor__deref_pbuc1
+tya
+ora {c1}
+tax
+//FRAGMENT vbuyy=vbuyy_bor__deref_pbuc1
+tya
+ora {c1}
+tay
+//FRAGMENT vduz1=vduz2_plus_vbuxx
+txa
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vbuyy
+tya
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuaa)
+tax
+ldy {c2},x
+lda {c1},y
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuxx)
+ldy {c2},x
+lda {c1},y
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuyy)
+ldx {c2},y
+lda {c1},x
+ldy {z2}
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
+ldy {z2}
+ldx {c2},y
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuaa)
+tay
+ldx {c2},y
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuxx)
+ldy {c2},x
+ldx {c1},y
+tay
+txa
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuyy)
+ldx {c2},y
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
+ldy {z2}
+txa
+ldx {c2},y
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuaa)
+tay
+txa
+ldx {c2},y
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuxx)
+txa
+tay
+ldx {c2},y
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuyy)
+txa
+ldx {c2},y
+tay
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
+ldx {z2}
+lda {c2},x
+tax
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuaa)
+tax
+lda {c2},x
+tax
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuxx)
+lda {c2},x
+tax
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuyy)
+ldx {c2},y
+lda {c1},x
+sta ({z1}),y
+//FRAGMENT pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx
+dec {c1},x
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuxx)
+ldy {c2},x
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1
+txa
+tay
+lda {c2},x
+cmp {c1},y
+bcs {la1}
+//FRAGMENT vbuaa=_deref_pbuz1_bor_vbuc1
+lda #{c1}
+ldy #0
+ora ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1_bor_vbuc1
+lda #{c1}
+ldy #0
+ora ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1_bor_vbuc1
+lda #{c1}
+ldy #0
+ora ({z1}),y
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+sta {c1},y
+//FRAGMENT vbuz1_neq_pbuc1_derefidx_vbuaa_then_la1
+tay
+lda {c1},y
+cmp {z1}
+bne {la1}
+//FRAGMENT vbuaa_neq_pbuc1_derefidx_vbuz1_then_la1
+ldy {z1}
+cmp {c1},y
+bne {la1}
+//FRAGMENT vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+eor {c1},y
+//FRAGMENT vbuxx=vbuz1_bxor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldx {z2}
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuz1_bxor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuxx
+lda {c1},x
+eor {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuxx
+lda {c1},x
+eor {z1}
+//FRAGMENT vbuxx=vbuz1_bxor_pbuc1_derefidx_vbuxx
+lda {c1},x
+eor {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bxor_pbuc1_derefidx_vbuxx
+lda {c1},x
+eor {z1}
+tay
+//FRAGMENT vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuyy
+lda {c1},y
+eor {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuyy
+lda {c1},y
+eor {z1}
+//FRAGMENT vbuxx=vbuz1_bxor_pbuc1_derefidx_vbuyy
+lda {c1},y
+eor {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bxor_pbuc1_derefidx_vbuyy
+lda {c1},y
+eor {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_bxor_pbuc1_derefidx_vbuz2
+ldy {z2}
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuz1
+ldy {z1}
+eor {c1},y
+//FRAGMENT vbuxx=vbuaa_bxor_pbuc1_derefidx_vbuz1
+ldx {z1}
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_bxor_pbuc1_derefidx_vbuz1
+ldy {z1}
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuaa_bxor_pbuc1_derefidx_vbuxx
+eor {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuxx
+eor {c1},x
+//FRAGMENT vbuxx=vbuaa_bxor_pbuc1_derefidx_vbuxx
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_bxor_pbuc1_derefidx_vbuxx
+eor {c1},x
+tay
+//FRAGMENT vbuz1=vbuaa_bxor_pbuc1_derefidx_vbuyy
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuyy
+eor {c1},y
+//FRAGMENT vbuxx=vbuaa_bxor_pbuc1_derefidx_vbuyy
+eor {c1},y
+tax
+//FRAGMENT vbuyy=vbuaa_bxor_pbuc1_derefidx_vbuyy
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_bxor_pbuc1_derefidx_vbuz2
+ldy {z2}
+txa
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bxor_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+eor {c1},y
+//FRAGMENT vbuxx=vbuxx_bxor_pbuc1_derefidx_vbuz1
+txa
+ldx {z1}
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_bxor_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_bxor_pbuc1_derefidx_vbuxx
+txa
+eor {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bxor_pbuc1_derefidx_vbuxx
+txa
+eor {c1},x
+//FRAGMENT vbuxx=vbuxx_bxor_pbuc1_derefidx_vbuxx
+txa
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_bxor_pbuc1_derefidx_vbuxx
+txa
+eor {c1},x
+tay
+//FRAGMENT vbuz1=vbuxx_bxor_pbuc1_derefidx_vbuyy
+txa
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bxor_pbuc1_derefidx_vbuyy
+txa
+eor {c1},y
+//FRAGMENT vbuxx=vbuxx_bxor_pbuc1_derefidx_vbuyy
+txa
+eor {c1},y
+tax
+//FRAGMENT vbuyy=vbuxx_bxor_pbuc1_derefidx_vbuyy
+txa
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_bxor_pbuc1_derefidx_vbuz2
+tya
+ldy {z2}
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bxor_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+eor {c1},y
+//FRAGMENT vbuxx=vbuyy_bxor_pbuc1_derefidx_vbuz1
+ldx {z1}
+tya
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_bxor_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+eor {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_bxor_pbuc1_derefidx_vbuxx
+tya
+eor {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bxor_pbuc1_derefidx_vbuxx
+tya
+eor {c1},x
+//FRAGMENT vbuxx=vbuyy_bxor_pbuc1_derefidx_vbuxx
+tya
+eor {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_bxor_pbuc1_derefidx_vbuxx
+tya
+eor {c1},x
+tay
+//FRAGMENT vbuz1=vbuyy_bxor_pbuc1_derefidx_vbuyy
+tya
+eor {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bxor_pbuc1_derefidx_vbuyy
+tya
+eor {c1},y
+//FRAGMENT vbuxx=vbuyy_bxor_pbuc1_derefidx_vbuyy
+tya
+eor {c1},y
+tax
+//FRAGMENT vbuyy=vbuyy_bxor_pbuc1_derefidx_vbuyy
+tya
+eor {c1},y
+tay
+//FRAGMENT vbuaa=vbuz1_band_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+and {c1},y
+//FRAGMENT vbuxx=vbuz1_band_pbuc1_derefidx_vbuz2
+lda {z1}
+ldx {z2}
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuz1_band_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+and {c1},y
+tay
+//FRAGMENT vbuz1=vbuaa_band_pbuc1_derefidx_vbuz2
+ldy {z2}
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
+ldy {z1}
+and {c1},y
+//FRAGMENT vbuxx=vbuaa_band_pbuc1_derefidx_vbuz1
+ldx {z1}
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_band_pbuc1_derefidx_vbuz1
+ldy {z1}
+and {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_band_pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sax {z1}
+//FRAGMENT vbuaa=vbuxx_band_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+and {c1},y
+//FRAGMENT vbuxx=vbuxx_band_pbuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+axs #0
+//FRAGMENT vbuyy=vbuxx_band_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+and {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_band_pbuc1_derefidx_vbuz2
+tya
+ldy {z2}
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_band_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+and {c1},y
+//FRAGMENT vbuxx=vbuyy_band_pbuc1_derefidx_vbuz1
+ldx {z1}
+tya
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_band_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+and {c1},y
+tay
+//FRAGMENT vbuz1=vbuz2_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+and {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+and {z1}
+//FRAGMENT vbuxx=vbuz1_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+and {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+and {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_band_pbuc1_derefidx_vbuxx
+and {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx
+and {c1},x
+//FRAGMENT vbuxx=vbuaa_band_pbuc1_derefidx_vbuxx
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_band_pbuc1_derefidx_vbuxx
+and {c1},x
+tay
+//FRAGMENT vbuz1=vbuxx_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+sax {z1}
+//FRAGMENT vbuaa=vbuxx_band_pbuc1_derefidx_vbuxx
+txa
+and {c1},x
+//FRAGMENT vbuxx=vbuxx_band_pbuc1_derefidx_vbuxx
+lda {c1},x
+axs #0
+//FRAGMENT vbuyy=vbuxx_band_pbuc1_derefidx_vbuxx
+txa
+and {c1},x
+tay
+//FRAGMENT vbuz1=vbuyy_band_pbuc1_derefidx_vbuxx
+tya
+and {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_band_pbuc1_derefidx_vbuxx
+tya
+and {c1},x
+//FRAGMENT vbuxx=vbuyy_band_pbuc1_derefidx_vbuxx
+tya
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_band_pbuc1_derefidx_vbuxx
+tya
+and {c1},x
+tay
+//FRAGMENT vbuz1=vbuz2_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+and {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+and {z1}
+//FRAGMENT vbuxx=vbuz1_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+and {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+and {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_band_pbuc1_derefidx_vbuyy
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
+and {c1},y
+//FRAGMENT vbuxx=vbuaa_band_pbuc1_derefidx_vbuyy
+ldx {c1},y
+axs #0
+//FRAGMENT vbuz1=vbuxx_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+sax {z1}
+//FRAGMENT vbuz1=vbuyy_band_pbuc1_derefidx_vbuyy
+tya
+and {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_band_pbuc1_derefidx_vbuyy
+txa
+and {c1},y
+//FRAGMENT vbuaa=vbuyy_band_pbuc1_derefidx_vbuyy
+tya
+and {c1},y
+//FRAGMENT vbuxx=vbuxx_band_pbuc1_derefidx_vbuyy
+lda {c1},y
+axs #0
+//FRAGMENT vbuxx=vbuyy_band_pbuc1_derefidx_vbuyy
+ldx {c1},y
+tya
+axs #0
+//FRAGMENT vbuyy=vbuxx_band_pbuc1_derefidx_vbuyy
+txa
+and {c1},y
+tay
+//FRAGMENT vbuyy=vbuyy_band_pbuc1_derefidx_vbuyy
+tya
+and {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+//FRAGMENT vbuyy=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+tay
+//FRAGMENT vbuz1=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+//FRAGMENT vbuxx=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+tax
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1}
+//FRAGMENT vbuz1=vbuaa_ror_3
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_ror_3
+txa
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_ror_3
+tya
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_3
+lda {z1}
+lsr
+lsr
+lsr
+//FRAGMENT vbuaa=vbuaa_ror_3
+lsr
+lsr
+lsr
+//FRAGMENT vbuaa=vbuxx_ror_3
+txa
+lsr
+lsr
+lsr
+//FRAGMENT vbuaa=vbuyy_ror_3
+tya
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuz1_ror_3
+lda {z1}
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuxx=vbuaa_ror_3
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuxx=vbuxx_ror_3
+txa
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuxx=vbuyy_ror_3
+tya
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuz1_ror_3
+lda {z1}
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuyy=vbuaa_ror_3
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuyy=vbuxx_ror_3
+txa
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuyy=vbuyy_ror_3
+tya
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuz1=vbuz2_band_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_band_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sax {z1}
+//FRAGMENT vbuz1=vbuyy_band_pbuc1_derefidx_vbuaa
+tax
+tya
+and {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+and {z1}
+//FRAGMENT vbuaa=vbuxx_band_pbuc1_derefidx_vbuaa
+tay
+txa
+and {c1},y
+//FRAGMENT vbuaa=vbuyy_band_pbuc1_derefidx_vbuaa
+tax
+tya
+and {c1},x
+//FRAGMENT vbuxx=vbuz1_band_pbuc1_derefidx_vbuaa
+tax
+lda {c1},x
+and {z1}
+tax
+//FRAGMENT vbuxx=vbuxx_band_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+axs #0
+//FRAGMENT vbuxx=vbuyy_band_pbuc1_derefidx_vbuaa
+tax
+tya
+and {c1},x
+tax
+//FRAGMENT vbuyy=vbuz1_band_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+and {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_band_pbuc1_derefidx_vbuaa
+tay
+txa
+and {c1},y
+tay
+//FRAGMENT vbuyy=vbuyy_band_pbuc1_derefidx_vbuaa
+tax
+tya
+and {c1},x
+tay
+//FRAGMENT vbuyy=_lo_pbuz1
+ldy {z1}
+//FRAGMENT vbuz1=vbuz2_bor__lo_pbuz3
+lda {z2}
+ora {z3}
+sta {z1}
+//FRAGMENT vduz1=vduz1_plus_vbuxx
+txa
+clc
+adc {z1}
+sta {z1}
+lda {z1}+1
+adc #0
+sta {z1}+1
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz1_band_vwuc1
+lda {z1}
+and #<{c1}
+sta {z1}
+lda {z1}+1
+and #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_ror_6
+lda {z1}
+asl
+sta $ff
+lda {z1}+1
+rol
+sta {z1}
+lda #0
+rol
+sta {z1}+1
+asl $ff
+rol {z1}
+rol {z1}+1
 //FRAGMENT vbsz1=vbsz2_plus_vbsc1
 lax {z2}
 axs #-[{c1}]
@@ -8590,6 +11985,107 @@ tax
 lda {z1}
 asl
 tay
+//FRAGMENT vbsz1=vbsz2_rol_1
+lda {z2}
+asl
+sta {z1}
+//FRAGMENT vbsz1=vbsz2_minus_vbsc1
+lax {z2}
+axs #{c1}
+stx {z1}
+//FRAGMENT vbsaa=vbsz1_rol_1
+lda {z1}
+asl
+//FRAGMENT vbsxx=vbsz1_rol_1
+lda {z1}
+asl
+tax
+//FRAGMENT vbsyy=vbsz1_rol_1
+lda {z1}
+asl
+tay
+//FRAGMENT vbsz1=vbsxx_rol_1
+txa
+asl
+sta {z1}
+//FRAGMENT vbsaa=vbsxx_rol_1
+txa
+asl
+//FRAGMENT vbsxx=vbsxx_rol_1
+txa
+asl
+tax
+//FRAGMENT vbsyy=vbsxx_rol_1
+txa
+asl
+tay
+//FRAGMENT vbsz1=vbsyy_rol_1
+tya
+asl
+sta {z1}
+//FRAGMENT vbsaa=vbsyy_rol_1
+tya
+asl
+//FRAGMENT vbsxx=vbsyy_rol_1
+tya
+asl
+tax
+//FRAGMENT vbsyy=vbsyy_rol_1
+tya
+asl
+tay
+//FRAGMENT vbsz1=vbsaa_minus_vbsc1
+sec
+sbc #{c1}
+sta {z1}
+//FRAGMENT vbsz1=vbsxx_minus_vbsc1
+txa
+axs #{c1}
+stx {z1}
+//FRAGMENT vbsz1=vbsyy_minus_vbsc1
+tya
+sec
+sbc #{c1}
+sta {z1}
+//FRAGMENT vbsaa=vbsz1_minus_vbsc1
+lda {z1}
+sec
+sbc #{c1}
+//FRAGMENT vbsaa=vbsaa_minus_vbsc1
+sec
+sbc #{c1}
+//FRAGMENT vbsaa=vbsxx_minus_vbsc1
+txa
+sec
+sbc #{c1}
+//FRAGMENT vbsaa=vbsyy_minus_vbsc1
+tya
+sec
+sbc #{c1}
+//FRAGMENT vbsxx=vbsz1_minus_vbsc1
+lax {z1}
+axs #{c1}
+//FRAGMENT vbsxx=vbsaa_minus_vbsc1
+tax
+axs #{c1}
+//FRAGMENT vbsxx=vbsyy_minus_vbsc1
+tya
+tax
+axs #{c1}
+//FRAGMENT vbsyy=vbsz1_minus_vbsc1
+lda {z1}
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbsyy=vbsaa_minus_vbsc1
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbsyy=vbsxx_minus_vbsc1
+txa
+sec
+sbc #{c1}
+tay
 //FRAGMENT vbuc1_gt_vbuz1_then_la1
 lda {z1}
 cmp #{c1}
@@ -8604,14 +12100,6 @@ sta {z1}
 lda #0
 rol
 sta {z1}+1
-//FRAGMENT vwuz1=vwuz2_plus_1
-clc
-lda {z2}
-adc #1
-sta {z1}
-lda {z2}+1
-adc #0
-sta {z1}+1
 //FRAGMENT vwuz1=vbuxx_rol_1
 txa
 asl
@@ -8629,20 +12117,349 @@ sta {z1}+1
 //FRAGMENT vbuyy=pbuc1_derefidx_vbuyy
 lda {c1},y
 tay
+//FRAGMENT vbsz1=vbsc1_minus_vbsz2
+lda #{c1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbsz1=vbsc1_minus_vbsaa
+eor #$ff
+sec
+adc #{c1}
+sta {z1}
+//FRAGMENT vbsz1=vbsc1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc #{c1}
+sta {z1}
+//FRAGMENT vbsz1=vbsc1_minus_vbsyy
+tya
+eor #$ff
+sec
+adc #{c1}
+sta {z1}
+//FRAGMENT vbsaa=vbsc1_minus_vbsz1
+lda #{c1}
+sec
+sbc {z1}
+//FRAGMENT vbsaa=vbsc1_minus_vbsaa
+eor #$ff
+sec
+adc #{c1}
+//FRAGMENT vbsaa=vbsc1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc #{c1}
+//FRAGMENT vbsaa=vbsc1_minus_vbsyy
+tya
+eor #$ff
+sec
+adc #{c1}
+//FRAGMENT vbsxx=vbsc1_minus_vbsz1
+lda #{c1}
+sec
+sbc {z1}
+tax
+//FRAGMENT vbsxx=vbsc1_minus_vbsaa
+eor #$ff
+tax
+axs #-{c1}-1
+//FRAGMENT vbsxx=vbsc1_minus_vbsxx
+txa
+eor #$ff
+tax
+axs #-{c1}-1
+//FRAGMENT vbsxx=vbsc1_minus_vbsyy
+tya
+eor #$ff
+tax
+axs #-{c1}-1
+//FRAGMENT vbsyy=vbsc1_minus_vbsz1
+lda #{c1}
+sec
+sbc {z1}
+tay
+//FRAGMENT vbsyy=vbsc1_minus_vbsaa
+eor #$ff
+sec
+adc #{c1}
+tay
+//FRAGMENT vbsyy=vbsc1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc #{c1}
+tay
+//FRAGMENT vbsyy=vbsc1_minus_vbsyy
+tya
+eor #$ff
+sec
+adc #{c1}
+tay
+//FRAGMENT 0_neq_vbsaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbsyy=vbsz1_minus_vbsaa
+eor #$ff
+sec
+adc {z1}
+tay
+//FRAGMENT vbsyy=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
+tay
+//FRAGMENT vbsyy=vbsyy_minus_vbsaa
+sta $ff
+tya
+sec
+sbc $ff
+tay
+//FRAGMENT vbsyy_lt_0_then_la1
+cpy #0
+bmi {la1}
+//FRAGMENT vbsz1_neq_0_then_la1
+lda {z1}
+cmp #0
+bne {la1}
+//FRAGMENT vwsz1=vbsz2
+lda {z2}
+sta {z1}
+and #$80
+beq !+
+lda #$ff
+!:
+sta {z1}+1
+//FRAGMENT vbsaa_neq_0_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vwsz1=vbsaa
+sta {z1}
+and #$80
+beq !+
+lda #$ff
+!:
+sta {z1}+1
+//FRAGMENT vwsz1=vbsxx
+txa
+sta {z1}
+and #$80
+beq !+
+lda #$ff
+!:
+sta {z1}+1
+//FRAGMENT vwsz1=vbsyy
+tya
+sta {z1}
+and #$80
+beq !+
+lda #$ff
+!:
+sta {z1}+1
+//FRAGMENT vbsxx_neq_0_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT pwsz1=pwsc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=_hi_vdsz2
+lda {z2}+2
+sta {z1}
+lda {z2}+3
+sta {z1}+1
+//FRAGMENT pwsz1=pwsz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pwsz1=pwsc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vduz1_lt_vduc1_then_la1
+lda {z1}+3
+cmp #>{c1}>>$10
+bcc {la1}
+bne !+
+lda {z1}+2
+cmp #<{c1}>>$10
+bcc {la1}
+bne !+
+lda {z1}+1
+cmp #>{c1}
+bcc {la1}
+bne !+
+lda {z1}
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT vduz1=vduc1_minus_vduz1
+lda #<{c1}
+sec
+sbc {z1}
+sta {z1}
+lda #>{c1}
+sbc {z1}+1
+sta {z1}+1
+lda #<{c1}>>$10
+sbc {z1}+2
+sta {z1}+2
+lda #>{c1}>>$10
+sbc {z1}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_3
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vwuz1=vwuz2_minus_vwuc1
+lda {z2}
+sec
+sbc #<{c1}
+sta {z1}
+lda {z2}+1
+sbc #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=_byte_vwsz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbsz1=_sbyte_vwsz2
+lda {z2}
+sta {z1}
+//FRAGMENT vduz1=vduz2_rol_vbuz3
+ldy {z3}
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vbuaa=_byte_vwsz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vwsz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vwsz1
+lda {z1}
+tay
+//FRAGMENT vbsaa=_sbyte_vwsz1
+lda {z1}
+//FRAGMENT vbsxx=_sbyte_vwsz1
+lda {z1}
+tax
+//FRAGMENT vbsyy=_sbyte_vwsz1
+lda {z1}
+tay
+//FRAGMENT vduz1=vduz2_rol_vbuxx
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_rol_vbuyy
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz1_rol_3
+ldy #3
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+//FRAGMENT pwsz1=pwsc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_rol_vbuxx
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dex
+bne !-
+!e:
 //FRAGMENT isr_rom_sys_c64_entry
 
-//FRAGMENT pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2
-ldy {z2}
-lda ({z1}),y
-clc
-adc #1
-sta ({z1}),y
 //FRAGMENT isr_rom_sys_c64_exit
 jmp $ea31
-//FRAGMENT vwuz1_neq_0_then_la1
-lda {z1}
-ora {z1}+1
-bne {la1}
 //FRAGMENT vwsz1_neq_vwsc1_then_la1
 lda {z1}+1
 cmp #>{c1}
@@ -8650,11 +12467,6 @@ bne {la1}
 lda {z1}
 cmp #<{c1}
 bne {la1}
-//FRAGMENT _deref_pwsc1=vwsc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
 //FRAGMENT _deref_pwsc1=vwsz1
 lda {z1}
 sta {c1}
@@ -8706,19 +12518,6 @@ ldy #{c2}
 tax
 lda ({z1}),y
 sta {c1},x
-//FRAGMENT pssz1=pssc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT pssz1=pssz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
 //FRAGMENT pbuc1_derefidx_vbuaa=pbuz1_derefidx_vbuc2
 ldy #{c2}
 tax
@@ -8861,116 +12660,13 @@ lda #<{c2}
 sta {c1},y
 lda #>{c2}
 sta {c1}+1,y
-//FRAGMENT _deref_pbuc1_lt_vbuc2_then_la1
-lda {c1}
-cmp #{c2}
-bcc {la1}
 //FRAGMENT _deref_pbuc1_ge_vbuc2_then_la1
 lda {c1}
 cmp #{c2}
 bcs {la1}
-//FRAGMENT vboz1=vbuz2_lt_vbuc1
-lda {z2}
-cmp #{c1}
-lda #0
-rol
-eor #1
-sta {z1}
-//FRAGMENT vboz1=vbuaa_lt_vbuc1
-cmp #{c1}
-lda #0
-rol
-eor #1
-sta {z1}
-//FRAGMENT vboz1=vbuxx_lt_vbuc1
-cpx #{c1}
-lda #0
-rol
-eor #1
-sta {z1}
-//FRAGMENT vboz1=vbuyy_lt_vbuc1
-cpy #{c1}
-lda #0
-rol
-eor #1
-sta {z1}
-//FRAGMENT vboaa=vbuz1_lt_vbuc1
-lda {z1}
-cmp #{c1}
-lda #0
-rol
-eor #1
-//FRAGMENT vboaa=vbuaa_lt_vbuc1
-cmp #{c1}
-lda #0
-rol
-eor #1
-//FRAGMENT vboaa=vbuxx_lt_vbuc1
-cpx #{c1}
-lda #0
-rol
-eor #1
-//FRAGMENT vboaa=vbuyy_lt_vbuc1
-cpy #{c1}
-lda #0
-rol
-eor #1
-//FRAGMENT vboxx=vbuz1_lt_vbuc1
-lda {z1}
-cmp #{c1}
-lda #0
-rol
-eor #1
-tax
-//FRAGMENT vboxx=vbuaa_lt_vbuc1
-cmp #{c1}
-lda #0
-rol
-eor #1
-tax
-//FRAGMENT vboxx=vbuxx_lt_vbuc1
-cpx #{c1}
-lda #0
-rol
-eor #1
-tax
-//FRAGMENT vboxx=vbuyy_lt_vbuc1
-cpy #{c1}
-lda #0
-rol
-eor #1
-tax
-//FRAGMENT vboyy=vbuz1_lt_vbuc1
-lda {z1}
-cmp #{c1}
-lda #0
-rol
-eor #1
-tay
-//FRAGMENT vboyy=vbuaa_lt_vbuc1
-cmp #{c1}
-lda #0
-rol
-eor #1
-tay
-//FRAGMENT vboyy=vbuxx_lt_vbuc1
-cpx #{c1}
-lda #0
-rol
-eor #1
-tay
-//FRAGMENT vboyy=vbuyy_lt_vbuc1
-cpy #{c1}
-lda #0
-rol
-eor #1
-tay
 //FRAGMENT vboz1=vboxx
 txa
 sta {z1}
-//FRAGMENT vboz1=vboyy
-tya
-sta {z1}
 //FRAGMENT vboaa=vboxx
 txa
 //FRAGMENT vboxx=vboaa
@@ -8985,15 +12681,20 @@ tay
 lda {c1}
 ldy #0
 sta ({z1}),y
-//FRAGMENT vbuaa_lt_vbuxx_then_la1
-stx $ff
-cmp $ff
-bcc {la1}
-//FRAGMENT vwuz1=vwuz1_plus_1
-inc {z1}
-bne !+
-inc {z1}+1
-!:
+//FRAGMENT vbsz1=vbsz1_minus_vbsxx
+txa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vwsz1=vwsz1_minus_vwsc1
+lda {z1}
+sec
+sbc #<{c1}
+sta {z1}
+lda {z1}+1
+sbc #>{c1}
+sta {z1}+1
 //FRAGMENT vbuc1_ge_vbuz1_then_la1
 lda #{c1}
 cmp {z1}
@@ -9002,62 +12703,120 @@ bcs {la1}
 cpx #{c1}
 bcc {la1}
 beq {la1}
+//FRAGMENT vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sec
+sbc {c2},y
+sta {z1}
+//FRAGMENT pbsz1=pbsc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT _deref_pbsz1=vbsz2
+lda {z2}
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbsz1=_inc_pbsz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuz1_minus_pbsc2_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+sec
+sbc {c2},y
+//FRAGMENT vbsxx=pbsc1_derefidx_vbuz1_minus_pbsc2_derefidx_vbuz1
+ldx {z1}
+lda {c1},x
+sec
+sbc {c2},x
+tax
+//FRAGMENT vbsyy=pbsc1_derefidx_vbuz1_minus_pbsc2_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+sec
+sbc {c2},y
+tay
+//FRAGMENT vbsz1=pbsc1_derefidx_vbuaa_minus_pbsc2_derefidx_vbuaa
+tay
+lda {c1},y
+sec
+sbc {c2},y
+sta {z1}
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuaa_minus_pbsc2_derefidx_vbuaa
+tay
+lda {c1},y
+sec
+sbc {c2},y
+//FRAGMENT vbsxx=pbsc1_derefidx_vbuaa_minus_pbsc2_derefidx_vbuaa
+tax
+lda {c1},x
+sec
+sbc {c2},x
+tax
+//FRAGMENT vbsyy=pbsc1_derefidx_vbuaa_minus_pbsc2_derefidx_vbuaa
+tay
+lda {c1},y
+sec
+sbc {c2},y
+tay
+//FRAGMENT vbsz1=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
+lda {c1},x
+sec
+sbc {c2},x
+sta {z1}
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
+lda {c1},x
+sec
+sbc {c2},x
+//FRAGMENT vbsxx=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
+lda {c1},x
+sec
+sbc {c2},x
+tax
+//FRAGMENT vbsyy=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
+lda {c1},x
+sec
+sbc {c2},x
+tay
+//FRAGMENT vbsz1=pbsc1_derefidx_vbuyy_minus_pbsc2_derefidx_vbuyy
+lda {c1},y
+sec
+sbc {c2},y
+sta {z1}
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuyy_minus_pbsc2_derefidx_vbuyy
+lda {c1},y
+sec
+sbc {c2},y
+//FRAGMENT vbsxx=pbsc1_derefidx_vbuyy_minus_pbsc2_derefidx_vbuyy
+lda {c1},y
+sec
+sbc {c2},y
+tax
+//FRAGMENT vbsyy=pbsc1_derefidx_vbuyy_minus_pbsc2_derefidx_vbuyy
+lda {c1},y
+sec
+sbc {c2},y
+tay
+//FRAGMENT _deref_pbsz1=vbsaa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbsz1=vbsxx
+txa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbsz1=vbsyy
+tya
+ldy #0
+sta ({z1}),y
 //FRAGMENT vwuz1=_deref_pwuc1
 lda {c1}
 sta {z1}
 lda {c1}+1
 sta {z1}+1
-//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1
-ldy {z1}
-lda {c1},y
-cmp {z2}
-beq {la1}
-//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1
-lda {c1},x
-cmp {z1}
-beq {la1}
-//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1
-lda {c1},y
-cmp {z1}
-beq {la1}
-//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuxx_then_la1
-ldy {z1}
-lda {c1},y
-tay
-sty $ff
-cpx $ff
-beq  {la1}
-//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuxx_then_la1
-lda {c1},x
-tay
-sty $ff
-cpx $ff
-beq  {la1}
-//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuxx_then_la1
-lda {c1},y
-tay
-sty $ff
-cpx $ff
-beq  {la1}
-//FRAGMENT pbuc1_derefidx_vbuz1_eq_vbuyy_then_la1
-ldx {z1}
-lda {c1},x
-tax
-sty $ff
-cpx $ff
-beq  {la1}
-//FRAGMENT pbuc1_derefidx_vbuxx_eq_vbuyy_then_la1
-lda {c1},x
-tax
-sty $ff
-cpx $ff
-beq  {la1}
-//FRAGMENT pbuc1_derefidx_vbuyy_eq_vbuyy_then_la1
-lda {c1},y
-tax
-sty $ff
-cpx $ff
-beq  {la1}
 //FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_minus_1
 ldx {z1}
 lda {c1},x
@@ -9144,27 +12903,292 @@ adc #1
 //FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_1
 ldx {c1},y
 inx
-//FRAGMENT pbuz1=_deref_qbuc1
-lda {c1}
+//FRAGMENT vwuz1_eq_vwuz2_then_la1
+lda {z1}
+cmp {z2}
+bne !+
+lda {z1}+1
+cmp {z2}+1
+beq {la1}
+!:
+//FRAGMENT vwuz1_le_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne !+
+lda {z1}
+cmp {z2}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT vduz1=vwuz2_dword_vwuc1
+lda #<{c1}
 sta {z1}
-lda {c1}+1
+lda #>{c1}
 sta {z1}+1
+lda {z2}
+sta {z1}+2
+lda {z2}+1
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
+lda {z1}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_plus_pbuc1_derefidx_vbuz3
+lda {z2}
+ldy {z3}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=vbuz1_plus_pbuc1_derefidx_vbuz2
+lda {z1}
+ldx {z2}
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuyy=vbuz1_plus_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_plus_pbuc1_derefidx_vbuz2
+ldy {z2}
+txa
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+clc
+adc {c1},y
+//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuz1
+txa
+ldx {z1}
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_plus_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_plus_pbuc1_derefidx_vbuz2
+tya
+ldy {z2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=vbuyy_plus_pbuc1_derefidx_vbuz1
+ldx {z1}
+tya
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuz1=vbuz2_plus_pbuc1_derefidx_vbuxx
+lda {c1},x
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_pbuc1_derefidx_vbuxx
+lda {c1},x
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_pbuc1_derefidx_vbuxx
+lda {c1},x
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_pbuc1_derefidx_vbuxx
+lda {c1},x
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_plus_pbuc1_derefidx_vbuxx
+txa
+clc
+adc {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_pbuc1_derefidx_vbuxx
+txa
+clc
+adc {c1},x
+//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuxx
+txa
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_plus_pbuc1_derefidx_vbuxx
+txa
+clc
+adc {c1},x
+tay
+//FRAGMENT vbuz1=vbuyy_plus_pbuc1_derefidx_vbuxx
+tya
+clc
+adc {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_pbuc1_derefidx_vbuxx
+tya
+clc
+adc {c1},x
+//FRAGMENT vbuxx=vbuyy_plus_pbuc1_derefidx_vbuxx
+tya
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuz1=vbuz2_plus_pbuc1_derefidx_vbuyy
+lda {c1},y
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_pbuc1_derefidx_vbuyy
+lda {c1},y
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_pbuc1_derefidx_vbuyy
+lda {c1},y
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_pbuc1_derefidx_vbuyy
+lda {c1},y
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_plus_pbuc1_derefidx_vbuyy
+txa
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus_pbuc1_derefidx_vbuyy
+txa
+clc
+adc {c1},y
+//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuyy
+txa
+clc
+adc {c1},y
+tax
+//FRAGMENT vbuyy=vbuxx_plus_pbuc1_derefidx_vbuyy
+txa
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_plus_pbuc1_derefidx_vbuyy
+tya
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_pbuc1_derefidx_vbuyy
+tya
+clc
+adc {c1},y
+//FRAGMENT vbuxx=vbuyy_plus_pbuc1_derefidx_vbuyy
+tya
+clc
+adc {c1},y
+tax
+//FRAGMENT vduz1_lt_vwuc1_then_la1
+NO_SYNTHESIS
+//FRAGMENT vduz1_lt_vwsc1_then_la1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz2_rol_4
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vduz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+lda {z2}+2
+adc {z3}+2
+sta {z1}+2
+lda {z2}+3
+adc {z3}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_1
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_plus_vwuc1
+lda {z1}
+clc
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_rol_2
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
 //FRAGMENT vbsz1_gt_0_then_la1
 lda {z1}
 cmp #0
 beq !+
 bpl {la1}
 !:
-//FRAGMENT vbsz1=_neg_vbsz2
-lda {z2}
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbsz1_neq_0_then_la1
-lda {z1}
-cmp #0
-bne {la1}
 //FRAGMENT vbuz1=vbuc1_minus_vbuz1
 lda #{c1}
 sec
@@ -9188,11 +13212,6 @@ dey
 bne !l-
 !e:
 sta {z1}
-//FRAGMENT vbsz1=vbsz1_minus_vbsz2
-lda {z1}
-sec
-sbc {z2}
-sta {z1}
 //FRAGMENT vbsz1=vbsz1_plus_vbsz2
 lda {z1}
 clc
@@ -9212,76 +13231,6 @@ cmp #0
 beq !+
 bpl {la1}
 !:
-//FRAGMENT vbsz1=_neg_vbsaa
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbsz1=_neg_vbsxx
-txa
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbsz1=_neg_vbsyy
-tya
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbsaa=_neg_vbsz1
-lda {z1}
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbsaa=_neg_vbsaa
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbsaa=_neg_vbsxx
-txa
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbsaa=_neg_vbsyy
-tya
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbsxx=_neg_vbsz1
-lda {z1}
-eor #$ff
-clc
-adc #$01
-tax
-//FRAGMENT vbsxx=_neg_vbsaa
-eor #$ff
-clc
-adc #$01
-tax
-//FRAGMENT vbsxx=_neg_vbsyy
-tya
-eor #$ff
-clc
-adc #$01
-tax
-//FRAGMENT vbsyy=_neg_vbsz1
-lda {z1}
-eor #$ff
-clc
-adc #$01
-tay
-//FRAGMENT vbsyy=_neg_vbsaa
-eor #$ff
-clc
-adc #$01
-tay
-//FRAGMENT vbsyy=_neg_vbsxx
-txa
-eor #$ff
-clc
-adc #$01
-tay
 //FRAGMENT vbsxx_gt_0_then_la1
 txa
 cmp #0
@@ -9294,18 +13243,6 @@ cmp #0
 beq !+
 bpl {la1}
 !:
-//FRAGMENT vbsxx_neq_0_then_la1
-cpx #0
-bne {la1}
-//FRAGMENT vbuaa=_neg_vbuaa
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbuxx=_neg_vbuxx
-dex
-txa
-eor #$ff
-tax
 //FRAGMENT vbuyy=_neg_vbuyy
 dey
 tya
@@ -10003,12 +13940,6 @@ dey
 bne !l-
 !e:
 tay
-//FRAGMENT vbsz1=vbsz1_minus_vbsxx
-txa
-eor #$ff
-sec
-adc {z1}
-sta {z1}
 //FRAGMENT vbsz1=vbsz1_minus_vbsyy
 tya
 eor #$ff
@@ -10069,22 +14000,6 @@ tay
 sec
 sbc {c1},y
 tay
-//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuz1
-txa
-ldx {z1}
-clc
-adc {c1},x
-tax
-//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuxx
-txa
-clc
-adc {c1},x
-tax
-//FRAGMENT vbuxx=vbuxx_plus_pbuc1_derefidx_vbuyy
-txa
-clc
-adc {c1},y
-tax
 //FRAGMENT vbsyy_neq_0_then_la1
 cpy #0
 bne {la1}
@@ -10097,23 +14012,6 @@ lda {z1}+2
 sta {c1}+2
 lda {z1}+3
 sta {c1}+3
-//FRAGMENT vduz1_lt_vduc1_then_la1
-lda {z1}+3
-cmp #>{c1}>>$10
-bcc {la1}
-bne !+
-lda {z1}+2
-cmp #<{c1}>>$10
-bcc {la1}
-bne !+
-lda {z1}+1
-cmp #>{c1}
-bcc {la1}
-bne !+
-lda {z1}
-cmp #<{c1}
-bcc {la1}
-!:
 //FRAGMENT vduz1=_dec_vduz2
 lda {z2}
 sec
@@ -10128,29 +14026,6 @@ sta {z1}+2
 lda {z2}+3
 sbc #0
 sta {z1}+3
-//FRAGMENT vduz1=_inc_vduz1
-inc {z1}
-bne !+
-inc {z1}+1
-bne !+
-inc {z1}+2
-bne !+
-inc {z1}+3
-!:
-//FRAGMENT vduz1=vduz1_plus_vduz2
-lda {z1}
-clc
-adc {z2}
-sta {z1}
-lda {z1}+1
-adc {z2}+1
-sta {z1}+1
-lda {z1}+2
-adc {z2}+2
-sta {z1}+2
-lda {z1}+3
-adc {z2}+3
-sta {z1}+3
 //FRAGMENT vduz1=vduz1_plus_vbuc1
 lda {z1}
 clc
@@ -10221,22 +14096,8 @@ sta {z1}+1
 //FRAGMENT pbuc1_derefidx_vbuaa=_inc_pbuc1_derefidx_vbuaa
 tax
 inc {c1},x
-//FRAGMENT vbuz1=vbuz1_bor_vbuc1
-lda #{c1}
-ora {z1}
-sta {z1}
-//FRAGMENT vbuz1=vbuz1_rol_1
-asl {z1}
 //FRAGMENT vbuaa=vbuaa_bor_vbuc1
 ora #{c1}
-//FRAGMENT vbuxx=vbuxx_bor_vbuc1
-txa
-ora #{c1}
-tax
-//FRAGMENT vbuyy=vbuyy_bor_vbuc1
-tya
-ora #{c1}
-tay
 //FRAGMENT vbuz1=_deref_pbuz2_rol_1
 ldy #0
 lda ({z2}),y
@@ -10293,10 +14154,168 @@ sta {c1},x
 ldx {c3},y
 lda {c2},x
 sta {c1},y
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+sta {z1}
+//FRAGMENT _deref_pbuc1_lt_vbuz1_then_la1
+lda {c1}
+cmp {z1}
+bcc {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
+ldx {z2}
+ldy {c2},x
+ldx {c1},y
+stx {z1}
+//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1}+1,y
+sta {z1}
 //FRAGMENT vbuz1=vbuc1_bxor_vbuz2
 lda #{c1}
 eor {z2}
 sta {z1}
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+tay
+//FRAGMENT _deref_pbuc1_lt_vbuaa_then_la1
+ldy {c1}
+sta $ff
+cpy $ff
+bcc {la1}
+//FRAGMENT vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
+ldx {z1}
+ldy {c2},x
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
+ldx {z1}
+ldy {c2},x
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
+ldy {z1}
+ldx {c2},y
+ldy {c1},x
+//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuz1
+ldx {z1}
+lda {c1},x
+tax
+//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+tay
+//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuaa
+tax
+lda {c1},x
+tax
+//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+tay
+//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuxx
+lda {c1},x
+//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuxx
+lda {c1},x
+tax
+//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuxx
+lda {c1},x
+tay
+//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuyy
+lda {c1},y
+//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuyy
+lda {c1},y
+tax
+//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuyy
+lda {c1},y
+tay
+//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuxx
+lda {c1}+1,x
+sta {z1}
+//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1}+1,y
+//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuxx
+lda {c1}+1,x
+//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuz1
+ldx {z1}
+lda {c1}+1,x
+tax
+//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuxx
+lda {c1}+1,x
+tax
+//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1}+1,y
+tay
+//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuxx
+lda {c1}+1,x
+tay
+//FRAGMENT vbuaa=vbuc1_bxor_vbuz1
+lda #{c1}
+eor {z1}
+//FRAGMENT vbuxx=vbuc1_bxor_vbuz1
+lda #{c1}
+eor {z1}
+tax
+//FRAGMENT vbuyy=vbuc1_bxor_vbuz1
+lda #{c1}
+eor {z1}
+tay
+//FRAGMENT _deref_pbuc1_lt_vbuxx_then_la1
+lda {c1}
+stx $ff
+cmp $ff
+bcc {la1}
+//FRAGMENT _deref_pbuc1_lt_vbuyy_then_la1
+ldx {c1}
+sty $ff
+cpx $ff
+bcc {la1}
+//FRAGMENT pwsz1_lt_pwsc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bcc {la1}
+bne !+
+lda {z1}
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT vbsaa=vbsz1_minus_vbsaa
+eor #$ff
+sec
+adc {z1}
+//FRAGMENT vbsaa=vbsxx_minus_vbsaa
+sta $ff
+txa
+sec
+sbc $ff
 //FRAGMENT vbuz1=_deref_pbuc1_bxor_vbuc2
 lda #{c2}
 eor {c1}
@@ -10312,9 +14331,6 @@ sta {z1}
 tya
 eor #{c1}
 sta {z1}
-//FRAGMENT vbuaa=vbuc1_bxor_vbuz1
-lda #{c1}
-eor {z1}
 //FRAGMENT vbuaa=vbuc1_bxor_vbuaa
 eor #{c1}
 //FRAGMENT vbuaa=vbuc1_bxor_vbuxx
@@ -10323,10 +14339,6 @@ eor #{c1}
 //FRAGMENT vbuaa=vbuc1_bxor_vbuyy
 tya
 eor #{c1}
-//FRAGMENT vbuxx=vbuc1_bxor_vbuz1
-lda #{c1}
-eor {z1}
-tax
 //FRAGMENT vbuxx=vbuc1_bxor_vbuaa
 eor #{c1}
 tax
@@ -10338,10 +14350,6 @@ tax
 tya
 eor #{c1}
 tax
-//FRAGMENT vbuyy=vbuc1_bxor_vbuz1
-lda #{c1}
-eor {z1}
-tay
 //FRAGMENT vbuyy=vbuc1_bxor_vbuaa
 eor #{c1}
 tay
@@ -10364,18 +14372,6 @@ tax
 lda #{c2}
 eor {c1}
 tay
-//FRAGMENT 0_eq_vbuaa_then_la1
-cmp #0
-beq {la1}
-//FRAGMENT vbuz1=vbuz1_plus_vbuaa
-clc
-adc {z1}
-sta {z1}
-//FRAGMENT vbuz1=vbuz1_plus_vbuyy
-tya
-clc
-adc {z1}
-sta {z1}
 //FRAGMENT vduz1_neq_vduc1_then_la1
 lda {z1}+3
 cmp #>{c1}>>$10
@@ -10439,6 +14435,15 @@ lda {c1}
 sta $ff
 cpy $ff
 bcs {la1}
+//FRAGMENT vduz1=_deref_pduc1
+lda {c1}
+sta {z1}
+lda {c1}+1
+sta {z1}+1
+lda {c1}+2
+sta {z1}+2
+lda {c1}+3
+sta {z1}+3
 //FRAGMENT vwuz1=pbuc1_derefidx_vbuz2_word_vbuz3
 ldy {z2}
 lda {c1},y
@@ -10531,6 +14536,9 @@ ldy {c1}+1
 sty $ff
 ldy #0
 sta ($fe),y
+//FRAGMENT vbuyy=vbuaa_band_pbuc1_derefidx_vbuyy
+and {c1},y
+tay
 //FRAGMENT _deref_pbuc1_eq__deref_pbuc2_then_la1
 lda {c1}
 cmp {c2}
@@ -10632,85 +14640,14 @@ lda {c1}
 sec
 sbc #{c2}
 tay
-//FRAGMENT vbuaa_neq_vbuz1_then_la1
-cmp {z1}
-bne {la1}
-//FRAGMENT vbuz1=vbuaa_minus_vbuaa
-lda #0
-sta {z1}
-//FRAGMENT vbuxx=vbuaa_minus_vbuaa
-lda #0
-tax
-//FRAGMENT vbuyy=vbuaa_minus_vbuaa
-lda #0
-tay
-//FRAGMENT vbuz1=vbuyy_minus_vbuaa
-sta $ff
-tya
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_minus_vbuaa
-sta $ff
-tya
-sec
-sbc $ff
-//FRAGMENT vbuxx=vbuyy_minus_vbuaa
-sta $ff
-tya
-sec
-sbc $ff
-tax
-//FRAGMENT vbuz1=vbuaa_minus_vbuyy
-sty $ff
-sec
-sbc $ff
-sta {z1}
-//FRAGMENT vbuxx=vbuaa_minus_vbuyy
-sty $ff
-sec
-sbc $ff
-tax
-//FRAGMENT vbuyy=vbuaa_minus_vbuyy
-sty $ff
-sec
-sbc $ff
-tay
-//FRAGMENT vbuz1=vbuyy_minus_vbuyy
-lda #0
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_minus_vbuyy
-lda #0
-//FRAGMENT vbuxx=vbuyy_minus_vbuyy
-lda #0
-tax
-//FRAGMENT vbuaa_ge_vbuz1_then_la1
-cmp {z1}
-bcs {la1}
-//FRAGMENT vbuyy_ge_vbuz1_then_la1
-cpy {z1}
-bcs {la1}
 //FRAGMENT vbuaa_ge_vbuxx_then_la1
 stx $ff
 cmp $ff
 bcs {la1}
-//FRAGMENT vbuyy_ge_vbuxx_then_la1
-stx $ff
-cpy $ff
-bcs {la1}
-//FRAGMENT vbuz1_ge_vbuyy_then_la1
-lda {z1}
-sty $ff
-cmp $ff
-bcs {la1}
 //FRAGMENT vbuaa_ge_vbuyy_then_la1
 sty $ff
 cmp $ff
 bcs {la1}
-//FRAGMENT vbuxx_ge_vbuyy_then_la1
-sty $ff
-cpx $ff
-bcs  {la1}
 //FRAGMENT vbuxx=_deref_pbuc1_plus_1
 ldx {c1}
 inx
@@ -10734,43 +14671,6 @@ bne {la1}
 //FRAGMENT vbsxx_neq_vbsz1_then_la1
 cpx {z1}
 bne {la1}
-//FRAGMENT vwuz1=vwuz2_rol_8
-lda {z2}
-sta {z1}+1
-lda #0
-sta {z1}
-//FRAGMENT vwuz1=vwuz2_rol_1
-lda {z2}
-asl
-sta {z1}
-lda {z2}+1
-rol
-sta {z1}+1
-//FRAGMENT pwuz1=pwuc1_plus_vwuz2
-clc
-lda {z2}
-adc #<{c1}
-sta {z1}
-lda {z2}+1
-adc #>{c1}
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz1_rol_8
-lda {z1}
-sta {z1}+1
-lda #0
-sta {z1}
-//FRAGMENT pwuz1=pwuc1_plus_vwuz1
-clc
-lda {z1}
-adc #<{c1}
-sta {z1}
-lda {z1}+1
-adc #>{c1}
-sta {z1}+1
-//FRAGMENT vbuz1=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-sta {z1}
 //FRAGMENT _deref_pbuz1=vbum2
 lda {m2}
 ldy #0
@@ -10823,10 +14723,6 @@ sta {z1}+1
 lda {z3}
 ldy {z2}
 sta ({z1}),y
-//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
-ldy {z3}
-lda ({z2}),y
-sta {z1}
 //FRAGMENT vwuz1=vwuc1_plus_pbuc2_derefidx_vbuaa
 tay
 lda {c2},y
@@ -10852,8 +14748,6 @@ sta {z1}
 lda #>{c1}
 adc #0
 sta {z1}+1
-//FRAGMENT vbuz1=vbuaa_bor_vbuaa
-sta {z1}
 //FRAGMENT pbuz1_derefidx_vbuxx=_byte_vwuz2
 txa
 tay
@@ -10862,53 +14756,6 @@ sta ({z1}),y
 //FRAGMENT pbuz1_derefidx_vbuyy=_byte_vwuz2
 lda {z2}
 sta ({z1}),y
-//FRAGMENT vbuxx=pbuz1_derefidx_vbuz2
-ldy {z2}
-lda ({z1}),y
-tax
-//FRAGMENT vbuyy=pbuz1_derefidx_vbuz2
-ldy {z2}
-lda ({z1}),y
-tay
-//FRAGMENT vbuz1=pbuz2_derefidx_vbuaa
-tay
-lda ({z2}),y
-sta {z1}
-//FRAGMENT vbuaa=pbuz1_derefidx_vbuaa
-tay
-lda ({z1}),y
-//FRAGMENT vbuxx=pbuz1_derefidx_vbuaa
-tay
-lda ({z1}),y
-tax
-//FRAGMENT vbuyy=pbuz1_derefidx_vbuaa
-tay
-lda ({z1}),y
-tay
-//FRAGMENT vbuz1=pbuz2_derefidx_vbuxx
-txa
-tay
-lda ({z2}),y
-sta {z1}
-//FRAGMENT vbuxx=pbuz1_derefidx_vbuxx
-txa
-tay
-lda ({z1}),y
-tax
-//FRAGMENT vbuyy=pbuz1_derefidx_vbuxx
-txa
-tay
-lda ({z1}),y
-tay
-//FRAGMENT vbuz1=pbuz2_derefidx_vbuyy
-lda ({z2}),y
-sta {z1}
-//FRAGMENT vbuxx=pbuz1_derefidx_vbuyy
-lda ({z1}),y
-tax
-//FRAGMENT vbuyy=pbuz1_derefidx_vbuyy
-lda ({z1}),y
-tay
 //FRAGMENT vbuz1=vbuz2_bor__hi_vwuz3
 lda {z2}
 ora {z3}+1
@@ -10925,41 +14772,98 @@ lda {z1}
 cmp #<{c1}
 bcs {la1}
 !:
-//FRAGMENT vbuz1=_neg_vbuz2
-lda {z2}
-eor #$ff
-clc
-adc #$01
+//FRAGMENT vbuz1=_deref_pbuc1_ror_1
+lda {c1}
+lsr
 sta {z1}
-//FRAGMENT vbuz1=_neg_vbuxx
-dex
-txa
-eor #$ff
-sta {z1}
-//FRAGMENT vbuaa=_neg_vbuz1
-lda {z1}
-eor #$ff
-clc
-adc #$01
-//FRAGMENT vbuaa=_neg_vbuxx
-dex
-txa
-eor #$ff
-//FRAGMENT vbuxx=_neg_vbuz1
-lda {z1}
-eor #$ff
+//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1
+ldy {z2}
+lda {c1}+1,y
+cmp {z1}+1
+bne !+
+lda {c1},y
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_qbuc1=_inc__deref_qbuc1
+inc {c1}
+bne !+
+inc {c1}+1
+!:
+//FRAGMENT vbuaa=_deref_pbuc1_ror_1
+lda {c1}
+lsr
+//FRAGMENT vbuxx=_deref_pbuc1_ror_1
+lda {c1}
+lsr
 tax
-inx
-//FRAGMENT vbuyy=_neg_vbuz1
-lda {z1}
-eor #$ff
+//FRAGMENT vbuyy=_deref_pbuc1_ror_1
+lda {c1}
+lsr
 tay
-iny
-//FRAGMENT vbuyy=_neg_vbuxx
-txa
-eor #$ff
+//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1
 tay
-iny
+lda {c1}+1,y
+cmp {z1}+1
+bne !+
+lda {c1},y
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuxx_then_la1
+lda {c1}+1,x
+cmp {z1}+1
+bne !+
+lda {c1},x
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuyy_then_la1
+lda {c1}+1,y
+cmp {z1}+1
+bne !+
+lda {c1},y
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
 //FRAGMENT _deref_pwuz1=vbuz2
 lda {z2}
 ldy #0
@@ -10987,21 +14891,6 @@ sta ({z1}),y
 tya
 iny
 sta ({z1}),y
-//FRAGMENT vbsz1=vbsz2_rol_1
-lda {z2}
-asl
-sta {z1}
-//FRAGMENT vbsaa=vbsz1_rol_1
-lda {z1}
-asl
-//FRAGMENT vbsxx=vbsz1_rol_1
-lda {z1}
-asl
-tax
-//FRAGMENT vbsyy=vbsz1_rol_1
-lda {z1}
-asl
-tay
 //FRAGMENT vbsz1=vbsaa_rol_1
 asl
 sta {z1}
@@ -11013,56 +14902,6 @@ tax
 //FRAGMENT vbsyy=vbsaa_rol_1
 asl
 tay
-//FRAGMENT vbsz1=vbsxx_rol_1
-txa
-asl
-sta {z1}
-//FRAGMENT vbsaa=vbsxx_rol_1
-txa
-asl
-//FRAGMENT vbsxx=vbsxx_rol_1
-txa
-asl
-tax
-//FRAGMENT vbsyy=vbsxx_rol_1
-txa
-asl
-tay
-//FRAGMENT vbsz1=vbsyy_rol_1
-tya
-asl
-sta {z1}
-//FRAGMENT vbsaa=vbsyy_rol_1
-tya
-asl
-//FRAGMENT vbsxx=vbsyy_rol_1
-tya
-asl
-tax
-//FRAGMENT vbsyy=vbsyy_rol_1
-tya
-asl
-tay
-//FRAGMENT pbuz1=pbuz2_plus_vwuz1
-lda {z1}
-clc
-adc {z2}
-sta {z1}
-lda {z1}+1
-adc {z2}+1
-sta {z1}+1
-//FRAGMENT vwuz1=_deref_pwuz2
-ldy #0
-lda ({z2}),y
-sta {z1}
-iny
-lda ({z2}),y
-sta {z1}+1
-//FRAGMENT pwsz1=pwsc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
 //FRAGMENT pwsz1=pwsc1_plus_vbuz2
 lda {z2}
 clc
@@ -11126,84 +14965,6 @@ sta {c1},x
 iny
 lda ({z1}),y
 sta {c1}+1,x
-//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuz2
-ldy {z2}
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuz2
-ldy {z2}
-lda {c1}+1,y
-sta {z1}
-//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuz1
-ldy {z1}
-lda {c1},y
-//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuz1
-ldx {z1}
-lda {c1},x
-tax
-//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuz1
-ldy {z1}
-lda {c1},y
-tay
-//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuaa
-tay
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuaa
-tay
-lda {c1},y
-//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuaa
-tax
-lda {c1},x
-tax
-//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuaa
-tay
-lda {c1},y
-tay
-//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuxx
-lda {c1},x
-sta {z1}
-//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuxx
-lda {c1},x
-//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuxx
-lda {c1},x
-tax
-//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuxx
-lda {c1},x
-tay
-//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuyy
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuyy
-lda {c1},y
-//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuyy
-lda {c1},y
-tax
-//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuyy
-lda {c1},y
-tay
-//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuz1
-ldy {z1}
-lda {c1}+1,y
-//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuz1
-ldx {z1}
-lda {c1}+1,x
-tax
-//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuz1
-ldy {z1}
-lda {c1}+1,y
-tay
-//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuxx
-lda {c1}+1,x
-sta {z1}
-//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuxx
-lda {c1}+1,x
-//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuxx
-lda {c1}+1,x
-tax
-//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuxx
-lda {c1}+1,x
-tay
 //FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuyy
 lda {c1}+1,y
 sta {z1}
@@ -11289,17 +15050,6 @@ tax
 //FRAGMENT vbuyy=_hi_pwsc1_derefidx_vbuyy
 lda {c1}+1,y
 tay
-//FRAGMENT vbsaa=vbsxx
-txa
-//FRAGMENT vbsaa=vbsyy
-tya
-//FRAGMENT vbsxx=vbsaa
-tax
-//FRAGMENT vbsxx=vbsyy
-tya
-tax
-//FRAGMENT vbsyy=vbsaa
-tay
 //FRAGMENT vwuz1=vbuz2_band_vbuc1
 lda {z2}
 and #{c1}
@@ -11372,14 +15122,6 @@ lda #{c2}
 clc
 adc {c1}
 sta {c1}
-//FRAGMENT pssz1=pssz2_plus_vbuc1
-lda #{c1}
-clc
-adc {z2}
-sta {z1}
-lda #0
-adc {z2}+1
-sta {z1}+1
 //FRAGMENT pssz1_lt_pssc1_then_la1
 lda {z1}+1
 cmp #>{c1}
@@ -11458,11 +15200,6 @@ bne {la1}
 lda {z1}
 cmp #<{c1}
 bne {la1}
-//FRAGMENT pssz1=pssz2
-lda {z2}
-sta {z1}
-lda {z2}+1
-sta {z1}+1
 //FRAGMENT vwuz1=(_deref_qwuc1)_derefidx_vbuc2
 ldy #{c2}
 lda {c1}
@@ -11481,14 +15218,14 @@ tay
 lda {c2},y
 ldy {z1}
 sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_(_deref_pbuz1)
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_(_deref_pbuz1)
+tax
 ldy #0
 lda ({z1}),y
 tay
 lda {c2},y
 sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_(_deref_pbuz1)
-tax
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_(_deref_pbuz1)
 ldy #0
 lda ({z1}),y
 tay
@@ -11502,11 +15239,6 @@ lda ({z1}),y
 tay
 lda {c2},y
 sta {c1},x
-//FRAGMENT _deref_pwuc1=vbuc2
-lda #0
-sta {c1}+1
-lda #<{c2}
-sta {c1}
 //FRAGMENT vboz1=vboc1
 lda #{c1}
 sta {z1}
@@ -11518,36 +15250,390 @@ tax
 //FRAGMENT vboyy=vboc1
 lda #{c1}
 tay
+//FRAGMENT vbuxx_neq_vbuaa_then_la1
+tay
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbuyy_neq_vbuaa_then_la1
+tax
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vwuz1=_deref_pbuz2_word__deref_pbuz3
+ldy #0
+lda ({z3}),y
+sta {z1}
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_minus_2
+lda {z2}
+sec
+sbc #2
+sta {z1}
+//FRAGMENT vbuxx=vbuz1_minus_2
+ldx {z1}
+dex
+dex
+//FRAGMENT vbuz1=_deref_pbuc1_plus_2
+lda {c1}
+clc
+adc #2
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuc1_plus_2
+lda {c1}
+clc
+adc #2
+//FRAGMENT vbuxx=_deref_pbuc1_plus_2
+ldx {c1}
+inx
+inx
+//FRAGMENT vbuyy=_deref_pbuc1_plus_2
+ldy {c1}
+iny
+iny
 //FRAGMENT 0_neq_vwuz1_then_la1
 lda {z1}
 ora {z1}+1
 bne {la1}
-//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {z1}
-//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-tax
-//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-tay
 //FRAGMENT _deref_pbuz1=_byte_vwsz2
 lda {z2}
 ldy #0
 sta ({z1}),y
-//FRAGMENT vwuz1_lt_vbuc1_then_la1
+//FRAGMENT vwuz1=vwuz2_rol_6
+lda {z2}+1
+lsr
+sta $ff
+lda {z2}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+lsr $ff
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vwuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda #0
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vwsz1_lt_vwuz2_then_la1
 lda {z1}+1
+bmi {la1}
+cmp {z2}+1
+bcc {la1}
 bne !+
 lda {z1}
-cmp #{c1}
+cmp {z2}
 bcc {la1}
 !:
+//FRAGMENT vduz1=pduz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+iny
+lda ({z2}),y
+sta {z1}+2
+iny
+lda ({z2}),y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_pduc1_derefidx_vbuz3
+ldy {z3}
+lda {z2}
+clc
+adc {c1},y
+sta {z1}
+lda {z2}+1
+adc {c1}+1,y
+sta {z1}+1
+lda {z2}+2
+adc {c1}+2,y
+sta {z1}+2
+lda {z2}+3
+adc {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_pduz3_derefidx_vbuz4
+ldy {z4}
+lda {z2}
+clc
+adc ({z3}),y
+sta {z1}
+iny
+lda {z2}+1
+adc ({z3}),y
+sta {z1}+1
+iny
+lda {z2}+2
+adc ({z3}),y
+sta {z1}+2
+iny
+lda {z2}+3
+adc ({z3}),y
+sta {z1}+3
+//FRAGMENT vduz1=_bnot_vduz2
+lda {z2}
+eor #$ff
+sta {z1}
+lda {z2}+1
+eor #$ff
+sta {z1}+1
+lda {z2}+2
+eor #$ff
+sta {z1}+2
+lda {z2}+3
+eor #$ff
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_bor_vduz3
+lda {z2}
+ora {z3}
+sta {z1}
+lda {z2}+1
+ora {z3}+1
+sta {z1}+1
+lda {z2}+2
+ora {z3}+2
+sta {z1}+2
+lda {z2}+3
+ora {z3}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_bxor_vduz3
+lda {z2}
+eor {z3}
+sta {z1}
+lda {z2}+1
+eor {z3}+1
+sta {z1}+1
+lda {z2}+2
+eor {z3}+2
+sta {z1}+2
+lda {z2}+3
+eor {z3}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_band_vduz3
+lda {z2}
+and {z3}
+sta {z1}
+lda {z2}+1
+and {z3}+1
+sta {z1}+1
+lda {z2}+2
+and {z3}+2
+sta {z1}+2
+lda {z2}+3
+and {z3}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_minus_vwuz2
+sec
+lda #<{c1}
+sbc {z2}
+sta {z1}
+lda #>{c1}
+sbc {z2}+1
+sta {z1}+1 
+//FRAGMENT vduz1=pduz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+iny
+lda ({z2}),y
+sta {z1}+2
+iny
+lda ({z2}),y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_pduc1_derefidx_vbuxx
+lda {z2}
+clc
+adc {c1},x
+sta {z1}
+lda {z2}+1
+adc {c1}+1,x
+sta {z1}+1
+lda {z2}+2
+adc {c1}+2,x
+sta {z1}+2
+lda {z2}+3
+adc {c1}+3,x
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_pduz3_derefidx_vbuxx
+txa
+tay
+lda {z2}
+clc
+adc ({z3}),y
+sta {z1}
+iny
+lda {z2}+1
+adc ({z3}),y
+sta {z1}+1
+iny
+lda {z2}+2
+adc ({z3}),y
+sta {z1}+2
+iny
+lda {z2}+3
+adc ({z3}),y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_bxor_vduz1
+lda {z1}
+eor {z2}
+sta {z1}
+lda {z1}+1
+eor {z2}+1
+sta {z1}+1
+lda {z1}+2
+eor {z2}+2
+sta {z1}+2
+lda {z1}+3
+eor {z2}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_bxor_vduz2
+lda {z1}
+eor {z2}
+sta {z1}
+lda {z1}+1
+eor {z2}+1
+sta {z1}+1
+lda {z1}+2
+eor {z2}+2
+sta {z1}+2
+lda {z1}+3
+eor {z2}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_bor_vduz2
+lda {z2}
+ora {z1}
+sta {z1}
+lda {z2}+1
+ora {z1}+1
+sta {z1}+1
+lda {z2}+2
+ora {z1}+2
+sta {z1}+2
+lda {z2}+3
+ora {z1}+3
+sta {z1}+3
+//FRAGMENT vbuz1=vbuz1_rol_2
+lda {z1}
+asl
+asl
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_6
+lda {z1}+1
+lsr
+sta $ff
+lda {z1}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+lsr $ff
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz1_plus_pduz2_derefidx_vbuz3
+ldy {z3}
+lda {z1}
+clc
+adc ({z2}),y
+sta {z1}
+iny
+lda {z1}+1
+adc ({z2}),y
+sta {z1}+1
+iny
+lda {z1}+2
+adc ({z2}),y
+sta {z1}+2
+iny
+lda {z1}+3
+adc ({z2}),y
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_band_vduz2
+lda {z1}
+and {z2}
+sta {z1}
+lda {z1}+1
+and {z2}+1
+sta {z1}+1
+lda {z1}+2
+and {z2}+2
+sta {z1}+2
+lda {z1}+3
+and {z2}+3
+sta {z1}+3
+//FRAGMENT pbuz1=pbuc1_minus_vwuz1
+sec
+lda #<{c1}
+sbc {z1}
+sta {z1}
+lda #>{c1}
+sbc {z1}+1
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_plus_pduc1_derefidx_vbuz2
+ldy {z2}
+lda {z1}
+clc
+adc {c1},y
+sta {z1}
+lda {z1}+1
+adc {c1}+1,y
+sta {z1}+1
+lda {z1}+2
+adc {c1}+2,y
+sta {z1}+2
+lda {z1}+3
+adc {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_bor_vduz1
+lda {z2}
+ora {z1}
+sta {z1}
+lda {z2}+1
+ora {z1}+1
+sta {z1}+1
+lda {z2}+2
+ora {z1}+2
+sta {z1}+2
+lda {z2}+3
+ora {z1}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vduz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+lda {z1}+2
+adc {z2}+2
+sta {z1}+2
+lda {z1}+3
+adc {z2}+3
+sta {z1}+3
 //FRAGMENT vbuz1=vbuxx_band_pbuz2_derefidx_vbuc1
 ldy #{c1}
 txa
@@ -11570,93 +15656,11 @@ tay
 lda #{c2}
 cmp {c1}
 beq {la1}
-//FRAGMENT vbuz1=_neg_vbuaa
-eor #$ff
-clc
-adc #$01
-sta {z1}
-//FRAGMENT vbuxx=_neg_vbuaa
-eor #$ff
-tax
-inx
-//FRAGMENT vbuyy=_neg_vbuaa
-eor #$ff
-tay
-iny
-//FRAGMENT vbuz1=vbuz2_ror_3
-lda {z2}
-lsr
-lsr
-lsr
-sta {z1}
 //FRAGMENT vbsz1=vbsz2_ror_1
 lda {z2}
 cmp #$80
 ror
 sta {z1}
-//FRAGMENT vbuaa=vbuz1_ror_3
-lda {z1}
-lsr
-lsr
-lsr
-//FRAGMENT vbuxx=vbuz1_ror_3
-lda {z1}
-lsr
-lsr
-lsr
-tax
-//FRAGMENT vbuyy=vbuz1_ror_3
-lda {z1}
-lsr
-lsr
-lsr
-tay
-//FRAGMENT vbuz1=vbuxx_ror_3
-txa
-lsr
-lsr
-lsr
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_ror_3
-txa
-lsr
-lsr
-lsr
-//FRAGMENT vbuxx=vbuxx_ror_3
-txa
-lsr
-lsr
-lsr
-tax
-//FRAGMENT vbuyy=vbuxx_ror_3
-txa
-lsr
-lsr
-lsr
-tay
-//FRAGMENT vbuz1=vbuyy_ror_3
-tya
-lsr
-lsr
-lsr
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_ror_3
-tya
-lsr
-lsr
-lsr
-//FRAGMENT vbuxx=vbuyy_ror_3
-tya
-lsr
-lsr
-lsr
-tax
-//FRAGMENT vbuyy=vbuyy_ror_3
-tya
-lsr
-lsr
-lsr
-tay
 //FRAGMENT vbsaa=vbsz1_ror_1
 lda {z1}
 cmp #$80
@@ -11724,6 +15728,10 @@ tya
 cmp #$80
 ror
 tay
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuxx
+lda {c1},x
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuyy
+lda {c1},y
 //FRAGMENT vbuz1=_neg_vbuyy
 dey
 tya
@@ -11738,6 +15746,201 @@ tya
 eor #$ff
 tax
 inx
+//FRAGMENT vbuz1=vbuz2_band_vbuz3
+lda {z2}
+and {z3}
+sta {z1}
+//FRAGMENT vbuz1=vbuaa_band_vbuz2
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_band_vbuz2
+lda {z2}
+sax {z1}
+//FRAGMENT vbuz1=vbuyy_band_vbuz2
+tya
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_band_vbuxx
+lda {z2}
+sax {z1}
+//FRAGMENT vbuz1=vbuaa_band_vbuxx
+sax {z1}
+//FRAGMENT vbuaa=vbuz1_band_vbuz2
+lda {z1}
+and {z2}
+//FRAGMENT vbuaa=vbuaa_band_vbuz1
+and {z1}
+//FRAGMENT vbuaa=vbuxx_band_vbuz1
+txa
+and {z1}
+//FRAGMENT vbuaa=vbuyy_band_vbuz1
+tya
+and {z1}
+//FRAGMENT vbuxx=vbuz1_band_vbuz2
+lda {z1}
+and {z2}
+tax
+//FRAGMENT vbuxx=vbuaa_band_vbuz1
+ldx {z1}
+axs #0
+//FRAGMENT vbuxx=vbuxx_band_vbuz1
+lda {z1}
+axs #0
+//FRAGMENT vbuxx=vbuyy_band_vbuz1
+ldx {z1}
+tya
+axs #0
+//FRAGMENT vbuyy=vbuz1_band_vbuz2
+lda {z1}
+and {z2}
+tay
+//FRAGMENT vbuyy=vbuaa_band_vbuz1
+and {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_band_vbuz1
+txa
+and {z1}
+tay
+//FRAGMENT vbuyy=vbuyy_band_vbuz1
+tya
+and {z1}
+tay
+//FRAGMENT vdsz1=vdsz2_rol_4
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vwuz1=vbuc1_plus_vwuz2
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vbuc1_plus__hi_vdsz2
+NO_SYNTHESIS
+//FRAGMENT vwuz1=vwuc1_plus__hi_vdsz2
+clc
+lda #<{c1}
+adc {z2}+2
+sta {z1}
+lda #>{c1}
+adc {z2}+3
+sta {z1}+1
+//FRAGMENT vwuz1=vbsc1_plus__hi_vdsz2
+NO_SYNTHESIS
+//FRAGMENT vwuz1=vwuz2_minus_vwuz1
+lda {z2}
+sec
+sbc {z1}
+sta {z1}
+lda {z2}+1
+sbc {z1}+1
+sta {z1}+1
+//FRAGMENT vdsz1=vdsz1_rol_4
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vwsz1=vwsz2_ror_2
+lda {z2}+1
+cmp #$80
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lda {z1}+1
+cmp #$80
+ror {z1}+1
+ror {z1}
+//FRAGMENT vwsz1=vbsc1_plus_vwsz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz1_plus_vbuz2
+clc
+lda {z1}
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc #0
+sta {z1}+1
+//FRAGMENT vwsz1=vwsc1_plus_vwsz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vbsc1_plus_vwsz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
 //FRAGMENT pbuz1_ge_vwuc1_then_la1
 lda {z1}+1
 cmp #>{c1}
@@ -11747,11 +15950,6 @@ lda {z1}
 cmp #<{c1}
 bcs {la1}
 !:
-//FRAGMENT _deref_pbuz1_neq_vbuc1_then_la1
-ldy #0
-lda ({z1}),y
-cmp #{c1}
-bne {la1}
 //FRAGMENT pbuc1_derefidx_vbuz1=vbum2
 lda {m2}
 ldy {z1}
@@ -11781,25 +15979,11 @@ tya
 clc
 adc {m1}
 sta {m1}
-//FRAGMENT pbuc1_derefidx_vbuz1=_deref_pbuc2
-lda {c2}
-ldy {z1}
-sta {c1},y
 //FRAGMENT _deref_pbuc1=_deref_pbuc1_plus_vbuz1
 lda {c1}
 clc
 adc {z1}
 sta {c1}
-//FRAGMENT pbuc1_derefidx_vbuaa=_deref_pbuc2
-tay
-lda {c2}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=_deref_pbuc2
-lda {c2}
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=_deref_pbuc2
-lda {c2}
-sta {c1},y
 //FRAGMENT _deref_pbuc1=_deref_pbuc1_plus_vbuxx
 txa
 clc
@@ -11869,6 +16053,139 @@ lda #0
 !:
 adc {z1}+1
 sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_sethi_vbuz2
+lda {z2}
+sta {z1}+1
+lda #<{c1}
+sta {z1}
+//FRAGMENT pbuz1=pbuz2_setlo_vbuz3
+lda {z3}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_sethi_vbuz2
+lda {z2}
+sta {z1}+1
+lda #<{c1}
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_setlo_vbuz3
+lda {z3}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3
+ldy #0
+lda ({z2}),y
+ldy {z3}
+ora {c1},y
+sta {z1}
+//FRAGMENT pbuz1=pbuc1_sethi_vbuaa
+sta {z1}+1
+lda #<{c1}
+sta {z1}
+//FRAGMENT pbuz1=pbuc1_sethi_vbuxx
+stx {z1}+1
+ldx #<{c1}
+stx {z1}
+//FRAGMENT pbuz1=pbuz2_setlo_vbuaa
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_setlo_vbuxx
+stx {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_setlo_vbuyy
+sty {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuc1_sethi_vbuaa
+sta {z1}+1
+lda #<{c1}
+sta {z1}
+//FRAGMENT vwuz1=vwuc1_sethi_vbuxx
+stx {z1}+1
+ldx #<{c1}
+stx {z1}
+//FRAGMENT vwuz1=vwuz2_setlo_vbuaa
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_setlo_vbuxx
+stx {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_setlo_vbuyy
+sty {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+ora ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+ora ({z2}),y
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
+ldy #0
+lda ({z1}),y
+ldy {z2}
+ora {c1},y
+//FRAGMENT vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+ora ({z1}),y
+//FRAGMENT vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+ora ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
+ldx {z2}
+lda {c1},x
+ldy #0
+ora ({z1}),y
+tax
+//FRAGMENT vbuxx=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+ora ({z1}),y
+tax
+//FRAGMENT vbuxx=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+ora ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
+ldy #0
+lda ({z1}),y
+ldy {z2}
+ora {c1},y
+tay
+//FRAGMENT vbuyy=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+ora ({z1}),y
+tay
+//FRAGMENT vbuyy=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+ora ({z1}),y
+tay
+//FRAGMENT pbuz1=pbuc1_sethi_vbuyy
+sty {z1}+1
+ldy #<{c1}
+sty {z1}
+//FRAGMENT vwuz1=vwuc1_sethi_vbuyy
+sty {z1}+1
+ldy #<{c1}
+sty {z1}
+//FRAGMENT pbuz1=pbuz1_setlo_vbuaa
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_setlo_vbuaa
+sta {z1}
 //FRAGMENT vdsz1=vdsc1
 lda #<{c1}
 sta {z1}
@@ -11952,11 +16269,6 @@ bvc !+
 eor #$80
 !:
 bpl {la1}
-//FRAGMENT vduz1=vduz1_rol_1
-asl {z1}
-rol {z1}+1
-rol {z1}+2
-rol {z1}+3
 //FRAGMENT pbuz1_derefidx_vbuz2=vbuz2
 lda {z2}
 tay
@@ -11995,14 +16307,168 @@ lda ({z1}),y
 sta {z1}+1
 pla
 sta {z1}
-//FRAGMENT vwuz1=vwuz1_minus_vwuz2
+//FRAGMENT _deref_pbuz1_eq__deref_pbuz2_then_la1
+ldy #0
+lda ({z1}),y
+ldy #0
+cmp ({z2}),y
+beq {la1}
+//FRAGMENT vbsz1_le_0_then_la1
 lda {z1}
+cmp #1
+bmi {la1}
+//FRAGMENT vwsz1=vwsz1_minus_vbsz2
+lda {z2}
+sta $fe
+ora #$7f
+bmi !+
+lda #0
+!:
+sta $ff
 sec
-sbc {z2}
+lda {z1}
+sbc $fe
 sta {z1}
 lda {z1}+1
-sbc {z2}+1
+sbc $ff
 sta {z1}+1
+//FRAGMENT _deref_pbsc1_ge_0_then_la1
+lda {c1}
+cmp #0
+bpl {la1}
+//FRAGMENT vbuz1=vbuz2_minus__deref_pbuc1
+lda {z2}
+sec
+sbc {c1}
+sta {z1}
+//FRAGMENT vbsaa_le_0_then_la1
+cmp #1
+bmi {la1}
+//FRAGMENT vbsaa_neq_vbsz1_then_la1
+cmp {z1}
+bne {la1}
+//FRAGMENT vwsz1=vwsz1_minus_vbsxx
+txa
+sta $fe
+ora #$7f
+bmi !+
+lda #0
+!:
+sta $ff
+sec
+lda {z1}
+sbc $fe
+sta {z1}
+lda {z1}+1
+sbc $ff
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz1_minus_vbsyy
+tya
+sta $fe
+ora #$7f
+bmi !+
+lda #0
+!:
+sta $ff
+sec
+lda {z1}
+sbc $fe
+sta {z1}
+lda {z1}+1
+sbc $ff
+sta {z1}+1
+//FRAGMENT vbuaa=vbuz1_minus__deref_pbuc1
+lda {z1}
+sec
+sbc {c1}
+//FRAGMENT vbuxx=vbuz1_minus__deref_pbuc1
+lda {z1}
+sec
+sbc {c1}
+tax
+//FRAGMENT vbuyy=vbuz1_minus__deref_pbuc1
+lda {z1}
+sec
+sbc {c1}
+tay
+//FRAGMENT vbuz1=vbuaa_minus__deref_pbuc1
+sec
+sbc {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_minus__deref_pbuc1
+sec
+sbc {c1}
+//FRAGMENT vbuxx=vbuaa_minus__deref_pbuc1
+sec
+sbc {c1}
+tax
+//FRAGMENT vbuyy=vbuaa_minus__deref_pbuc1
+sec
+sbc {c1}
+tay
+//FRAGMENT vbuz1=vbuxx_minus__deref_pbuc1
+txa
+sec
+sbc {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_minus__deref_pbuc1
+txa
+sec
+sbc {c1}
+//FRAGMENT vbuxx=vbuxx_minus__deref_pbuc1
+txa
+sec
+sbc {c1}
+tax
+//FRAGMENT vbuyy=vbuxx_minus__deref_pbuc1
+txa
+sec
+sbc {c1}
+tay
+//FRAGMENT vbuz1=vbuyy_minus__deref_pbuc1
+tya
+sec
+sbc {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_minus__deref_pbuc1
+tya
+sec
+sbc {c1}
+//FRAGMENT vbuxx=vbuyy_minus__deref_pbuc1
+tya
+sec
+sbc {c1}
+tax
+//FRAGMENT vbuyy=vbuyy_minus__deref_pbuc1
+tya
+sec
+sbc {c1}
+tay
+//FRAGMENT vbsyy_neq_vbsc1_then_la1
+cpy #{c1}
+bne {la1}
+//FRAGMENT vbsxx_le_0_then_la1
+cpx #1
+bmi {la1}
+//FRAGMENT vbsyy_neq_vbsz1_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbsyy=_dec_vbsyy
+dey
+//FRAGMENT vbsyy_neq_vbsxx_then_la1
+stx $ff
+cpy $ff
+bne {la1}
+//FRAGMENT vbsyy_le_0_then_la1
+cpy #1
+bmi {la1}
+//FRAGMENT vbsz1_neq_vbsyy_then_la1
+cpy {z1}
+bne {la1}
+//FRAGMENT vbsxx_neq_vbsyy_then_la1
+stx $ff
+cpy $ff
+bne {la1}
 //FRAGMENT vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2
 lda {z1}
 ldy {z2}
@@ -12022,28 +16488,6 @@ ldy {z3}
 clc
 adc {c1},y
 sta {z1}
-//FRAGMENT vwuz1=vwuz2_rol_7
-lda {z2}+1
-lsr
-lda {z2}
-ror
-sta {z1}+1
-lda #0
-ror
-sta {z1}
-//FRAGMENT vwuz1=vwuz2_bxor_vwuz3
-lda {z2}
-eor {z3}
-sta {z1}
-lda {z2}+1
-eor {z3}+1
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz2_ror_9
-lda {z2}+1
-lsr
-sta {z1}
-lda #0
-sta {z1}+1
 //FRAGMENT vbuxx=vbuxx_bor_pbuc1_derefidx_vbuz1
 txa
 ldx {z1}
@@ -12696,37 +17140,11 @@ lda {c1},y
 clc
 adc {c1},y
 tay
-//FRAGMENT vbuaa_le_vbuz1_then_la1
-ldy {z1}
-sta $ff
-cpy $ff
-bcs {la1}
-//FRAGMENT vbuxx_le_vbuz1_then_la1
-lda {z1}
-stx $ff
-cmp $ff
-bcs {la1}
-//FRAGMENT vbuyy_le_vbuz1_then_la1
-lda {z1}
-sty $ff
-cmp $ff
-bcs {la1}
 //FRAGMENT vbuaa_le_vbuxx_then_la1
 tay
 sty $ff
 cpx $ff
 bcs  {la1}
-//FRAGMENT vbuyy_le_vbuxx_then_la1
-sty $ff
-cpx $ff
-bcs  {la1}
-//FRAGMENT vwuz1=vwuz1_bxor_vwuz2
-lda {z1}
-eor {z2}
-sta {z1}
-lda {z1}+1
-eor {z2}+1
-sta {z1}+1
 //FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2
 ldy {z2}
 lda {c1},y
@@ -12773,6 +17191,193 @@ lda {c1},y
 clc
 adc {c2},y
 tay
+//FRAGMENT vbuz1=pbuz2_derefidx_(pbuz3_derefidx_vbuz4)_plus_pbuz5_derefidx_(pbuz6_derefidx_vbuz4)
+ldy {z4}
+lda ({z6}),y
+sta $ff
+lda ({z3}),y
+tay
+lda ({z2}),y
+ldy $ff
+clc
+adc ({z5}),y
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_bor_pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ora {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_bor_pbuc1_derefidx_vbuaa
+tay
+txa
+ora {c1},y
+tax
+//FRAGMENT vbuyy=vbuyy_bor_pbuc1_derefidx_vbuaa
+tax
+tya
+ora {c1},x
+tay
+//FRAGMENT vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuz3)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuz3)
+ldy {z3}
+lda ({z5}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z4}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_(pbuz2_derefidx_vbuz3)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuz3)
+ldy {z3}
+lda ({z5}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z4}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_(pbuz2_derefidx_vbuz3)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuz3)
+ldy {z3}
+lda ({z5}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z4}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_(pbuz3_derefidx_vbuaa)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuaa)
+tay
+lda ({z5}),y
+sta $ff
+lda ({z3}),y
+tay
+lda ({z2}),y
+ldy $ff
+clc
+adc ({z4}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuaa)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuaa)
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_(pbuz2_derefidx_vbuaa)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuaa)
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_(pbuz2_derefidx_vbuaa)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuaa)
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_(pbuz3_derefidx_vbuxx)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuxx)
+txa
+tay
+lda ({z5}),y
+sta $ff
+lda ({z3}),y
+tay
+lda ({z2}),y
+ldy $ff
+clc
+adc ({z4}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx)
+txa
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx)
+txa
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx)
+txa
+tay
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_(pbuz3_derefidx_vbuyy)_plus_pbuz4_derefidx_(pbuz5_derefidx_vbuyy)
+lda ({z5}),y
+sta $ff
+lda ({z3}),y
+tay
+lda ({z2}),y
+ldy $ff
+clc
+adc ({z4}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuyy)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuyy)
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_(pbuz2_derefidx_vbuyy)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuyy)
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_(pbuz2_derefidx_vbuyy)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuyy)
+lda ({z4}),y
+sta $ff
+lda ({z2}),y
+tay
+lda ({z1}),y
+ldy $ff
+clc
+adc ({z3}),y
+tay
 //FRAGMENT _deref_pbuc1=_deref_(_deref_qbuc2)
 ldy {c2}
 sty $fe
@@ -12781,20 +17386,6 @@ sty $ff
 ldy #0
 lda ($fe),y
 sta {c1}
-//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1}
-//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1}
-//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuxx
-lda {c2},x
-sta {c1}
-//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuyy
-lda {c2},y
-sta {c1}
 //FRAGMENT _deref_pwsz1=vwsc1
 ldy #0
 lda #<{c1}
@@ -12815,14 +17406,6 @@ sta {z1}+1
 ldy #1
 lda ({z2}),y
 sta {z1}
-//FRAGMENT pwsz1=pwsz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
 //FRAGMENT vbuaa=_hi__deref_pwsz1
 ldy #1
 lda ({z1}),y
@@ -12965,11 +17548,6 @@ sta ({z1}),y
 tya
 iny
 sta ({z1}),y
-//FRAGMENT vbuz1=vbuz2_plus_2
-lda {z2}
-clc
-adc #2
-sta {z1}
 //FRAGMENT vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc1_derefidx_vbuz3
 ldx {z2}
 ldy {z3}
@@ -12984,10 +17562,6 @@ sta {z1}+1
 lda {z1}
 clc
 adc #2
-//FRAGMENT vbuxx=vbuz1_plus_2
-ldx {z1}
-inx
-inx
 //FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc1_derefidx_vbuz2
 ldy {z2}
 clc
@@ -13088,10 +17662,6 @@ sta {z1}
 lda {c1}+1,x
 adc {c1}+1,y
 sta {z1}+1
-//FRAGMENT vbuz1=vbuxx_plus_2
-inx
-inx
-stx {z1}
 //FRAGMENT vbuz1=vbuyy_plus_2
 iny
 iny
@@ -13123,16 +17693,6 @@ clc
 ldy #0
 adc ({z2}),y
 tay
-//FRAGMENT vwuz1=_deref_pwuz2_plus__deref_pwuz3
-ldy #0
-clc
-lda ({z2}),y
-adc ({z3}),y
-sta {z1}
-iny
-lda ({z2}),y
-adc ({z3}),y
-sta {z1}+1
 //FRAGMENT vwuz1=_deref_pwuz2_plus__deref_pwuz1
 ldy #0
 clc
@@ -13206,9 +17766,6 @@ lsr
 lsr
 lsr
 sta {z1}
-//FRAGMENT vbuz1=_hi_pbuz2
-lda {z2}+1
-sta {z1}
 //FRAGMENT vbuaa=_deref_pbuz1_ror_4
 ldy #0
 lda ({z1}),y
@@ -13232,12 +17789,6 @@ lsr
 lsr
 lsr
 tay
-//FRAGMENT vbuaa=_hi_pbuz1
-lda {z1}+1
-//FRAGMENT vbuxx=_hi_pbuz1
-ldx {z1}+1
-//FRAGMENT vbuyy=_hi_pbuz1
-ldy {z1}+1
 //FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vwuc2
 ldy {z1}
 clc
@@ -13338,14 +17889,16 @@ tya
 sta {c1},y
 lda #0
 sta {c1}+1,y
-//FRAGMENT vduz1=_dword_vwuz2
-lda {z2}
+//FRAGMENT vwsz1=_deref_pwsz2_minus__deref_pwsz3
+ldy #0
+sec
+lda ({z2}),y
+sbc ({z3}),y
 sta {z1}
-lda {z2}+1
+iny
+lda ({z2}),y
+sbc ({z3}),y
 sta {z1}+1
-lda #0
-sta {z1}+2
-sta {z1}+3
 //FRAGMENT vduz1=vduz2_plus_vwuz3
 lda {z2}
 clc
@@ -13382,46 +17935,6 @@ ldy {c1}+1
 sty $ff
 ldy #0
 sta ($fe),y
-//FRAGMENT _deref_qbuc1=_inc__deref_qbuc1
-inc {c1}
-bne !+
-inc {c1}+1
-!:
-//FRAGMENT _deref_(_deref_qbuc1)=vbuz1
-lda {z1}
-ldy {c1}
-sty $fe
-ldy {c1}+1
-sty $ff
-ldy #0
-sta ($fe),y
-//FRAGMENT _deref_(_deref_qbuc1)=vbuaa
-ldy {c1}
-sty $fe
-ldy {c1}+1
-sty $ff
-ldy #0
-sta ($fe),y
-//FRAGMENT _deref_(_deref_qbuc1)=vbuxx
-txa
-ldy {c1}
-sty $fe
-ldy {c1}+1
-sty $ff
-ldy #0
-sta ($fe),y
-//FRAGMENT _deref_(_deref_qbuc1)=vbuyy
-tya
-ldy {c1}
-sty $fe
-ldy {c1}+1
-sty $ff
-ldy #0
-sta ($fe),y
-//FRAGMENT _deref_pwsc1=vbsc2
-NO_SYNTHESIS
-//FRAGMENT _deref_pwsc1=vwuc2
-NO_SYNTHESIS
 //FRAGMENT vbsz1_le_vbsc1_then_la1
 lda #{c1}
 sec
@@ -13456,19 +17969,62 @@ bvc !+
 eor #$80
 !:
 bmi {la1}
-//FRAGMENT vbsyy_neq_vbsc1_then_la1
-cpy #{c1}
-bne {la1}
+//FRAGMENT vwsz1=vbsz2_plus_vwsc1
+lda {z2}
+tax
+clc
+adc #<{c1}
+sta {z1}
+txa
+ora #$7f
+bmi !+
+lda #0
+!:
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vbsaa_plus_vwsc1
+tax
+clc
+adc #<{c1}
+sta {z1}
+txa
+ora #$7f
+bmi !+
+lda #0
+!:
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vbsxx_plus_vwsc1
+txa
+tax
+clc
+adc #<{c1}
+sta {z1}
+txa
+ora #$7f
+bmi !+
+lda #0
+!:
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vbsyy_plus_vwsc1
+tya
+tax
+clc
+adc #<{c1}
+sta {z1}
+txa
+ora #$7f
+bmi !+
+lda #0
+!:
+adc #>{c1}
+sta {z1}+1
 //FRAGMENT vbuaa_gt_vbuz1_then_la1
 cmp {z1}
 beq !+
 bcs {la1}
 !:
-//FRAGMENT vbuxx=vbuyy_plus_2
-tya
-clc
-adc #2
-tax
 //FRAGMENT pbuz1=_dec_pbuz2
 lda {z2}
 sec
@@ -13477,22 +18033,99 @@ sta {z1}
 lda {z2}+1
 sbc #0
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz1_plus_vbuz2
-lda {z2}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
+//FRAGMENT vduz1_eq_vduz2_then_la1
+lda {z1}
+cmp {z2}
+bne !+
+lda {z1}+1
+cmp {z2}+1
+bne !+
+lda {z1}+2
+cmp {z2}+2
+bne !+
+lda {z1}+3
+cmp {z2}+3
+beq {la1}
 !:
-//FRAGMENT pbuz1=pbuz1_plus_vbuxx
+//FRAGMENT vdsz1_eq_vdsz2_then_la1
+lda {z1}
+cmp {z2}
+bne !+
+lda {z1}+1
+cmp {z2}+1
+bne !+
+lda {z1}+2
+cmp {z2}+2
+bne !+
+lda {z1}+3
+cmp {z2}+3
+beq {la1}
+!:
+//FRAGMENT vdsz1=vdsz1_plus_vwsz2
+lda {z2}+1
+ora #$7f
+bmi !+
+lda #0
+!:
+sta $ff
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+lda {z1}+2
+adc $ff
+sta {z1}+2
+lda {z1}+3
+adc $ff
+sta {z1}+3
+//FRAGMENT vdsz1=vdsz1_minus_vwsz2
+lda {z2}+1
+ora #$7f
+bmi !+
+lda #0
+!:
+sta $ff
+sec
+lda {z1}
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+lda {z1}+2
+sbc $ff
+sta {z1}+2
+lda {z1}+3
+sbc $ff
+sta {z1}+3
+//FRAGMENT vwsz1=_dec_vwsz1
+lda {z1}
+bne !+
+dec {z1}+1
+!:
+dec {z1}
+//FRAGMENT _deref_pwuc1=vbuz1
+lda {z1}
+sta {c1}
+lda #0
+sta {c1}+1
+//FRAGMENT _deref_pwuc1=vbuaa
+sta {c1}
+lda #0
+sta {c1}+1
+//FRAGMENT _deref_pwuc1=vbuxx
 txa
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
+sta {c1}
+lda #0
+sta {c1}+1
+//FRAGMENT _deref_pwuc1=vbuyy
+tya
+sta {c1}
+lda #0
+sta {c1}+1
 //FRAGMENT vwsz1_lt_vbsc1_then_la1
 NO_SYNTHESIS
 //FRAGMENT vwsz1_lt_vwuc1_then_la1
@@ -13505,14 +18138,178 @@ lda {z1}
 cmp #<{c1}
 bcc {la1}
 !:
-//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vwuc2
-lda #<{c2}
+//FRAGMENT vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
+ldy {z2}
+sec
+lda {c1},y
+sbc {c2},y
+sta {z1}
+lda {c1}+1,y
+sbc {c2}+1,y
+sta {z1}+1
+//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2_rol_4
+ldy {z2}
+lda {c1},y
+asl
+sta {z1}
+lda {c1}+1,y
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbsc1_derefidx_vbuz1=vbsc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vwsz1=pwsc1_derefidx_vbuaa_minus_pwsc2_derefidx_vbuaa
+tay
+sec
+lda {c1},y
+sbc {c2},y
+sta {z1}
+lda {c1}+1,y
+sbc {c2}+1,y
+sta {z1}+1
+//FRAGMENT vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuxx
+sec
+lda {c1},x
+sbc {c2},x
+sta {z1}
+lda {c1}+1,x
+sbc {c2}+1,x
+sta {z1}+1
+//FRAGMENT vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuyy
+sec
+lda {c1},y
+sbc {c2},y
+sta {z1}
+lda {c1}+1,y
+sbc {c2}+1,y
+sta {z1}+1
+//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_rol_4
+lda {c1},x
+asl
+sta {z1}
+lda {c1}+1,x
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy_rol_4
+lda {c1},y
+asl
+sta {z1}
+lda {c1}+1,y
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbsc1_derefidx_vbuxx=vbsc2
+lda #{c2}
+sta {c1},x
+//FRAGMENT pbsc1_derefidx_vbuyy=vbsc2
+lda #{c2}
+sta {c1},y
+//FRAGMENT vbuz1=vbuz2_plus__deref_pbuc1
+lda {c1}
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus__deref_pbuc1
+lda {c1}
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus__deref_pbuc1
+lda {c1}
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus__deref_pbuc1
+lda {c1}
+clc
+adc {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_plus__deref_pbuc1
 clc
 adc {c1}
-sta {c1}
-lda #>{c2}
-adc {c1}+1
-sta {c1}+1
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_plus__deref_pbuc1
+clc
+adc {c1}
+//FRAGMENT vbuxx=vbuaa_plus__deref_pbuc1
+clc
+adc {c1}
+tax
+//FRAGMENT vbuyy=vbuaa_plus__deref_pbuc1
+clc
+adc {c1}
+tay
+//FRAGMENT vbuz1=vbuxx_plus__deref_pbuc1
+txa
+clc
+adc {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_plus__deref_pbuc1
+txa
+clc
+adc {c1}
+//FRAGMENT vbuxx=vbuxx_plus__deref_pbuc1
+txa
+clc
+adc {c1}
+tax
+//FRAGMENT vbuyy=vbuxx_plus__deref_pbuc1
+txa
+clc
+adc {c1}
+tay
+//FRAGMENT vbuz1=vbuyy_plus__deref_pbuc1
+tya
+clc
+adc {c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus__deref_pbuc1
+tya
+clc
+adc {c1}
+//FRAGMENT vbuxx=vbuyy_plus__deref_pbuc1
+tya
+clc
+adc {c1}
+tax
+//FRAGMENT vbuyy=vbuyy_plus__deref_pbuc1
+tya
+clc
+adc {c1}
+tay
 //FRAGMENT vbuz1=vbuz1_minus_1
 dec {z1}
 //FRAGMENT vbuxx=vbuxx_minus_1
@@ -13583,12 +18380,6 @@ lda {c1}
 sta {z1}
 lda {c1}+1
 sta {z1}+1
-//FRAGMENT vbuz1_le_vbuaa_then_la1
-cmp {z1}
-bcs {la1}
-//FRAGMENT vbuz1_le_vbuyy_then_la1
-cpy {z1}
-bcs {la1}
 //FRAGMENT vbuaa_le_vbuyy_then_la1
 sta $ff
 cpy $ff
@@ -13598,22 +18389,10 @@ tay
 sty $ff
 cpx $ff
 bcs  {la1}
-//FRAGMENT vbuxx_le_vbuaa_then_la1
-stx $ff
-cmp $ff
-bcs {la1}
-//FRAGMENT vbuxx_le_vbuyy_then_la1
-stx $ff
-cpy $ff
-bcs {la1}
 //FRAGMENT vbuyy_ge_vbuaa_then_la1
 sta $ff
 cpy $ff
 bcs {la1}
-//FRAGMENT vbuyy_le_vbuaa_then_la1
-sty $ff
-cmp $ff
-bcs {la1}
 //FRAGMENT pwuc1_derefidx_vbuz1=pwuz2_derefidx_vbuc2
 ldx {z1}
 ldy #{c2}
@@ -13646,21 +18425,8 @@ sta {c1},x
 iny
 lda ({z1}),y
 sta {c1}+1,x
-//FRAGMENT 0_neq_vbsz1_then_la1
-lda {z1}
-cmp #0
-bne {la1}
-//FRAGMENT 0_neq_vbsaa_then_la1
-cmp #0
-bne {la1}
 //FRAGMENT vbsaa=vbsc1
 lda #{c1}
-//FRAGMENT vbsaa=_inc_vbsaa
-clc
-adc #1
-//FRAGMENT 0_neq_vbsxx_then_la1
-cpx #0
-bne {la1}
 //FRAGMENT 0_neq_vbsyy_then_la1
 cpy #0
 bne {la1}
@@ -13689,6 +18455,519 @@ sta {c1},x
 lda #{c2}
 ora {c1},y
 sta {c1},y
+//FRAGMENT vduz1=vduz2_rol_0
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_5
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vduz1=vduz2_rol_6
+lda {z2}+3
+lsr
+sta $ff
+lda {z2}+2
+ror
+sta {z1}+3
+lda {z2}+1
+ror
+sta {z1}+2
+lda {z2}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+lsr $ff
+ror {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz2_rol_7
+lda {z2}+3
+lsr
+lda {z2}+2
+ror
+sta {z1}+3
+lda {z2}+1
+ror
+sta {z1}+2
+lda {z2}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+//FRAGMENT vduz1=vduz2_rol_8
+lda #0
+sta {z1}
+lda {z2}
+sta {z1}+1
+lda {z2}+1
+sta {z1}+2
+lda {z2}+2
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_9
+lda #0
+sta {z1}
+lda {z2}
+asl
+sta {z1}+1
+lda {z2}+1
+rol
+sta {z1}+2
+lda {z2}+2
+rol
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_vbuc1
+ldy #{c1}
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_rol_16
+lda #0
+sta {z1}
+sta {z1}+1
+lda {z2}
+sta {z1}+2
+lda {z2}+1
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_24
+lda #0
+sta {z1}
+sta {z1}+1
+sta {z1}+2
+lda {z2}
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_32
+lda #0
+sta {z1}
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_ror_0
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_ror_1
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+//FRAGMENT vduz1=vduz2_ror_2
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz2_ror_3
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz2_ror_4
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz2_ror_5
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz2_ror_6
+lda {z2}
+asl
+sta $ff
+lda {z2}+1
+rol
+sta {z1}
+lda {z2}+2
+rol
+sta {z1}+1
+lda {z2}+3
+rol
+sta {z1}+2
+lda #0
+rol
+sta {z1}+3
+asl $ff
+rol {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vduz1=vduz2_ror_7
+lda {z2}
+asl
+lda {z2}+1
+rol
+sta {z1}
+lda {z2}+2
+rol
+sta {z1}+1
+lda {z2}+3
+rol
+sta {z1}+2
+lda #0
+rol
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_ror_8
+lda #0
+sta {z1}+3
+lda {z2}+3
+sta {z1}+2
+lda {z2}+2
+sta {z1}+1
+lda {z2}+1
+sta {z1}
+//FRAGMENT vduz1=vduz2_ror_9
+lda #0
+sta {z1}+3
+lda {z2}+3
+lsr
+sta {z1}+2
+lda {z2}+2
+ror
+sta {z1}+1
+lda {z2}+1
+ror
+sta {z1}
+//FRAGMENT vduz1=vduz2_ror_vbuc1
+ldx #{c1}
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_ror_16
+lda #0
+sta {z1}+3
+sta {z1}+2
+lda {z2}+3
+sta {z1}+1
+lda {z2}+2
+sta {z1}
+//FRAGMENT vduz1=vduz2_ror_24
+lda #0
+sta {z1}+3
+sta {z1}+2
+sta {z1}+1
+lda {z2}+3
+sta {z1}
+//FRAGMENT vduz1=vduz2_ror_32
+lda #0
+sta {z1}+3
+sta {z1}+2
+sta {z1}+1
+sta {z1}
+//FRAGMENT vduz1=vduz2_rol_pbuc1_derefidx_vbuz3
+ldx {z3}
+ldy {c1},x
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_ror_pbuc1_derefidx_vbuz3
+ldy {z3}
+ldx {c1},y
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_rol_pbuc1_derefidx_vbuaa
+tax
+ldy {c1},x
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_rol_pbuc1_derefidx_vbuxx
+ldy {c1},x
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_rol_pbuc1_derefidx_vbuyy
+ldx {c1},y
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_ror_pbuc1_derefidx_vbuaa
+tay
+ldx {c1},y
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_ror_pbuc1_derefidx_vbuxx
+lda {c1},x
+tax
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+dex
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_ror_pbuc1_derefidx_vbuyy
+ldx {c1},y
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+cpx #0
+beq !e+
+!:
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+dex
+bne !-
+!e:
 //FRAGMENT vwsz1=_sword_vbsz2
 lda {z2}
 sta {z1}
@@ -13698,17 +18977,6 @@ bmi !+
 lda #0
 !:
 sta {z1}+1
-//FRAGMENT vwsz1=vwsz1_minus_vwsc1
-lda {z1}
-sec
-sbc #<{c1}
-sta {z1}
-lda {z1}+1
-sbc #>{c1}
-sta {z1}+1
-//FRAGMENT vbsyy_ge_0_then_la1
-cpy #0
-bpl {la1}
 //FRAGMENT vwsz1=_sword_vbsyy
 tya
 sta {z1}
@@ -13718,3 +18986,31 @@ bmi !+
 lda #0
 !:
 sta {z1}+1
+//FRAGMENT qssz1=qssc1_plus_vwsz2
+lda #<{c1}
+clc
+adc {z2}
+sta {z1}
+lda #>{c1}
+adc {z2}+1
+sta {z1}+1 
+//FRAGMENT pssz1=_deref_qssz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=pbuz2_derefidx_vbuc1
+ldy #{c1}
+lda ({z2}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT qssz1=qssc1_plus_vwsz1
+lda #<{c1}
+clc
+adc {z1}
+sta {z1}
+lda #>{c1}
+adc {z1}+1
+sta {z1}+1 
diff --git a/src/main/fragment/cache/fragment-cache-rom6502x.asm b/src/main/fragment/cache/fragment-cache-rom6502x.asm
index 92ae89f96..04c9a87f1 100644
--- a/src/main/fragment/cache/fragment-cache-rom6502x.asm
+++ b/src/main/fragment/cache/fragment-cache-rom6502x.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
 //FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
 inc {c1}
 //FRAGMENT isr_hardware_all_entry
@@ -63,3 +63,1130 @@ lda #<{c2}
 sta {c1}
 lda #>{c2}
 sta {c1}+1
+//FRAGMENT vbuz1=vbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT 0_eq_vbuz1_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
+dec {c1}
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT 0_neq_vbuz1_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT vwuz1=vwuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pvoz1=pvoc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1_lt_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcc {la1}
+//FRAGMENT pbuz1=pbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vbuz2
+lda {z2}
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pvoz1=pvoz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz1_plus_2
+lda {z1}
+clc
+adc #2
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_rol_1
+lda {z2}
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuz3
+lda {z2}
+ora {z3}
+sta {z1}
+//FRAGMENT vwuz1_lt_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bcc {la1}
+bne !+
+lda {z1}
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT vbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+//FRAGMENT _deref_pbuc1=vbuz1
+lda {z1}
+sta {c1}
+//FRAGMENT pbuz1=_inc_pbuz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT vwuz1=_inc_vwuz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT vbuz1=_hi_pvoz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=_lo_pvoz2
+lda {z2}
+sta {z1}
+//FRAGMENT vwuz1_lt_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bcc {la1}
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuc1
+ldy #{c1}
+lda ({z2}),y
+sta {z1}
+//FRAGMENT pbuz1=pbuz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1_neq_pbuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne {la1}
+lda {z1}
+cmp #<{c1}
+bne {la1}
+//FRAGMENT _deref_pbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT vbuaa=vbuz1
+lda {z1}
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//FRAGMENT vbuz1=vbuaa_band_vbuc1
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_band_vbuc1
+lda #{c1}
+sax {z1}
+//FRAGMENT vbuz1=vbuyy_band_vbuc1
+tya
+and #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+//FRAGMENT vbuaa=vbuaa_band_vbuc1
+and #{c1}
+//FRAGMENT vbuaa=vbuxx_band_vbuc1
+txa
+and #{c1}
+//FRAGMENT vbuaa=vbuyy_band_vbuc1
+tya
+and #{c1}
+//FRAGMENT vbuxx=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_band_vbuc1
+ldx #{c1}
+axs #0
+//FRAGMENT 0_eq_vbuaa_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vbuyy=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tay
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuc2
+tay
+lda #{c2}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
+lda #{c2}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuc2
+lda #{c2}
+sta {c1},y
+//FRAGMENT 0_neq_vbuxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuaa_lt_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
+//FRAGMENT pbuz1=pbuc1_plus_vbuaa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vbuxx
+txa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vbuyy
+tya
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuxx=vbuxx_plus_2
+inx
+inx
+//FRAGMENT vbuz1=vbuaa_rol_1
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_rol_1
+txa
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_rol_1
+tya
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_rol_1
+lda {z1}
+asl
+//FRAGMENT vbuaa=vbuaa_rol_1
+asl
+//FRAGMENT vbuaa=vbuxx_rol_1
+txa
+asl
+//FRAGMENT vbuaa=vbuyy_rol_1
+tya
+asl
+//FRAGMENT vbuxx=vbuz1_rol_1
+lda {z1}
+asl
+tax
+//FRAGMENT vbuxx=vbuaa_rol_1
+asl
+tax
+//FRAGMENT vbuxx=vbuxx_rol_1
+txa
+asl
+tax
+//FRAGMENT vbuxx=vbuyy_rol_1
+tya
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_1
+lda {z1}
+asl
+tay
+//FRAGMENT vbuyy=vbuaa_rol_1
+asl
+tay
+//FRAGMENT vbuyy=vbuxx_rol_1
+txa
+asl
+tay
+//FRAGMENT vbuyy=vbuyy_rol_1
+tya
+asl
+tay
+//FRAGMENT vbuz1=vbuxx_bor_vbuz2
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bor_vbuz2
+tya
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuaa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bor_vbuaa
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuxx
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bor_vbuxx
+stx {z1}
+//FRAGMENT vbuaa=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tay
+//FRAGMENT _deref_pbuc1=vbuaa
+sta {c1}
+//FRAGMENT vbuaa=_hi_pvoz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_pvoz1
+ldx {z1}+1
+//FRAGMENT vbuaa=_lo_pvoz1
+lda {z1}
+//FRAGMENT vbuxx=_lo_pvoz1
+ldx {z1}
+//FRAGMENT _deref_pbuc1=vbuxx
+stx {c1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuc1
+ldy #{c1}
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuc1
+ldy #{c1}
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuc1
+ldy #{c1}
+lda ({z1}),y
+tay
+//FRAGMENT vbuxx_lt_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+//FRAGMENT vbuyy=_hi_pvoz1
+ldy {z1}+1
+//FRAGMENT _deref_pbuc1=vbuyy
+sty {c1}
+//FRAGMENT vbuyy=_lo_pvoz1
+ldy {z1}
+//FRAGMENT vbuyy_lt_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuyy
+tya
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuc1
+lda #{c1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+//FRAGMENT vbuaa=vbuz1_bor_vbuaa
+ora {z1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuxx
+txa
+ora {z1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuyy
+tya
+ora {z1}
+//FRAGMENT vbuz1=vbuxx
+stx {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+tax
+//FRAGMENT vbuxx=vbuz1_bor_vbuaa
+ora {z1}
+tax
+//FRAGMENT vbuxx=vbuz1_bor_vbuxx
+txa
+ora {z1}
+tax
+//FRAGMENT vbuxx=vbuz1_bor_vbuyy
+tya
+ora {z1}
+tax
+//FRAGMENT vbuz1=vbuyy
+sty {z1}
+//FRAGMENT vbuyy=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+tay
+//FRAGMENT vbuyy=vbuz1_bor_vbuaa
+ora {z1}
+tay
+//FRAGMENT vbuyy=vbuz1_bor_vbuxx
+txa
+ora {z1}
+tay
+//FRAGMENT vbuyy=vbuz1_bor_vbuyy
+tya
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_bor_vbuyy
+txa
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_vbuz1
+txa
+ora {z1}
+//FRAGMENT vbuaa=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
+//FRAGMENT vbuaa=vbuxx_bor_vbuyy
+txa
+sty $ff
+ora $ff
+//FRAGMENT vbuxx=vbuxx_bor_vbuz1
+txa
+ora {z1}
+tax
+//FRAGMENT vbuxx=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
+tax
+//FRAGMENT vbuxx=vbuxx_bor_vbuyy
+txa
+sty $ff
+ora $ff
+tax
+//FRAGMENT vbuyy=vbuxx_bor_vbuz1
+txa
+ora {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_bor_vbuaa
+stx $ff
+ora $ff
+tay
+//FRAGMENT vbuyy=vbuxx_bor_vbuyy
+txa
+sty $ff
+ora $ff
+tay
+//FRAGMENT 0_neq_vbuyy_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT 0_eq_vbuxx_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT 0_eq_vbuyy_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vbuaa=vbuyy_bor_vbuaa
+sty $ff
+ora $ff
+//FRAGMENT vbuxx=vbuaa
+tax
+//FRAGMENT vbuyy=vbuaa
+tay
+//FRAGMENT pbuz1=pbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT vbuz1=_dec_vbuz1
+dec {z1}
+//FRAGMENT pbuz1=pbuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=_inc_pbuz2
+clc
+lda {z2}
+adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=vbuc1
+lda #{c1}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuz1_ge_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_5
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1_eq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT pbuz1=pbuz2_plus_vbuz3
+lda {z3}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_minus_vbuc1
+sec
+lda {z1}
+sbc #{c1}
+sta {z1}
+lda {z1}+1
+sbc #0
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuc1
+lda {c1}
+sta {z1}
+//FRAGMENT _deref_pbuz1=vbuz2
+lda {z2}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuxx=vbuxx_band_vbuc1
+lda #{c1}
+axs #0
+//FRAGMENT vbuyy=vbuxx_band_vbuc1
+txa
+and #{c1}
+tay
+//FRAGMENT vbuxx=vbuyy_band_vbuc1
+ldx #{c1}
+tya
+axs #0
+//FRAGMENT vbuyy=vbuyy_band_vbuc1
+tya
+and #{c1}
+tay
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
+ldy {z1}
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldy {c1},x
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa
+tay
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa
+tax
+ldy {c1},x
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+//FRAGMENT 0_neq_vbuaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuaa_ge_vbuz1_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuxx
+lda #0
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vwuz1=_word_vbuaa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=_word_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuaa_eq_vbuc1_then_la1
+cmp #{c1}
+beq {la1}
+//FRAGMENT vbuaa=_deref_pbuc1
+lda {c1}
+//FRAGMENT vbuxx=_deref_pbuc1
+ldx {c1}
+//FRAGMENT _deref_pbuz1=vbuaa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuxx
+txa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuyy
+tya
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuxx_ge_vbuz1_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vbuxx_eq_vbuc1_then_la1
+cpx #{c1}
+beq {la1}
+//FRAGMENT vbuyy=_deref_pbuc1
+ldy {c1}
+//FRAGMENT vbuz1_ge_vbuxx_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuyy=vbuz1
+ldy {z1}
+//FRAGMENT vbuz1_ge_vbuyy_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuyy_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuaa=vbuxx
+txa
+//FRAGMENT vbuyy=vbuxx
+txa
+tay
+//FRAGMENT vbuyy_eq_vbuc1_then_la1
+cpy #{c1}
+beq {la1}
+//FRAGMENT vbuaa=vbuyy
+tya
+//FRAGMENT vbuxx=vbuyy
+tya
+tax
+//FRAGMENT vbuyy_ge_vbuz1_then_la1
+cpy {z1}
+bcs {la1}
+//FRAGMENT vwuz1=vwuz1_rol_5
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_plus_1
+ldy {z2}
+iny
+sty {z1}
+//FRAGMENT vbuz1=vbuz2_rol_2
+lda {z2}
+asl
+asl
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1=vbuz1_minus_vbuc1
+lax {z1}
+axs #{c1}
+stx {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
+ldy {z2}
+lda {c1},y
+ldy {z3}
+clc
+adc {c2},y
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
+lda {z2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vbuz1_ge_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz1_plus_vbuc1
+lax {z1}
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT vbuaa=vbuz1_plus_1
+lda {z1}
+clc
+adc #1
+//FRAGMENT vbuaa=vbuz1_rol_2
+lda {z1}
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuaa_rol_2
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_2
+asl
+asl
+//FRAGMENT vbuxx=vbuaa_rol_2
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_2
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuxx_rol_2
+txa
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_rol_2
+txa
+asl
+asl
+//FRAGMENT vbuxx=vbuxx_rol_2
+txa
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_rol_2
+txa
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuyy_rol_2
+tya
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_rol_2
+tya
+asl
+asl
+//FRAGMENT vbuxx=vbuyy_rol_2
+tya
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_rol_2
+tya
+asl
+asl
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuz1
+ldx {z1}
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuz1
+ldx {z1}
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx
+tay
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuyy
+tax
+lda {c2},y
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},x
+//FRAGMENT vbuxx=vbuxx_minus_vbuc1
+txa
+axs #{c1}
+//FRAGMENT vbuyy=vbuyy_minus_vbuc1
+tya
+sec
+sbc #{c1}
+tay
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
+ldy {z1}
+lda {c1},y
+ldy {z2}
+clc
+adc {c2},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
+ldx {z1}
+lda {c1},x
+ldx {z2}
+clc
+adc {c2},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuz2
+ldy {z1}
+lda {c1},y
+ldy {z2}
+clc
+adc {c2},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z1}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuxx
+lda {c2},x
+ldx {z1}
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuxx
+lda {c2},x
+ldy {z1}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z1}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuyy
+lda {c2},y
+ldx {z1}
+clc
+adc {c1},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_plus_pbuc2_derefidx_vbuyy
+lda {c2},y
+ldy {z1}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuz2
+lda {c1},x
+ldy {z2}
+clc
+adc {c2},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuz1
+lda {c1},x
+ldy {z1}
+clc
+adc {c2},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuz1
+lda {c1},x
+ldx {z1}
+clc
+adc {c2},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuz1
+lda {c1},x
+ldy {z1}
+clc
+adc {c2},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx
+lda {c1},x
+clc
+adc {c2},x
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx
+lda {c1},x
+clc
+adc {c2},x
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx
+lda {c1},x
+clc
+adc {c2},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx
+lda {c1},x
+clc
+adc {c2},x
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuyy
+lda {c1},x
+clc
+adc {c2},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuyy
+lda {c1},x
+clc
+adc {c2},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuyy
+lda {c1},x
+clc
+adc {c2},y
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuyy
+lda {c1},x
+clc
+adc {c2},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuz2
+lda {c1},y
+ldy {z2}
+clc
+adc {c2},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuz1
+lda {c1},y
+ldy {z1}
+clc
+adc {c2},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuz1
+lda {c1},y
+ldx {z1}
+clc
+adc {c2},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuz1
+lda {c1},y
+ldy {z1}
+clc
+adc {c2},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
+lda {c1},y
+clc
+adc {c2},x
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
+lda {c1},y
+clc
+adc {c2},x
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
+lda {c1},y
+clc
+adc {c2},x
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
+lda {c1},y
+clc
+adc {c2},x
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuyy
+lda {c1},y
+clc
+adc {c2},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuyy
+lda {c1},y
+clc
+adc {c2},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuyy
+lda {c1},y
+clc
+adc {c2},y
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuyy
+lda {c1},y
+clc
+adc {c2},y
+tay
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuaa
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuxx
+ldy {z1}
+txa
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuyy
+tya
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT vbuxx_ge_vbuc1_then_la1
+cpx #{c1}
+bcs {la1}
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT vbuyy_ge_vbuc1_then_la1
+cpy #{c1}
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuaa
+sta {c1},y
+//FRAGMENT vbuxx=vbuz1_plus_1
+ldx {z1}
+inx
+//FRAGMENT vbuyy=vbuz1_plus_1
+ldy {z1}
+iny
diff --git a/src/main/fragment/cache/fragment-cache-wdc65c02.asm b/src/main/fragment/cache/fragment-cache-wdc65c02.asm
index 4089351dd..07dafba49 100644
--- a/src/main/fragment/cache/fragment-cache-wdc65c02.asm
+++ b/src/main/fragment/cache/fragment-cache-wdc65c02.asm
@@ -1,18 +1,221 @@
-//KICKC FRAGMENT CACHE fda5310c5 fda532f51
+//KICKC FRAGMENT CACHE fdb40b9db fdb40d86d
+//FRAGMENT vbuz1=vbuc1
+lda #{c1}
+sta {z1}
 //FRAGMENT vwuz1=vwuc1
 lda #<{c1}
 sta {z1}
 lda #>{c1}
 sta {z1}+1
-//FRAGMENT isr_rom_sys_cx16_entry
-
+//FRAGMENT vduz1=vduc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+lda #<{c1}>>$10
+sta {z1}+2
+lda #>{c1}>>$10
+sta {z1}+3
+//FRAGMENT vbuz1=_deref_pbuc1
+lda {c1}
+sta {z1}
+//FRAGMENT vbuz1_lt_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcc {la1}
+//FRAGMENT vbuz1=vbuz2_minus_1
+ldx {z2}
+dex
+stx {z1}
+//FRAGMENT vbuz1=vbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT pvoz1=pvoc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor__deref_pbuc2
+lda {c1}
+ora {c2}
+sta {c1}
+//FRAGMENT 0_eq_vbuz1_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT vwuz1=vwuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=_inc_vbuz1
+inc {z1}
 //FRAGMENT vwuz1=_inc_vwuz1
 inc {z1}
 bne !+
 inc {z1}+1
 !:
-//FRAGMENT vwuz1_neq_vbuc1_then_la1
-NO_SYNTHESIS
+//FRAGMENT vwuz1_le_vwuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne !+
+lda {z1}
+cmp #<{c1}
+!:
+bcc {la1}
+beq {la1}
+//FRAGMENT vbuz1=vwuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_ror_7
+lda {c1}
+rol
+rol
+and #$01
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_rol_vbuz2
+lda #{c1}
+ldy {z2}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT _deref_pbuc1=vbuz1
+lda {z1}
+sta {c1}
+//FRAGMENT vbuz1=vbuz2_rol_1
+lda {z2}
+asl
+sta {z1}
+//FRAGMENT pbuz1=qbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuz2_band_vbuc1
+lda #{c1}
+ldy #0
+and ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_ror_4
+lda {z2}
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_ror_6
+lda {z2}
+rol
+rol
+rol
+and #$03
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
+lda {z2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT _deref_pbuz1=vbuz2
+lda {z2}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuz1_le_vbuz2_then_la1
+lda {z2}
+cmp {z1}
+bcs {la1}
+//FRAGMENT 0_lt_vbuz1_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_vbuz3
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+ldy {z3}
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT pwuc1_derefidx_vbuz1=vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+lda {z2}+1
+sta {c1}+1,y
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
+sta {c1}
+//FRAGMENT vbuz1=_lo_pvoz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=_hi_pvoz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT _deref_pbuc1=vbuc2
+lda #{c2}
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
+lda #{c2}
+ora {c1}
+sta {c1}
+//FRAGMENT vbuz1=vbuc1_bor_vbuz2
+lda #{c1}
+ora {z2}
+sta {z1}
+//FRAGMENT vwuz1_lt_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bcc {la1}
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT _deref_pbuc1=_deref_pbuc2
+lda {c2}
+sta {c1}
+//FRAGMENT vwuz1_eq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bne !+
+lda {z1}+1
+bne !+
+jmp {la1}
+!:
 //FRAGMENT vwuz1_neq_vwuc1_then_la1
 lda {z1}+1
 cmp #>{c1}
@@ -20,39 +223,167 @@ bne {la1}
 lda {z1}
 cmp #<{c1}
 bne {la1}
-//FRAGMENT vwuz1=vbuc1
-lda #<{c1}
+//FRAGMENT pwuc1_derefidx_vbuz1=vwuc2
+ldy {z1}
+lda #<{c2}
+sta {c1},y
+lda #>{c2}
+sta {c1}+1,y
+//FRAGMENT vbuz1=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
 sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT vwuz1=_dec_vwuz1
-lda {z1}
-bne !+
-dec {z1}+1
-!:
-dec {z1}
-//FRAGMENT vwuz1=vwuz2
+//FRAGMENT vwuz1=_lo_vduz2
 lda {z2}
 sta {z1}
 lda {z2}+1
 sta {z1}+1
-//FRAGMENT pbuz1=pbuc1
-lda #<{c1}
+//FRAGMENT vwuz1=_hi_vduz2
+lda {z2}+2
 sta {z1}
-lda #>{c1}
+lda {z2}+3
 sta {z1}+1
-//FRAGMENT vbuz1=vbuc1
-lda #{c1}
+//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+//FRAGMENT vbuz1=vbuz2_rol_2
+lda {z2}
+asl
+asl
 sta {z1}
-//FRAGMENT vbuz1_lt_vbuc1_then_la1
-lda {z1}
-cmp #{c1}
-bcc {la1}
-//FRAGMENT _deref_pbuc1=vbuc2
+//FRAGMENT pduc1_derefidx_vbuz1=vduz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+lda {z2}+1
+sta {c1}+1,y
+lda {z2}+2
+sta {c1}+2,y
+lda {z2}+3
+sta {c1}+3,y
+//FRAGMENT vduz1=vduz2_ror_1
+lda {z2}+3
+lsr
+sta {z1}+3
+lda {z2}+2
+ror
+sta {z1}+2
+lda {z2}+1
+ror
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+//FRAGMENT vbuz1=_hi_vwuz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT vbuz1_eq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+beq {la1}
+//FRAGMENT vbuz1_neq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bne {la1}
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuc2
 lda #{c2}
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT _deref_pwuc1=vwuc2
+lda #<{c2}
 sta {c1}
-//FRAGMENT isr_rom_sys_cx16_exit
-jmp $e034
+lda #>{c2}
+sta {c1}+1
+//FRAGMENT _deref_pduc1=vduc2
+lda #<{c2}
+sta {c1}
+lda #>{c2}
+sta {c1}+1
+lda #<{c2}>>$10
+sta {c1}+2
+lda #>{c2}>>$10
+sta {c1}+3
+//FRAGMENT pbuz1=pbuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz2_rol_4
+lda {z2}
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuz3
+lda {z2}
+ora {z3}
+sta {z1}
+//FRAGMENT vbuz1_lt_vwuz2_then_la1
+lda {z2}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bcc {la1}
+//FRAGMENT vbuz1=_lo_pbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vbuz1=_hi_pbuz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_vbuc1
+lda #{c1}
+ora {z2}
+sta {z1}
+//FRAGMENT pbuz1=pbuz1_plus_vwuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vbuz1=_deref_pbuz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+//FRAGMENT pbuz1=_inc_pbuz1
+inc {z1}
+bne !+
+inc {z1}+1
+!:
+//FRAGMENT 0_neq_vbuz1_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT vbsz1=pbsc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuz1_neq_0_then_la1
+lda {z1}
+bne {la1}
+//FRAGMENT vwuz1=vwuz2_ror_3
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
 //FRAGMENT vwuz1=vwuz2_rol_1
 lda {z2}
 asl
@@ -68,94 +399,447 @@ sta {z1}
 lda {z2}+1
 adc #>{c1}
 sta {z1}+1
-//FRAGMENT _deref_pwuc1=_deref_pwuz1
+//FRAGMENT _deref_pwuz1=vwuz2
 ldy #0
-lda ({z1}),y
-sta {c1}
+lda {z2}
+sta ({z1}),y
 iny
-lda ({z1}),y
-sta {c1}+1
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT pbuz1=pbuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vbsz1=vbsz1_minus_1
+dec {z1}
+//FRAGMENT vbuz1=vbuz1_ror_1
+lsr {z1}
+//FRAGMENT vwuz1=vwuz2_ror_2
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vbsz1=vbsz1_minus_2
+dec {z1}
+dec {z1}
+//FRAGMENT vbuz1=vbuz1_ror_2
+lda {z1}
+lsr
+lsr
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_ror_1
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+//FRAGMENT vbsz1=vbsz1_minus_vbsc1
+lda {z1}
+sec
+sbc #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuz1_ror_4
+lda {z1}
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbsz1_ge_0_then_la1
+lda {z1}
+cmp #0
+bpl {la1}
+//FRAGMENT vbuz1=vbuz2_plus_vbuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+//FRAGMENT vduz1=vduz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+lda {z2}+2
+sta {z1}+2
+lda {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz2_rol_2
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT pduz1=pduc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT _deref_pduz1=vduz2
+ldy #0
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+iny
+lda {z2}+2
+sta ({z1}),y
+iny
+lda {z2}+3
+sta ({z1}),y
+//FRAGMENT vduz1=vduz1_plus_vwuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vbuz1=_lo_vwuz2
+lda {z2}
+sta {z1}
 //FRAGMENT pvoz1=pvoz2
 lda {z2}
 sta {z1}
 lda {z2}+1
 sta {z1}+1
-//FRAGMENT pvoz1=pvoc1
-lda #<{c1}
-sta {z1}
-lda #>{c1}
-sta {z1}+1
-//FRAGMENT pbuz1=pbuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vwuz1=vwuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//FRAGMENT vwuz1_lt_vbuc1_then_la1
-lda {z1}+1
-bne !+
-lda {z1}
-cmp #{c1}
-bcc {la1}
-!:
-//FRAGMENT vwuz1=vwuz1_minus_vbuc1
+//FRAGMENT vwuz1=vwuz2_minus_vwuz3
+lda {z2}
 sec
-lda {z1}
-sbc #{c1}
+sbc {z3}
 sta {z1}
-lda {z1}+1
-sbc #0
+lda {z2}+1
+sbc {z3}+1
 sta {z1}+1
-//FRAGMENT vbuz1=_inc_vbuz1
-inc {z1}
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {c1}
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
-lda #{c2}
-ora {c1}
-sta {c1}
-//FRAGMENT _deref_qprc1=pprc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
-//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vbuc2
-NO_SYNTHESIS
-//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vbsc2
-NO_SYNTHESIS
-//FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vwuc2
-lda #<{c2}
+//FRAGMENT vwuz1=vwuz2_rol_7
+lda {z2}+1
+lsr
+lda {z2}
+ror
+sta {z1}+1
+lda #0
+ror
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_bxor_vwuz3
+lda {z2}
+eor {z3}
+sta {z1}
+lda {z2}+1
+eor {z3}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_ror_9
+lda {z2}+1
+lsr
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_8
+lda {z2}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT pbuz1=_deref_qbuc1
+lda {c1}
+sta {z1}
+lda {c1}+1
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=_deref_pbuz1_band_vbuc1
+lda #{c1}
+ldy #0
+and ({z1}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuz3
+ldy {z3}
 clc
-adc {c1}
-sta {c1}
-lda #>{c2}
-adc {c1}+1
-sta {c1}+1
-//FRAGMENT vbuz1=_lo_pvoz2
+lda {z2}
+adc {c1},y
+sta {z1}
+lda {z2}+1
+adc {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_rol_1
+ldy {z2}
+lda {c1},y
+asl
+sta {z1}
+//FRAGMENT pbuz1=pbuz2_plus_vbuz3
+lda {z3}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ldx {z1}
+inc {c1},x
+//FRAGMENT vwuz1=_word_pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1_neq_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bne {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_neq_vbuz2_then_la1
+lda {z2}
+ldy {z1}
+cmp {c1},y
+bne {la1}
+//FRAGMENT _deref_pbuc1_neq_pbuc2_derefidx_vbuz1_then_la1
+lda {c1}
+ldy {z1}
+cmp {c2},y
+bne {la1}
+//FRAGMENT vduz1=_dword_vwuz2
 lda {z2}
 sta {z1}
-//FRAGMENT _deref_pbuc1=vbuz1
-lda {z1}
-sta {c1}
-//FRAGMENT vbuz1=_hi_pvoz2
 lda {z2}+1
+sta {z1}+1
+lda #0
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vwuz1_neq_0_then_la1
+lda {z1}
+ora {z1}+1
+bne {la1}
+//FRAGMENT vbuz1_eq_0_then_la1
+lda {z1}
+beq {la1}
+//FRAGMENT vduz1=vduz1_plus_vduz2
+lda {z1}
+clc
+adc {z2}
 sta {z1}
-//FRAGMENT vbuz1=vbuc1_bor_vbuz2
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+lda {z1}+2
+adc {z2}+2
+sta {z1}+2
+lda {z1}+3
+adc {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz1_ror_1
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vduz1=vduz1_rol_1
+asl {z1}
+rol {z1}+1
+rol {z1}+2
+rol {z1}+3
+//FRAGMENT vduz1_lt_vduz2_then_la1
+lda {z1}+3
+cmp {z2}+3
+bcc {la1}
+bne !+
+lda {z1}+2
+cmp {z2}+2
+bcc {la1}
+bne !+
+lda {z1}+1
+cmp {z2}+1
+bcc {la1}
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT vduz1=_inc_vduz1
+inc {z1}
+bne !+
+inc {z1}+1
+bne !+
+inc {z1}+2
+bne !+
+inc {z1}+3
+!:
+//FRAGMENT vwuz1=vwuz1_plus_vwuz2
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1_ge_vwuz2_then_la1
+lda {z2}+1
+cmp {z1}+1
+bne !+
+lda {z2}
+cmp {z1}
+beq {la1}
+!:
+bcc {la1}
+//FRAGMENT vwuz1=vwuz1_minus_vwuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus_1
+clc
+lda {z2}
+adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT vwuz1=_dec_vwuz1
+lda {z1}
+bne !+
+dec {z1}+1
+!:
+dec {z1}
+//FRAGMENT vwuz1=vwuz1_rol_1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz1_bor_vbuc1
 lda #{c1}
-ora {z2}
+ora {z1}
 sta {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_rol_4
+ldy {z2}
+lda {c1},y
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bor_pbuc1_derefidx_vbuz3
+lda {z2}
+ldy {z3}
+ora {c1},y
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+//FRAGMENT vduz1=_dword__deref_pwuz2
+ldy #0
+sty {z1}+2
+sty {z1}+3
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+//FRAGMENT vduz1=_deref_pduz2
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+iny
+lda ({z2}),y
+sta {z1}+2
+iny
+lda ({z2}),y
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vduz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+lda {z2}+2
+adc {z3}+2
+sta {z1}+2
+lda {z2}+3
+adc {z3}+3
+sta {z1}+3
+//FRAGMENT vbuz1=vbuz1_rol_vbuz2
+lda {z1}
+ldy {z2}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuz1=_bnot__deref_pbuz2
+ldy #0
+lda ({z2}),y
+eor #$ff
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuz2
+lda {c1}
+and {z2}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1_lt_vbuz2_then_la1
+ldy {z1}
+lda {c1},y
+cmp {z2}
+bcc {la1}
+//FRAGMENT 0_neq_pbuc1_derefidx_vbuz1_then_la1
+ldy {z1}
+lda {c1},y
+cmp #0
+bne {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1_lt_vwuz2_then_la1
+ldy {z1}
+lda {c1},y
+ldy {z2}+1
+bne {la1}
+cmp {z2}
+bcc {la1}
+//FRAGMENT vwuz1=vbuz2_rol_vbuz3
+lda {z2}
+ldy {z3}
+sta {z1}
+lda #0
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
 //FRAGMENT pbuz1=pbuz2_plus_vwuz3
 lda {z2}
 clc
@@ -164,102 +848,1731 @@ sta {z1}
 lda {z2}+1
 adc {z3}+1
 sta {z1}+1
-//FRAGMENT pbuz1=pbuz2
+//FRAGMENT vwuz1=vbuz2
 lda {z2}
 sta {z1}
-lda {z2}+1
+lda #0
 sta {z1}+1
-//FRAGMENT pbuz1_neq_pbuz2_then_la1
+//FRAGMENT vwuz1_lt_vbuz2_then_la1
 lda {z1}+1
-cmp {z2}+1
-bne {la1}
+bne !+
 lda {z1}
 cmp {z2}
-bne {la1}
-//FRAGMENT _deref_pbuc1=_deref_pbuz1
-ldy #0
-lda ({z1}),y
-sta {c1}
-//FRAGMENT pbuz1=_inc_pbuz1
-inc {z1}
-bne !+
-inc {z1}+1
-!:
-//FRAGMENT vbuaa_lt_vbuc1_then_la1
-cmp #{c1}
 bcc {la1}
+!:
+//FRAGMENT vbuaa=_deref_pbuc1
+lda {c1}
+//FRAGMENT vbuxx=_deref_pbuc1
+ldx {c1}
+//FRAGMENT vbuaa_lt_vbuz1_then_la1
+cmp {z1}
+bcc {la1}
+//FRAGMENT vbuaa=vbuz1_minus_1
+lda {z1}
+sec
+sbc #1
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT vbuaa=vbuz1
+lda {z1}
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//FRAGMENT 0_eq_vbuaa_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vbuaa=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+//FRAGMENT vbuxx=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tax
+//FRAGMENT vbuyy=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tay
+//FRAGMENT vbuaa=_deref_pbuc1_ror_7
+lda {c1}
+rol
+rol
+and #$01
+//FRAGMENT vbuxx=_deref_pbuc1_ror_7
+lda {c1}
+rol
+rol
+and #$01
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_ror_7
+lda {c1}
+rol
+rol
+and #$01
+tay
+//FRAGMENT vbuz1=vbuc1_rol_vbuaa
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_rol_vbuxx
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_rol_vbuyy
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuc1_rol_vbuz1
+lda #{c1}
+ldy {z1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+//FRAGMENT vbuaa=vbuc1_rol_vbuaa
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+//FRAGMENT vbuaa=vbuc1_rol_vbuxx
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+//FRAGMENT vbuaa=vbuc1_rol_vbuyy
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuc1_rol_vbuz1
+lda #{c1}
+ldx {z1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuxx=vbuc1_rol_vbuaa
+tax
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuxx=vbuc1_rol_vbuxx
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuxx=vbuc1_rol_vbuyy
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuc1_rol_vbuz1
+lda #{c1}
+ldy {z1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuyy=vbuc1_rol_vbuaa
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuyy=vbuc1_rol_vbuxx
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tay
+//FRAGMENT vbuyy=vbuc1_rol_vbuyy
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tay
+//FRAGMENT _deref_pbuc1=vbuaa
+sta {c1}
+//FRAGMENT vbuaa=vbuz1_rol_1
+lda {z1}
+asl
+//FRAGMENT vbuxx=vbuz1_rol_1
+lda {z1}
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_1
+lda {z1}
+asl
+tay
+//FRAGMENT vbuz1=vbuaa_rol_1
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_1
+asl
+//FRAGMENT vbuxx=vbuaa_rol_1
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_1
+asl
+tay
+//FRAGMENT vbuz1=vbuxx_rol_1
+txa
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_rol_1
+txa
+asl
+//FRAGMENT vbuxx=vbuxx_rol_1
+txa
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_rol_1
+txa
+asl
+tay
+//FRAGMENT vbuz1=vbuyy_rol_1
+tya
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_rol_1
+tya
+asl
+//FRAGMENT vbuxx=vbuyy_rol_1
+tya
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_rol_1
+tya
+asl
+tay
+//FRAGMENT pbuz1=qbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT pbuz1=qbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+//FRAGMENT pbuz1=qbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuaa=_deref_pbuz1_band_vbuc1
+lda #{c1}
+ldy #0
+and ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1_band_vbuc1
+lda #{c1}
+ldy #0
+and ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1_band_vbuc1
+lda #{c1}
+ldy #0
+and ({z1}),y
+tay
+//FRAGMENT vbuaa=vbuz1_ror_4
+lda {z1}
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuz1_ror_4
+lda {z1}
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuz1_ror_4
+lda {z1}
+lsr
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuz1=vbuaa_ror_4
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_ror_4
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuaa_ror_4
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuaa_ror_4
+lsr
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuz1=vbuxx_ror_4
+txa
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_4
+txa
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuxx_ror_4
+txa
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuxx_ror_4
+txa
+lsr
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vbuz1=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=vbuyy_ror_4
+tya
+lsr
+lsr
+lsr
+lsr
+tay
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuaa=vbuz1_ror_6
+lda {z1}
+rol
+rol
+rol
+and #$03
+//FRAGMENT vbuxx=vbuz1_ror_6
+lda {z1}
+rol
+rol
+rol
+and #$03
+tax
+//FRAGMENT vbuyy=vbuz1_ror_6
+lda {z1}
+rol
+rol
+rol
+and #$03
+tay
+//FRAGMENT vbuz1=vbuaa_ror_6
+rol
+rol
+rol
+and #$03
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_ror_6
+rol
+rol
+rol
+and #$03
+//FRAGMENT vbuxx=vbuaa_ror_6
+rol
+rol
+rol
+and #$03
+tax
+//FRAGMENT vbuyy=vbuaa_ror_6
+rol
+rol
+rol
+and #$03
+tay
+//FRAGMENT vbuz1=vbuxx_ror_6
+txa
+rol
+rol
+rol
+and #$03
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_6
+txa
+rol
+rol
+rol
+and #$03
+//FRAGMENT vbuxx=vbuxx_ror_6
+txa
+rol
+rol
+rol
+and #$03
+tax
+//FRAGMENT vbuyy=vbuxx_ror_6
+txa
+rol
+rol
+rol
+and #$03
+tay
+//FRAGMENT vbuz1=vbuyy_ror_6
+tya
+rol
+rol
+rol
+and #$03
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_ror_6
+tya
+rol
+rol
+rol
+and #$03
+//FRAGMENT vbuxx=vbuyy_ror_6
+tya
+rol
+rol
+rol
+and #$03
+tax
+//FRAGMENT vbuyy=vbuyy_ror_6
+tya
+rol
+rol
+rol
+and #$03
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuz1
+tay
+lda {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuz1
+lda {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuaa
+ldy {z1}
+sta {c1},y
+//FRAGMENT _deref_pbuz1=vbuxx
+txa
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=vbuyy
+tya
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuaa_le_vbuz1_then_la1
+ldy {z1}
+sta $ff
+cpy $ff
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuxx
+ldy {z1}
+txa
+sta {c1},y
+//FRAGMENT vwuz1=_word_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT pwuc1_derefidx_vbuaa=vwuz1
+tay
+lda {z1}
+sta {c1},y
+lda {z1}+1
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=vwuz1
+lda {z1}
+sta {c1},x
+lda {z1}+1
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=vwuz1
+lda {z1}
+sta {c1},y
+lda {z1}+1
+sta {c1}+1,y
 //FRAGMENT vbuaa=_lo_pvoz1
 lda {z1}
 //FRAGMENT vbuxx=_lo_pvoz1
 ldx {z1}
-//FRAGMENT _deref_pbuc1=vbuaa
-sta {c1}
 //FRAGMENT vbuaa=_hi_pvoz1
 lda {z1}+1
 //FRAGMENT vbuxx=_hi_pvoz1
 ldx {z1}+1
+//FRAGMENT vbuz1=vbuc1_bor_vbuxx
+txa
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuc1_bor_vbuyy
+tya
+ora #{c1}
+sta {z1}
 //FRAGMENT vbuaa=vbuc1_bor_vbuz1
 lda #{c1}
 ora {z1}
+//FRAGMENT vbuaa=vbuc1_bor_vbuxx
+txa
+ora #{c1}
+//FRAGMENT vbuaa=vbuc1_bor_vbuyy
+tya
+ora #{c1}
 //FRAGMENT vbuxx=vbuc1_bor_vbuz1
 lda #{c1}
 ora {z1}
 tax
+//FRAGMENT vbuxx=vbuc1_bor_vbuxx
+txa
+ora #{c1}
+tax
+//FRAGMENT vbuxx=vbuc1_bor_vbuyy
+tya
+ora #{c1}
+tax
 //FRAGMENT vbuyy=vbuc1_bor_vbuz1
 lda #{c1}
 ora {z1}
 tay
-//FRAGMENT vbuz1=vbuc1_bor_vbuxx
-txa
-ora #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuc1_bor_vbuxx
-txa
-ora #{c1}
-//FRAGMENT vbuxx=vbuc1_bor_vbuxx
-txa
-ora #{c1}
-tax
 //FRAGMENT vbuyy=vbuc1_bor_vbuxx
 txa
 ora #{c1}
 tay
-//FRAGMENT vbuz1=vbuc1_bor_vbuyy
-tya
-ora #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuc1_bor_vbuyy
-tya
-ora #{c1}
-//FRAGMENT vbuxx=vbuc1_bor_vbuyy
-tya
-ora #{c1}
-tax
 //FRAGMENT vbuyy=vbuc1_bor_vbuyy
 tya
 ora #{c1}
 tay
-//FRAGMENT vbuxx_lt_vbuc1_then_la1
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuc2
+lda #{c2}
+sta {c1},x
+//FRAGMENT pwuc1_derefidx_vbuaa=vwuc2
+tay
+lda #<{c2}
+sta {c1},y
+lda #>{c2}
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=vwuc2
+lda #<{c2}
+sta {c1},x
+lda #>{c2}
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=vwuc2
+lda #<{c2}
+sta {c1},y
+lda #>{c2}
+sta {c1}+1,y
+//FRAGMENT vbuxx=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+tay
+//FRAGMENT vbuz1=vbuxx
+stx {z1}
+//FRAGMENT pbuc1_derefidx_vbuxx=_byte_vwuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT vbuz1=vbuxx_rol_2
+txa
+asl
+asl
+sta {z1}
+//FRAGMENT vbuxx=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuxx_rol_2
+txa
+asl
+asl
+tax
+//FRAGMENT pduc1_derefidx_vbuxx=vduz1
+lda {z1}
+sta {c1},x
+lda {z1}+1
+sta {c1}+1,x
+lda {z1}+2
+sta {c1}+2,x
+lda {z1}+3
+sta {c1}+3,x
+//FRAGMENT vbuaa=_hi_vwuz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_vwuz1
+ldx {z1}+1
+//FRAGMENT vbuz1=vbuaa_band_vbuc1
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_band_vbuc1
+txa
+and #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_band_vbuc1
+tya
+and #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+//FRAGMENT vbuaa=vbuaa_band_vbuc1
+and #{c1}
+//FRAGMENT vbuaa=vbuxx_band_vbuc1
+txa
+and #{c1}
+//FRAGMENT vbuaa=vbuyy_band_vbuc1
+tya
+and #{c1}
+//FRAGMENT vbuxx=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_band_vbuc1
+and #{c1}
+tax
+//FRAGMENT vbuxx=vbuxx_band_vbuc1
+txa
+and #{c1}
+tax
+//FRAGMENT vbuxx=vbuyy_band_vbuc1
+tya
+and #{c1}
+tax
+//FRAGMENT vbuyy=vbuz1_band_vbuc1
+lda #{c1}
+and {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_band_vbuc1
+and #{c1}
+tay
+//FRAGMENT vbuyy=vbuxx_band_vbuc1
+txa
+and #{c1}
+tay
+//FRAGMENT vbuyy=vbuyy_band_vbuc1
+tya
+and #{c1}
+tay
+//FRAGMENT vbuxx_eq_vbuc1_then_la1
 cpx #{c1}
+beq {la1}
+//FRAGMENT vbuxx_neq_vbuc1_then_la1
+cpx #{c1}
+bne {la1}
+//FRAGMENT vbuaa=vbuaa_bor_vbuc1
+ora #{c1}
+//FRAGMENT pwuc1_derefidx_vbuaa=vbuc2
+tay
+lda #{c2}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=vbuc2
+lda #{c2}
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=vbuc2
+lda #{c2}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT vbuz1=vbuaa_rol_4
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_rol_4
+lda {z1}
+asl
+asl
+asl
+asl
+//FRAGMENT vbuaa=vbuaa_rol_4
+asl
+asl
+asl
+asl
+//FRAGMENT vbuaa=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+//FRAGMENT vbuaa=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_4
+lda {z1}
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuaa_rol_4
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_4
+lda {z1}
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuaa_rol_4
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuaa=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+//FRAGMENT vbuxx=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuz2
+lda {z1}
+ora {z2}
+tay
+//FRAGMENT vbuz1=vbuz2_bor_vbuaa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuaa
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuaa
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuaa
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuz2_bor_vbuxx
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuxx
+txa
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuxx
+txa
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuxx
+txa
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuz2_bor_vbuyy
+tya
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bor_vbuyy
+tya
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuyy
+tya
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuyy
+tya
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_bor_vbuz2
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bor_vbuz1
+ora {z1}
+//FRAGMENT vbuxx=vbuaa_bor_vbuz1
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuaa_bor_vbuz1
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_bor_vbuaa
+sta {z1}
+//FRAGMENT vbuaa_lt_vwuz1_then_la1
+ldy {z1}+1
+bne {la1}
+cmp {z1}
 bcc {la1}
+//FRAGMENT vbuaa=_lo_pbuz1
+lda {z1}
+//FRAGMENT vbuxx=_lo_pbuz1
+ldx {z1}
+//FRAGMENT vbuaa=_hi_pbuz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_pbuz1
+ldx {z1}+1
+//FRAGMENT vbuaa=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_vbuc1
+lda #{c1}
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+//FRAGMENT vbuyy=vbuxx_bor_vbuc1
+txa
+ora #{c1}
+tay
 //FRAGMENT _deref_pbuc1=vbuxx
 stx {c1}
+//FRAGMENT vbuaa=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+//FRAGMENT vbuxx=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+tay
+//FRAGMENT 0_neq_vbuaa_then_la1
+cmp #0
+bne {la1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
+ldy {z1}
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
+ldx {z1}
+ldy {c1},x
+//FRAGMENT vbsaa=pbsc1_derefidx_vbuz1
+ldy {z1}
+lda {c1},y
+//FRAGMENT vbsxx=pbsc1_derefidx_vbuz1
+ldy {z1}
+ldx {c1},y
+//FRAGMENT vbsyy=pbsc1_derefidx_vbuz1
+ldx {z1}
+ldy {c1},x
+//FRAGMENT vbuxx=vbuxx_ror_2
+txa
+lsr
+lsr
+tax
+//FRAGMENT vbsxx=vbsxx_minus_vbsc1
+txa
+sec
+sbc #{c1}
+tax
+//FRAGMENT vbsxx_ge_0_then_la1
+cpx #0
+bpl {la1}
+//FRAGMENT vbuxx_neq_0_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT vbuaa=vbuz1_rol_2
+lda {z1}
+asl
+asl
+//FRAGMENT vbuyy=vbuz1_rol_2
+lda {z1}
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuaa_plus_vbuz2
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_plus_vbuz2
+txa
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_plus_vbuz2
+tya
+clc
+adc {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+//FRAGMENT vbuaa=vbuaa_plus_vbuz1
+clc
+adc {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+//FRAGMENT vbuxx=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+tax
+//FRAGMENT vbuxx=vbuaa_plus_vbuz1
+clc
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+tax
+//FRAGMENT vbuxx=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_plus_vbuz2
+lda {z1}
+clc
+adc {z2}
+tay
+//FRAGMENT vbuyy=vbuaa_plus_vbuz1
+clc
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_plus_vbuz1
+txa
+clc
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuyy_plus_vbuz1
+tya
+clc
+adc {z1}
+tay
+//FRAGMENT vbuaa=_lo_vwuz1
+lda {z1}
+//FRAGMENT vbuxx=_lo_vwuz1
+ldx {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx
+lda {c1},x
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy
+lda {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa
+tay
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa
+tax
+ldy {c1},x
+//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuaa
+tay
+clc
+lda {z2}
+adc {c1},y
+sta {z1}
+lda {z2}+1
+adc {c1}+1,y
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuxx
+clc
+lda {z2}
+adc {c1},x
+sta {z1}
+lda {z2}+1
+adc {c1}+1,x
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuyy
+clc
+lda {z2}
+adc {c1},y
+sta {z1}
+lda {z2}+1
+adc {c1}+1,y
+sta {z1}+1
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_rol_1
+ldy {z1}
+lda {c1},y
+asl
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_rol_1
+ldx {z1}
+lda {c1},x
+asl
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_rol_1
+ldy {z1}
+lda {c1},y
+asl
+tay
+//FRAGMENT pbuz1=pbuz2_plus_vbuaa
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_vbuxx
+txa
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz2_plus_vbuyy
+tya
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT _deref_pbuc1_neq_pbuc2_derefidx_vbuaa_then_la1
+tay
+lda {c1}
+cmp {c2},y
+bne {la1}
+//FRAGMENT _deref_pbuc1_neq_pbuc2_derefidx_vbuxx_then_la1
+lda {c2},x
+cmp {c1}
+bne {la1}
+//FRAGMENT _deref_pbuc1_neq_pbuc2_derefidx_vbuyy_then_la1
+lda {c1}
+cmp {c2},y
+bne {la1}
+//FRAGMENT vbuaa_eq_0_then_la1
+cmp #0
+beq {la1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1_rol_4
+ldy {z1}
+lda {c1},y
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_rol_4
+ldx {z1}
+lda {c1},x
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_rol_4
+ldy {z1}
+lda {c1},y
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_rol_4
+lda {c1},x
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_rol_4
+lda {c1},x
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_rol_4
+lda {c1},x
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_rol_4
+lda {c1},x
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuaa=vbuz1_bor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+ora {c1},y
+//FRAGMENT vbuxx=vbuz1_bor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldx {z2}
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuz1_bor_pbuc1_derefidx_vbuz2
+lda {z1}
+ldy {z2}
+ora {c1},y
+tay
+//FRAGMENT vbuz1=vbuaa_bor_pbuc1_derefidx_vbuz2
+ldy {z2}
+ora {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bor_pbuc1_derefidx_vbuz1
+ldy {z1}
+ora {c1},y
+//FRAGMENT vbuxx=vbuaa_bor_pbuc1_derefidx_vbuz1
+ldx {z1}
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_bor_pbuc1_derefidx_vbuz1
+ldy {z1}
+ora {c1},y
+tay
+//FRAGMENT vbuz1=vbuxx_bor_pbuc1_derefidx_vbuz2
+ldy {z2}
+txa
+ora {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+ora {c1},y
+//FRAGMENT vbuxx=vbuxx_bor_pbuc1_derefidx_vbuz1
+txa
+ldx {z1}
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_bor_pbuc1_derefidx_vbuz1
+ldy {z1}
+txa
+ora {c1},y
+tay
+//FRAGMENT vbuz1=vbuyy_bor_pbuc1_derefidx_vbuz2
+tya
+ldy {z2}
+ora {c1},y
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bor_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+ora {c1},y
+//FRAGMENT vbuxx=vbuyy_bor_pbuc1_derefidx_vbuz1
+ldx {z1}
+tya
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_bor_pbuc1_derefidx_vbuz1
+tya
+ldy {z1}
+ora {c1},y
+tay
+//FRAGMENT vbuz1=vbuz2_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ora {z1}
+//FRAGMENT vbuxx=vbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuz1_bor_pbuc1_derefidx_vbuxx
+lda {c1},x
+ora {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_bor_pbuc1_derefidx_vbuxx
+ora {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bor_pbuc1_derefidx_vbuxx
+ora {c1},x
+//FRAGMENT vbuxx=vbuaa_bor_pbuc1_derefidx_vbuxx
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuaa_bor_pbuc1_derefidx_vbuxx
+ora {c1},x
+tay
+//FRAGMENT vbuz1=vbuxx_bor_pbuc1_derefidx_vbuxx
+txa
+ora {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_pbuc1_derefidx_vbuxx
+txa
+ora {c1},x
+//FRAGMENT vbuxx=vbuxx_bor_pbuc1_derefidx_vbuxx
+txa
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuxx_bor_pbuc1_derefidx_vbuxx
+txa
+ora {c1},x
+tay
+//FRAGMENT vbuz1=vbuyy_bor_pbuc1_derefidx_vbuxx
+tya
+ora {c1},x
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bor_pbuc1_derefidx_vbuxx
+tya
+ora {c1},x
+//FRAGMENT vbuxx=vbuyy_bor_pbuc1_derefidx_vbuxx
+tya
+ora {c1},x
+tax
+//FRAGMENT vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx
+tya
+ora {c1},x
+tay
+//FRAGMENT vbuxx=vbuxx_rol_vbuz1
+txa
+ldx {z1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuz1=vbuz1_rol_vbuaa
+tay
+lda {z1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_rol_vbuaa
+tay
+txa
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuz1=vbuz1_rol_vbuxx
+lda {z1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_rol_vbuxx
+txa
+tax
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuz1=vbuz1_rol_vbuyy
+lda {z1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_rol_vbuyy
+txa
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuaa=_bnot__deref_pbuz1
+ldy #0
+lda ({z1}),y
+eor #$ff
+//FRAGMENT vbuxx=_bnot__deref_pbuz1
+ldy #0
+lda ({z1}),y
+eor #$ff
+tax
+//FRAGMENT vbuyy=_bnot__deref_pbuz1
+ldy #0
+lda ({z1}),y
+eor #$ff
+tay
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuaa
+and {c1}
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuxx
+txa
+and {c1}
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuyy
+tya
+and {c1}
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuz1
+lda {c1}
+and {z1}
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuaa
+and {c1}
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuxx
+txa
+and {c1}
+//FRAGMENT vbuaa=_deref_pbuc1_band_vbuyy
+tya
+and {c1}
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuz1
+lda {c1}
+and {z1}
+tax
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuaa
+and {c1}
+tax
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuxx
+txa
+and {c1}
+tax
+//FRAGMENT vbuxx=_deref_pbuc1_band_vbuyy
+tya
+and {c1}
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuz1
+lda {c1}
+and {z1}
+tay
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuaa
+and {c1}
+tay
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuxx
+txa
+and {c1}
+tay
+//FRAGMENT vbuyy=_deref_pbuc1_band_vbuyy
+tya
+and {c1}
+tay
+//FRAGMENT vbuz1=vbuaa_bor_vbuxx
+stx $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_bor_vbuxx
+stx $ff
+ora $ff
+//FRAGMENT vbuxx=vbuaa_bor_vbuxx
+stx $ff
+ora $ff
+tax
+//FRAGMENT vbuyy=vbuaa_bor_vbuxx
+stx $ff
+ora $ff
+tay
+//FRAGMENT vbuz1=vbuxx_bor_vbuz2
+txa
+ora {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bor_vbuxx
+stx {z1}
+//FRAGMENT vbuxx=vbuz1_minus_1
+ldx {z1}
+dex
+//FRAGMENT vbuz1_le_vbuxx_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vwuz1=vbuaa_rol_vbuz2
+ldy {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=vbuxx_rol_vbuz2
+ldy {z2}
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=vbuyy_rol_vbuz2
+tya
+ldy {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuxx_lt_vbuz1_then_la1
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuxx_le_vbuz1_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx_lt_vwuz1_then_la1
+lda {z1}+1
+bne {la1}
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuyy_lt_vwuz1_then_la1
+lda {z1}+1
+bne {la1}
+cpy {z1}
+bcc {la1}
 //FRAGMENT vbuyy=_lo_pvoz1
 ldy {z1}
 //FRAGMENT _deref_pbuc1=vbuyy
 sty {c1}
 //FRAGMENT vbuyy=_hi_pvoz1
 ldy {z1}+1
+//FRAGMENT vbuyy=_lo_vwuz1
+ldy {z1}
+//FRAGMENT vbuyy=_hi_vwuz1
+ldy {z1}+1
+//FRAGMENT vbuyy=vbuz1
+ldy {z1}
+//FRAGMENT vbuyy=_lo_pbuz1
+ldy {z1}
+//FRAGMENT vbuz1=vbuyy
+sty {z1}
+//FRAGMENT 0_neq_vbuxx_then_la1
+cpx #0
+bne {la1}
+//FRAGMENT 0_neq_vbuyy_then_la1
+cpy #0
+bne {la1}
 //FRAGMENT vbuxx=vbuc1
 ldx #{c1}
-//FRAGMENT pbuz1=pbuz2_plus_vwuz1
+//FRAGMENT vbuz1=vbuxx_minus_1
+dex
+stx {z1}
+//FRAGMENT vbuxx=_inc_vbuxx
+inx
+//FRAGMENT vbuaa=vbuxx_minus_1
+txa
+sec
+sbc #1
+//FRAGMENT vbuyy=vbuz1_minus_1
 lda {z1}
-clc
-adc {z2}
+tay
+dey
+//FRAGMENT vbuyy=vbuxx_minus_1
+txa
+tay
+dey
+//FRAGMENT vbuxx_eq_0_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT vbuyy_eq_0_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vbuyy=vbuc1
+ldy #{c1}
+//FRAGMENT vbuyy=_inc_vbuyy
+iny
+//FRAGMENT vbuyy_neq_vbuc1_then_la1
+cpy #{c1}
+bne {la1}
+//FRAGMENT vbuxx=vbuxx_ror_1
+txa
+lsr
+tax
+//FRAGMENT vbsxx=vbsxx_minus_1
+dex
+//FRAGMENT vbsxx=vbsxx_minus_2
+dex
+dex
+//FRAGMENT vbuaa=vbuc1
+lda #{c1}
+//FRAGMENT vbuxx=vbuyy
+tya
+tax
+//FRAGMENT vbuaa=vbuxx
+txa
+//FRAGMENT vbuaa=vbuyy
+tya
+//FRAGMENT vbuyy=vbuxx
+txa
+tay
+//FRAGMENT vbuxx=vbuaa
+tax
+//FRAGMENT vbuyy=vbuaa
+tay
+//FRAGMENT 0_eq_vbuxx_then_la1
+cpx #0
+beq {la1}
+//FRAGMENT 0_eq_vbuyy_then_la1
+cpy #0
+beq {la1}
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx
+lda {c1},x
+tax
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy
+ldx {c1},y
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx
+ldy {c1},x
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy
+lda {c1},y
+tay
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuaa
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuaa
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuxx
+tay
+txa
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuxx
+txa
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuz1=vbuyy
+tya
+ldy {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuyy
+tax
+tya
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuxx=vbuyy
+tya
+sta {c1},x
+//FRAGMENT vbuz1=vbuyy_bor_vbuxx
+txa
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bor_vbuaa
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vduz1=vduz1_ror_1
+lsr {z1}+3
+ror {z1}+2
+ror {z1}+1
+ror {z1}
+//FRAGMENT vwuz1=vwuz1_bxor_vwuz2
+lda {z1}
+eor {z2}
 sta {z1}
 lda {z1}+1
-adc {z2}+1
+eor {z2}+1
 sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_vbuz2
+ldy {z2}
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vbuz1=vbuz1_bor_vbuaa
+ora {z1}
+sta {z1}
 //FRAGMENT pwuz1=pwuc1_plus_vwuz1
 clc
 lda {z1}
@@ -268,25 +2581,597 @@ sta {z1}
 lda {z1}+1
 adc #>{c1}
 sta {z1}+1
-//FRAGMENT vbuz1=_deref_pbuc1
+//FRAGMENT pduz1=pduc1_plus_vwuz1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT pbuz1=pbuz1_plus_vbuaa
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
+//FRAGMENT pbuz1=pbuz2_plus_vwuz1
+lda {z1}
+clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vduz1=vbuc1
+lda #{c1}
+sta {z1}
+lda #0
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc1_derefidx_vbuz1_plus_1
+ldy {z1}
+lda {c1},y
+inc
+sta {c1},y
+//FRAGMENT vwuz1=vwuz1_plus_vwuc1
+clc
+lda {z1}
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz1_plus_2
+lda {z1}
+clc
+adc #2
+sta {z1}
+//FRAGMENT vwuz1=_inc_vwuz2
+clc
+lda {z2}
+adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuz1=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+sta {z1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuz1
+lda {c1}
+and {z1}
+sta {c1}
+//FRAGMENT vduz1=vwuc1
+NO_SYNTHESIS
+//FRAGMENT pbuz1_neq_pbuc1_then_la1
+lda {z1}+1
+cmp #>{c1}
+bne {la1}
+lda {z1}
+cmp #<{c1}
+bne {la1}
+//FRAGMENT _deref_pbuc1=_deref_pbuz1
+ldy #0
+lda ({z1}),y
+sta {c1}
+//FRAGMENT vduz1=_deref_pduc1
 lda {c1}
 sta {z1}
+lda {c1}+1
+sta {z1}+1
+lda {c1}+2
+sta {z1}+2
+lda {c1}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuc1_rol_vbuz2
+ldy {z2}
+lda #<{c1}
+sta {z1}
+lda #>{c1}+1
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_plus_vwuz3
+lda {z2}
+clc
+adc {z3}
+sta {z1}
+lda {z2}+1
+adc {z3}+1
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vbuz3
+lda {z3}
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT pbuc1_derefidx_vbuaa=pbuc1_derefidx_vbuaa_plus_1
+tay
+lda {c1},y
+inc
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=pbuc1_derefidx_vbuxx_plus_1
+lda {c1},x
+inc
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=pbuc1_derefidx_vbuyy_plus_1
+lda {c1},y
+inc
+sta {c1},y
+//FRAGMENT vbuxx=vbuxx_plus_2
+inx
+inx
+//FRAGMENT vbuaa=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+//FRAGMENT vbuxx=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+tax
+//FRAGMENT vbuyy=_bnot__deref_pbuc1
+lda {c1}
+eor #$ff
+tay
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuaa
+and {c1}
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuxx
+txa
+and {c1}
+sta {c1}
+//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuyy
+tya
+and {c1}
+sta {c1}
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuc2
+tay
+lda #{c2}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuyy=vbuc2
+lda #{c2}
+sta {c1},y
+//FRAGMENT vbuaa_eq_vbuc1_then_la1
+cmp #{c1}
+beq {la1}
+//FRAGMENT vbuaa_neq_vbuc1_then_la1
+cmp #{c1}
+bne {la1}
+//FRAGMENT vwuz1=vwuc1_rol_vbuaa
+tay
+lda #<{c1}
+sta {z1}
+lda #>{c1}+1
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vwuz1=vwuc1_rol_vbuxx
+lda #<{c1}
+sta {z1}
+lda #>{c1}+1
+sta {z1}+1
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dex
+bne !-
+!e:
+//FRAGMENT vwuz1=vwuc1_rol_vbuyy
+lda #<{c1}
+sta {z1}
+lda #>{c1}+1
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vbuz1=vbuyy_bor_vbuz2
+tya
+ora {z2}
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_bor_vbuz1
+txa
+ora {z1}
+//FRAGMENT vbuaa=vbuyy_bor_vbuz1
+tya
+ora {z1}
+//FRAGMENT vbuxx=vbuxx_bor_vbuz1
+txa
+ora {z1}
+tax
+//FRAGMENT vbuxx=vbuyy_bor_vbuz1
+tya
+ora {z1}
+tax
+//FRAGMENT vbuyy=vbuxx_bor_vbuz1
+txa
+ora {z1}
+tay
+//FRAGMENT vbuyy=vbuyy_bor_vbuz1
+tya
+ora {z1}
+tay
+//FRAGMENT vwuz1=_word_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_vbuxx
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+cpx #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dex
+bne !-
+!e:
+//FRAGMENT vwuz1=vwuz2_rol_vbuyy
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+cpy #0
+beq !e+
+!:
+asl {z1}
+rol {z1}+1
+dey
+bne !-
+!e:
+//FRAGMENT vduz1=vduz2_plus_vbuaa
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vbuxx
+txa
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_plus_vbuyy
+tya
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vbuz1=vbuaa_bor_vbuc1
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuxx=vbuaa_bor_vbuc1
+ora #{c1}
+tax
+//FRAGMENT vbuyy=vbuaa_bor_vbuc1
+ora #{c1}
+tay
+//FRAGMENT vbuz1=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+//FRAGMENT vbuxx=vbuyy_bor_vbuc1
+tya
+ora #{c1}
+tax
+//FRAGMENT vbuyy_neq_0_then_la1
+cpy #0
+bne {la1}
+//FRAGMENT vbuyy=vbuyy_plus_2
+iny
+iny
+//FRAGMENT vbuaa=_inc_vbuaa
+inc
+//FRAGMENT vbuyy_lt_vbuz1_then_la1
+cpy {z1}
+bcc {la1}
+//FRAGMENT vbuyy=_deref_pbuc1
+ldy {c1}
+//FRAGMENT vbuaa=vbuaa_bor_vbuyy
+sty $ff
+ora $ff
+//FRAGMENT vbuz1=vbuaa_bor_vbuyy
+sty $ff
+ora $ff
+sta {z1}
+//FRAGMENT vbuyy_eq_vbuc1_then_la1
+cpy #{c1}
+beq {la1}
+//FRAGMENT vwuz1=vwuz1_band_vbuc1
+lda #{c1}
+and {z1}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_plus_vbuaa
+clc
+adc {z1}
+sta {z1}
+lda {z1}+1
+adc #0
+sta {z1}+1
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vbuz1=vbuaa_bor_vbuz1
+ora {z1}
+sta {z1}
+//FRAGMENT vbuz1=_deref_pbuc1_band__deref_pbuc2
+lda {c1}
+and {c2}
+sta {z1}
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT pbuz1=_inc_pbuz2
+clc
+lda {z2}
+adc #1
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+//FRAGMENT _deref_pbuz1=vbuc1
+lda #{c1}
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1_ge_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz1_minus_vbuz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuc1_band__deref_pbuc2
+lda {c1}
+and {c2}
+//FRAGMENT vbuxx=_deref_pbuc1_band__deref_pbuc2
+lda {c1}
+and {c2}
+tax
+//FRAGMENT vbuyy=_deref_pbuc1_band__deref_pbuc2
+lda {c1}
+and {c2}
+tay
+//FRAGMENT pbuc1_derefidx_vbuaa=vbuaa
+tax
+sta {c1},x
+//FRAGMENT vwuz1=_word_vbuaa
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vbuz1_lt_vbuaa_then_la1
+cmp {z1}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
+lda {c1},x
+ldy #0
+sta ({z1}),y
+//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
+lda {c1},y
+ldy #0
+sta ({z1}),y
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuz2
+ldy {z2}
+lda ({z1}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuaa
+tay
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuaa
+tay
+lda ({z1}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuxx
+txa
+tay
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuxx
+txa
+tay
+lda ({z1}),y
+tay
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuyy
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuaa=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+//FRAGMENT vbuxx=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+tax
+//FRAGMENT vbuyy=pbuz1_derefidx_vbuyy
+lda ({z1}),y
+tay
+//FRAGMENT vbuxx_ge_vbuz1_then_la1
+cpx {z1}
+bcs {la1}
+//FRAGMENT vbuaa_ge_vbuz1_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuz1
+txa
+sec
+sbc {z1}
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuaa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuaa
+sta $ff
+txa
+sec
+sbc $ff
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuxx
+txa
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuxx
+lda #0
+tax
+//FRAGMENT vbuz1=vbuz1_minus_vbuyy
+tya
+eor #$ff
+sec
+adc {z1}
+sta {z1}
+//FRAGMENT vbuxx=vbuxx_minus_vbuyy
+txa
+sty $ff
+sec
+sbc $ff
+tax
+//FRAGMENT vbuz1_ge_vbuxx_then_la1
+lda {z1}
+stx $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuz1_ge_vbuyy_then_la1
+lda {z1}
+sty $ff
+cmp $ff
+bcs {la1}
+//FRAGMENT vbuxx_ge_vbuyy_then_la1
+sty $ff
+cpx $ff
+bcs  {la1}
+//FRAGMENT vbuz1_lt_vbuxx_then_la1
+cpx {z1}
+beq !+
+bcs {la1}
+!:
+//FRAGMENT vbuz1_lt_vbuyy_then_la1
+cpy {z1}
+beq !+
+bcs {la1}
+!:
 //FRAGMENT vbuz1=vbuz2_plus_1
 lda {z2}
 inc
 sta {z1}
-//FRAGMENT vbuaa=_deref_pbuc1
-lda {c1}
-//FRAGMENT vbuxx=_deref_pbuc1
-ldx {c1}
 //FRAGMENT vbuz1=vbuaa_plus_1
 inc
 sta {z1}
 //FRAGMENT vbuz1=vbuxx_plus_1
 inx
 stx {z1}
-//FRAGMENT vbuyy=_deref_pbuc1
-ldy {c1}
 //FRAGMENT vbuz1=vbuyy_plus_1
 iny
 sty {z1}
@@ -325,35 +3210,575 @@ inc
 tay
 //FRAGMENT vbuyy=vbuyy_plus_1
 iny
-//FRAGMENT 0_neq_pbuc1_derefidx_vbuz1_then_la1
-ldy {z1}
-lda {c1},y
-cmp #0
-bne {la1}
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
-ldy {z2}
-lda {c1},y
+//FRAGMENT vwsz1=vwsc1
+lda #<{c1}
 sta {z1}
-//FRAGMENT pbuz1=_inc_pbuz2
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT isr_rom_sys_cx16_entry
+
+//FRAGMENT vwsz1=vwsz1_plus_vwsz2
+lda {z1}
 clc
+adc {z2}
+sta {z1}
+lda {z1}+1
+adc {z2}+1
+sta {z1}+1
+//FRAGMENT vwsz1_le_vwsc1_then_la1
+lda #<{c1}
+cmp {z1}
+lda #>{c1}
+sbc {z1}+1
+bvc !+
+eor #$80
+!:
+bpl {la1}
+//FRAGMENT vwsz1=vbsc1
+lda #<{c1}
+sta {z1}
+lda #>{c1}
+sta {z1}+1
+//FRAGMENT vwsz1=vwsz2
 lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwsz1=_neg_vwsz2
+sec
+lda #0
+sbc {z2}
+sta {z1}
+lda #0
+sbc {z2}+1
+sta {z1}+1
+//FRAGMENT vwsz1_ge_0_then_la1
+lda {z1}+1
+bpl {la1}
+//FRAGMENT _deref_(_deref_qbuc1)=vbuz1
+lda {z1}
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT isr_rom_sys_cx16_exit
+jmp $e034
+//FRAGMENT _deref_qprc1=pprc2
+lda #<{c2}
+sta {c1}
+lda #>{c2}
+sta {c1}+1
+//FRAGMENT vbuz1=_deref_(_deref_qbuc1)
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+lda ($fe),y
+sta {z1}
+//FRAGMENT vduz1=_dword_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_band_vbuc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz2_band_vwuc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz2_band_vwsc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz2_band_vduc1
+lda {z2}
+and #<{c1}
+sta {z1}
+lda {z2}+1
+and #>{c1}
+sta {z1}+1
+lda {z2}+2
+and #<{c1}>>$10
+sta {z1}+2
+lda {z2}+3
+and #>{c1}>>$10
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_8
+lda #0
+sta {z1}
+lda {z2}
+sta {z1}+1
+lda {z2}+1
+sta {z1}+2
+lda {z2}+2
+sta {z1}+3
+//FRAGMENT vduz1=vduz2_rol_1
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+lda {z2}+2
+rol
+sta {z1}+2
+lda {z2}+3
+rol
+sta {z1}+3
+//FRAGMENT vbuz1=vbuz2_ror_vbuz3
+lda {z2}
+ldy {z3}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuz1=_dec_vbuz1
+dec {z1}
+//FRAGMENT vduz1=vduz1_plus_vbuc1
+lda {z1}
+clc
+adc #{c1}
+sta {z1}
+bcc !+
+inc {z1}+1
+bne !+
+inc {z1}+2
+bne !+
+inc {z1}+3
+!:
+//FRAGMENT vduz1=vduz1_plus_1
+lda {z1}
+clc
 adc #1
 sta {z1}
-lda {z2}+1
+lda {z1}+1
 adc #0
 sta {z1}+1
-//FRAGMENT pbuz1_neq_pbuc1_then_la1
-lda {z1}+1
-cmp #>{c1}
-bne {la1}
-lda {z1}
-cmp #<{c1}
-bne {la1}
-//FRAGMENT vbuz1=_lo_pbuz2
-lda {z2}
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT _deref_(_deref_qbuc1)=vbuaa
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=vbuxx
+txa
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT _deref_(_deref_qbuc1)=vbuyy
+tya
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+sta ($fe),y
+//FRAGMENT vbuaa=_deref_(_deref_qbuc1)
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+lda ($fe),y
+//FRAGMENT vbuxx=_deref_(_deref_qbuc1)
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+lda ($fe),y
+tax
+//FRAGMENT vbuyy=_deref_(_deref_qbuc1)
+ldy {c1}
+sty $fe
+ldy {c1}+1
+sty $ff
+ldy #0
+lda ($fe),y
+tay
+//FRAGMENT vduz1=_dword_vbuaa
 sta {z1}
-//FRAGMENT vbuz1=_hi_pbuz2
-lda {z2}+1
+lda #0
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vduz1=_dword_vbuxx
+txa
+sta {z1}
+lda #0
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vduz1=_dword_vbuyy
+tya
+sta {z1}
+lda #0
+sta {z1}+1
+sta {z1}+2
+sta {z1}+3
+//FRAGMENT vbuaa=vbuz1_ror_vbuz2
+lda {z1}
+ldy {z2}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuz1_ror_vbuz2
+lda {z1}
+ldx {z2}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuz1_ror_vbuz2
+lda {z1}
+ldy {z2}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuz2_ror_vbuaa
+tay
+lda {z2}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_vbuaa
+tay
+lda {z1}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuz1_ror_vbuaa
+tax
+lda {z1}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuz1_ror_vbuaa
+tay
+lda {z1}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuz2_ror_vbuxx
+lda {z2}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_vbuxx
+lda {z1}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuz1_ror_vbuxx
+lda {z1}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuz1_ror_vbuxx
+lda {z1}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuz2_ror_vbuyy
+lda {z2}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_ror_vbuyy
+lda {z1}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuz1_ror_vbuyy
+lda {z1}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuz1_ror_vbuyy
+lda {z1}
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuxx_ror_vbuz2
+ldy {z2}
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_vbuz1
+ldy {z1}
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuxx_ror_vbuz1
+txa
+ldx {z1}
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuxx_ror_vbuz1
+ldy {z1}
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuxx_ror_vbuaa
+tay
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_vbuaa
+tay
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuxx_ror_vbuaa
+tay
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuxx_ror_vbuaa
+tay
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuxx_ror_vbuxx
+txa
+tay
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_vbuxx
+txa
+tay
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuxx_ror_vbuxx
+txa
+tax
+cpx #0
+beq !e+
+!:
+lsr
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuxx_ror_vbuxx
+txa
+tay
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vbuz1=vbuxx_ror_vbuyy
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_ror_vbuyy
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuxx_ror_vbuyy
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuxx_ror_vbuyy
+txa
+cpy #0
+beq !e+
+!:
+lsr
+dey
+bne !-
+!e:
+tay
+//FRAGMENT vduz1=vduz1_band_vbuc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz1_band_vwuc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz1_band_vwsc1
+NO_SYNTHESIS
+//FRAGMENT vduz1=vduz1_band_vduc1
+lda {z1}
+and #<{c1}
+sta {z1}
+lda {z1}+1
+and #>{c1}
+sta {z1}+1
+lda {z1}+2
+and #<{c1}>>$10
+sta {z1}+2
+lda {z1}+3
+and #>{c1}>>$10
+sta {z1}+3
+//FRAGMENT vduz1=vduz1_rol_8
+lda {z1}+2
+sta {z1}+3
+lda {z1}+1
+sta {z1}+2
+lda {z1}
+sta {z1}+1
+lda #0
 sta {z1}
 //FRAGMENT 0_neq_pbuc1_derefidx_vbuaa_then_la1
 tay
@@ -368,40 +3793,380 @@ bne {la1}
 lda {c1},y
 cmp #0
 bne {la1}
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
-lda {c1},x
-sta {z1}
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
-ldy {z1}
-lda {c1},y
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx
-lda {c1},x
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy
-lda {c1},y
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
-ldy {z1}
-ldx {c1},y
-//FRAGMENT vbuaa=_lo_pbuz1
-lda {z1}
-//FRAGMENT vbuxx=_lo_pbuz1
-ldx {z1}
-//FRAGMENT vbuaa=_hi_pbuz1
-lda {z1}+1
-//FRAGMENT vbuxx=_hi_pbuz1
-ldx {z1}+1
-//FRAGMENT vbuyy=_lo_pbuz1
-ldy {z1}
 //FRAGMENT vbuyy=_hi_pbuz1
 ldy {z1}+1
-//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
-ldx {z1}
-ldy {c1},x
-//FRAGMENT vbuyy=vbuc1
-ldy #{c1}
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy
-ldx {c1},y
-//FRAGMENT vbuyy=_inc_vbuyy
-iny
+//FRAGMENT vduz1_lt_vduc1_then_la1
+lda {z1}+3
+cmp #>{c1}>>$10
+bcc {la1}
+bne !+
+lda {z1}+2
+cmp #<{c1}>>$10
+bcc {la1}
+bne !+
+lda {z1}+1
+cmp #>{c1}
+bcc {la1}
+bne !+
+lda {z1}
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT vduz1=vduz2_plus_vbuc1
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda {z2}+1
+adc #0
+sta {z1}+1
+lda {z2}+2
+adc #0
+sta {z1}+2
+lda {z2}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz2_bor_vbuz3
+lda {z3}
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_ror_5
+lda {z2}+1
+lsr
+sta {z1}+1
+lda {z2}
+ror
+sta {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vwuz1=vwuz2_rol_3
+lda {z2}
+asl
+sta {z1}
+lda {z2}+1
+rol
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vbuz1=_byte_vwuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vwuz1=vwuz2_band_vwuc1
+lda {z2}
+and #<{c1}
+sta {z1}
+lda {z2}+1
+and #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_plus_vwuc1
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT vduz1=vduz1_plus_vwuc1
+lda {z1}
+clc
+adc #<{c1}
+sta {z1}
+lda {z1}+1
+adc #>{c1}
+sta {z1}+1
+lda {z1}+2
+adc #0
+sta {z1}+2
+lda {z1}+3
+adc #0
+sta {z1}+3
+//FRAGMENT vbuz1_lt_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcc {la1}
+//FRAGMENT vbuz1=_byte_vduz2
+lda {z2}
+sta {z1}
+//FRAGMENT vduz1=pduc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1_ge_vduz2_then_la1
+lda {z1}+3
+cmp {z2}+3
+bcc !+
+bne {la1}
+lda {z1}+2
+cmp {z2}+2
+bcc !+
+bne {la1}
+lda {z1}+1
+cmp {z2}+1
+bcc !+
+bne {la1}
+lda {z1}
+cmp {z2}
+bcs {la1}
+!:
+//FRAGMENT vduz1=vduz1_minus_vduz2
+lda {z1}
+sec
+sbc {z2}
+sta {z1}
+lda {z1}+1
+sbc {z2}+1
+sta {z1}+1
+lda {z1}+2
+sbc {z2}+2
+sta {z1}+2
+lda {z1}+3
+sbc {z2}+3
+sta {z1}+3
+//FRAGMENT vwuz1=vwuz2_bor_vbuxx
+txa
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_bor_vbuyy
+tya
+ora {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vbuaa=_byte_vwuz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vwuz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vwuz1
+lda {z1}
+tay
+//FRAGMENT vbuaa_lt_vbuc1_then_la1
+cmp #{c1}
+bcc {la1}
+//FRAGMENT vbuaa=_byte_vduz1
+lda {z1}
+//FRAGMENT vbuxx=_byte_vduz1
+lda {z1}
+tax
+//FRAGMENT vbuyy=_byte_vduz1
+lda {z1}
+tay
+//FRAGMENT vbuz1=vbuaa_rol_2
+asl
+asl
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_rol_2
+tya
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_2
+asl
+asl
+//FRAGMENT vbuaa=vbuxx_rol_2
+txa
+asl
+asl
+//FRAGMENT vbuaa=vbuyy_rol_2
+tya
+asl
+asl
+//FRAGMENT vbuxx=vbuaa_rol_2
+asl
+asl
+tax
+//FRAGMENT vbuxx=vbuyy_rol_2
+tya
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_2
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuxx_rol_2
+txa
+asl
+asl
+tay
+//FRAGMENT vbuyy=vbuyy_rol_2
+tya
+asl
+asl
+tay
+//FRAGMENT vduz1=pduc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuxx
+lda {c1},x
+sta {z1}
+lda {c1}+1,x
+sta {z1}+1
+lda {c1}+2,x
+sta {z1}+2
+lda {c1}+3,x
+sta {z1}+3
+//FRAGMENT vduz1=pduc1_derefidx_vbuyy
+lda {c1},y
+sta {z1}
+lda {c1}+1,y
+sta {z1}+1
+lda {c1}+2,y
+sta {z1}+2
+lda {c1}+3,y
+sta {z1}+3
+//FRAGMENT vbuxx_lt_vbuc1_then_la1
+cpx #{c1}
+bcc {la1}
+//FRAGMENT vbuyy_ge_vbuz1_then_la1
+cpy {z1}
+bcs {la1}
+//FRAGMENT vwuz1=vwuz1_rol_8
+lda {z1}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_bor_vbuxx
+txa
+ora {z1}
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_rol_3
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+//FRAGMENT vwuz1=vwuz1_band_vwuc1
+lda {z1}
+and #<{c1}
+sta {z1}
+lda {z1}+1
+and #>{c1}
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_ror_5
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT isr_rom_min_cx16_entry
+
+//FRAGMENT vbuz1_ge_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcs {la1}
+//FRAGMENT isr_rom_min_cx16_exit
+jmp $e049
+//FRAGMENT pbuz1=pbuc1_plus_pbuc2_derefidx_vbuz2
+ldy {z2}
+lda {c2},y
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuz1=vbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+//FRAGMENT pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz2
+ldy {z2}
+lda {c1},y
+sta ({z1}),y
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1}
+//FRAGMENT pbuz1=pbuc1_plus_pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_pbuc2_derefidx_vbuxx
+lda {c2},x
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pbuz1=pbuc1_plus_pbuc2_derefidx_vbuyy
+lda {c2},y
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+clc
+adc #{c1}
+tax
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuaa
+tay
+lda {c1},y
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuxx
+txa
+tay
+lda {c1},y
+sta ({z1}),y
+//FRAGMENT pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuyy
+lda {c1},y
+sta ({z1}),y
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuxx
+lda {c2},x
+sta {c1}
+//FRAGMENT _deref_pbuc1=pbuc2_derefidx_vbuyy
+lda {c2},y
+sta {c1}
+//FRAGMENT vbuyy_lt_vbuc1_then_la1
+cpy #{c1}
+bcc {la1}
diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java
index 4bc5baabc..7d6835acf 100644
--- a/src/main/java/dk/camelot64/kickc/Compiler.java
+++ b/src/main/java/dk/camelot64/kickc/Compiler.java
@@ -73,7 +73,7 @@ public class Compiler {
       this.upliftCombinations = upliftCombinations;
    }
 
-   void enableZeroPageCoalesce() {
+   public void enableZeroPageCoalesce() {
       this.enableZeroPageCoalasce = true;
    }
 
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfHandling.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfHandling.java
index 514dbf8b4..f493cffa3 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfHandling.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AddressOfHandling.java
@@ -60,6 +60,7 @@ public class Pass1AddressOfHandling extends Pass2SsaOptimization {
    private void updateAddressOfVariable(Variable variable, String stmtStr) {
       if(variable.getType() instanceof SymbolTypeStruct) {
          variable.setKind(Variable.Kind.LOAD_STORE);
+         variable.setVolatile(true);
          getLog().append("Setting struct to load/store in variable affected by address-of " + stmtStr);
          //getLog().append("Setting struct to load/store in variable affected by address-of: " + variable.toString() + " in " + stmtStr);
       } else {
diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
index 4143e59fa..14d79682c 100644
--- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
+++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
@@ -2073,6 +2073,11 @@ public class TestPrograms {
    }
    */
 
+   @Test
+   public void testStructPtr35() throws IOException, URISyntaxException {
+      compileAndCompare("struct-ptr-35.c");
+   }
+
    @Test
    public void testStructPtr34() throws IOException, URISyntaxException {
       compileAndCompare("struct-ptr-34.c");
@@ -5011,6 +5016,7 @@ public class TestPrograms {
    private void testFile(String fileName, Integer upliftCombinations, CompileLog compileLog) throws IOException {
       System.out.println("Testing output for " + fileName);
       Compiler compiler = new Compiler();
+      //compiler.enableZeroPageCoalesce();
       compiler.setWarnFragmentMissing(true);
       compiler.setAsmFragmentBaseFolder(new File("src/main/fragment/").toPath());
       if(compileLog != null) {
diff --git a/src/test/ref/declared-memory-var-3.log b/src/test/ref/declared-memory-var-3.log
index f93a0cd6d..a9c85cf54 100644
--- a/src/test/ref/declared-memory-var-3.log
+++ b/src/test/ref/declared-memory-var-3.log
@@ -32,7 +32,7 @@ SYMBOL TABLE SSA
 const byte OFFSET_STRUCT_FOO_THING1 = 0
 const byte OFFSET_STRUCT_FOO_THING2 = 1
 void __start()
-struct foo bar loadstore = { thing1: 'a', thing2: 'b' }
+volatile struct foo bar loadstore = { thing1: 'a', thing2: 'b' }
 void main()
 byte*~ main::$0
 byte*~ main::$1
@@ -105,7 +105,7 @@ main::@return: scope:[main]  from main
 
 
 VARIABLE REGISTER WEIGHTS
-struct foo bar loadstore = { thing1: 'a', thing2: 'b' }
+volatile struct foo bar loadstore = { thing1: 'a', thing2: 'b' }
 void main()
 byte main::i
 
@@ -172,7 +172,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
 
 FINAL SYMBOL TABLE
 const byte OFFSET_STRUCT_FOO_THING2 = 1
-struct foo bar loadstore mem[2] = { thing1: 'a', thing2: 'b' }
+volatile struct foo bar loadstore mem[2] = { thing1: 'a', thing2: 'b' }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct foo* main::barp = &bar
diff --git a/src/test/ref/declared-memory-var-3.sym b/src/test/ref/declared-memory-var-3.sym
index a1fdfa6cf..9a6228ca8 100644
--- a/src/test/ref/declared-memory-var-3.sym
+++ b/src/test/ref/declared-memory-var-3.sym
@@ -1,5 +1,5 @@
 const byte OFFSET_STRUCT_FOO_THING2 = 1
-struct foo bar loadstore mem[2] = { thing1: 'a', thing2: 'b' }
+volatile struct foo bar loadstore mem[2] = { thing1: 'a', thing2: 'b' }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct foo* main::barp = &bar
diff --git a/src/test/ref/declared-memory-var-4.log b/src/test/ref/declared-memory-var-4.log
index ac030c95a..3222fdecb 100644
--- a/src/test/ref/declared-memory-var-4.log
+++ b/src/test/ref/declared-memory-var-4.log
@@ -49,7 +49,7 @@ const byte OFFSET_STRUCT_FOO_THING1 = 0
 const byte OFFSET_STRUCT_FOO_THING2 = 1
 const byte OFFSET_STRUCT_FOO_THING3 = 2
 void __start()
-struct foo bar loadstore = { thing1: 'a', thing2: 'b', thing3: "qwe" }
+volatile struct foo bar loadstore = { thing1: 'a', thing2: 'b', thing3: "qwe" }
 void main()
 bool~ main::$0
 byte*~ main::$1
@@ -173,7 +173,7 @@ main::@return: scope:[main]  from main::@1
 
 
 VARIABLE REGISTER WEIGHTS
-struct foo bar loadstore = { thing1: 'a', thing2: 'b', thing3: "qwe" }
+volatile struct foo bar loadstore = { thing1: 'a', thing2: 'b', thing3: "qwe" }
 void main()
 byte main::i
 byte main::i#3 7.333333333333333
@@ -295,7 +295,7 @@ Succesful ASM optimization Pass5NextJumpElimination
 FINAL SYMBOL TABLE
 const byte OFFSET_STRUCT_FOO_THING2 = 1
 const byte OFFSET_STRUCT_FOO_THING3 = 2
-struct foo bar loadstore mem[14] = { thing1: 'a', thing2: 'b', thing3: "qwe" }
+volatile struct foo bar loadstore mem[14] = { thing1: 'a', thing2: 'b', thing3: "qwe" }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct foo* main::barp = &bar
diff --git a/src/test/ref/declared-memory-var-4.sym b/src/test/ref/declared-memory-var-4.sym
index 995cdbd62..e74dbb18e 100644
--- a/src/test/ref/declared-memory-var-4.sym
+++ b/src/test/ref/declared-memory-var-4.sym
@@ -1,6 +1,6 @@
 const byte OFFSET_STRUCT_FOO_THING2 = 1
 const byte OFFSET_STRUCT_FOO_THING3 = 2
-struct foo bar loadstore mem[14] = { thing1: 'a', thing2: 'b', thing3: "qwe" }
+volatile struct foo bar loadstore mem[14] = { thing1: 'a', thing2: 'b', thing3: "qwe" }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct foo* main::barp = &bar
diff --git a/src/test/ref/examples/cx16/cx16-bankload.log b/src/test/ref/examples/cx16/cx16-bankload.log
index e39461793..2ff18c214 100644
--- a/src/test/ref/examples/cx16/cx16-bankload.log
+++ b/src/test/ref/examples/cx16/cx16-bankload.log
@@ -2107,7 +2107,7 @@ byte load_to_bank::return#3
 void main()
 byte~ main::$7
 const nomodify dword main::BANK_SPRITE = $12000
-struct VERA_SPRITE main::SPRITE_ATTR loadstore
+volatile struct VERA_SPRITE main::SPRITE_ATTR loadstore
 const nomodify dword main::VRAM_SPRITE = $10000
 const byte* main::filename[7]  = "SPRITE"
 const byte* main::s[$2d]  = "
@@ -5179,7 +5179,7 @@ byte load_to_bank::device
 byte* load_to_bank::filename
 byte load_to_bank::return
 void main()
-struct VERA_SPRITE main::SPRITE_ATTR loadstore
+volatile struct VERA_SPRITE main::SPRITE_ATTR loadstore
 void memcpy_bank_to_vram(dword memcpy_bank_to_vram::vdest , dword memcpy_bank_to_vram::src , dword memcpy_bank_to_vram::num)
 word~ memcpy_bank_to_vram::$0 202.0
 byte~ memcpy_bank_to_vram::$1 202.0
@@ -9668,7 +9668,7 @@ byte* load_to_bank::filename
 byte load_to_bank::return
 void main()
 const nomodify dword main::BANK_SPRITE = $12000
-struct VERA_SPRITE main::SPRITE_ATTR loadstore zp[8]:67
+volatile struct VERA_SPRITE main::SPRITE_ATTR loadstore zp[8]:67
 const nomodify dword main::VRAM_SPRITE = $10000
 const byte* main::filename[7]  = "SPRITE"
 const byte* main::s[$2d]  = "
diff --git a/src/test/ref/examples/cx16/cx16-bankload.sym b/src/test/ref/examples/cx16/cx16-bankload.sym
index ee9f1e6dc..4663dcb23 100644
--- a/src/test/ref/examples/cx16/cx16-bankload.sym
+++ b/src/test/ref/examples/cx16/cx16-bankload.sym
@@ -217,7 +217,7 @@ byte* load_to_bank::filename
 byte load_to_bank::return
 void main()
 const nomodify dword main::BANK_SPRITE = $12000
-struct VERA_SPRITE main::SPRITE_ATTR loadstore zp[8]:67
+volatile struct VERA_SPRITE main::SPRITE_ATTR loadstore zp[8]:67
 const nomodify dword main::VRAM_SPRITE = $10000
 const byte* main::filename[7]  = "SPRITE"
 const byte* main::s[$2d]  = "
diff --git a/src/test/ref/examples/cx16/cx16-sprites.log b/src/test/ref/examples/cx16/cx16-sprites.log
index f66ae0635..964d7f425 100644
--- a/src/test/ref/examples/cx16/cx16-sprites.log
+++ b/src/test/ref/examples/cx16/cx16-sprites.log
@@ -1,6 +1,5 @@
 Resolved forward reference irq_vsync to __interrupt(rom_sys_cx16) void irq_vsync()
 Setting struct to load/store in variable affected by address-of main::$6 = call memcpy_to_vram (byte)>VERA_SPRITE_ATTR main::vram_sprite_attr &SPRITE_ATTR main::$5 
-Setting struct to load/store in variable affected by address-of irq_vsync::$5 = call memcpy_to_vram irq_vsync::vram_sprite_attr_bank irq_vsync::vram_sprite_pos &SPRITE_ATTR+2 4 
 Setting inferred volatile on symbol affected by address-of: setnam::filename_len in asm { ldafilename_len ldxfilename ldyfilename+1 jsr$ffbd  }
 Setting inferred volatile on symbol affected by address-of: setnam::filename in asm { ldafilename_len ldxfilename ldyfilename+1 jsr$ffbd  }
 Setting inferred volatile on symbol affected by address-of: setlfs::device in asm { ldxdevice lda#1 ldy#0 jsr$ffba  }
@@ -239,7 +238,7 @@ const word* SINY[SINY_LEN]  = kickasm {{ .fillword 256, 208+208*sin(i*2*PI/SINY_
 const nomodify byte SINY_LEN = $fb
 const byte SIZEOF_STRUCT_VERA_SPRITE = 8
 const byte SIZEOF_WORD = 2
-struct VERA_SPRITE SPRITE_ATTR loadstore = { ADDR: (word)<SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: (word)$140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
+volatile struct VERA_SPRITE SPRITE_ATTR loadstore = { ADDR: (word)<SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: (word)$140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
 const byte* SPRITE_PIXELS[$40*$40+$200]  = kickasm {{ .var pic = LoadPicture("tut.png")
     // palette: rgb->idx
     .var palette = Hashtable()
@@ -796,7 +795,7 @@ memcpy_to_vram::@2: scope:[memcpy_to_vram]  from memcpy_to_vram::@1
 
 
 VARIABLE REGISTER WEIGHTS
-struct VERA_SPRITE SPRITE_ATTR loadstore = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
+volatile struct VERA_SPRITE SPRITE_ATTR loadstore = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
 void __start()
 __interrupt(rom_sys_cx16) void irq_vsync()
 word~ irq_vsync::$11 22.0
@@ -1806,7 +1805,7 @@ const word* SINY[SINY_LEN]  = kickasm {{ .fillword 256, 208+208*sin(i*2*PI/SINY_
  }}
 const nomodify byte SINY_LEN = $fb
 const byte SIZEOF_STRUCT_VERA_SPRITE = 8
-struct VERA_SPRITE SPRITE_ATTR loadstore mem[8] = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
+volatile struct VERA_SPRITE SPRITE_ATTR loadstore mem[8] = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
 const byte* SPRITE_PIXELS[$40*$40+$200]  = kickasm {{ .var pic = LoadPicture("tut.png")
     // palette: rgb->idx
     .var palette = Hashtable()
diff --git a/src/test/ref/examples/cx16/cx16-sprites.sym b/src/test/ref/examples/cx16/cx16-sprites.sym
index 209f4d324..7358072c6 100644
--- a/src/test/ref/examples/cx16/cx16-sprites.sym
+++ b/src/test/ref/examples/cx16/cx16-sprites.sym
@@ -8,7 +8,7 @@ const word* SINY[SINY_LEN]  = kickasm {{ .fillword 256, 208+208*sin(i*2*PI/SINY_
  }}
 const nomodify byte SINY_LEN = $fb
 const byte SIZEOF_STRUCT_VERA_SPRITE = 8
-struct VERA_SPRITE SPRITE_ATTR loadstore mem[8] = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
+volatile struct VERA_SPRITE SPRITE_ATTR loadstore mem[8] = { ADDR: <SPRITE_PIXELS_VRAM/$20|VERA_SPRITE_8BPP, X: $140-$20, Y: (word)$f0-$20, CTRL1: $c, CTRL2: $f0 }
 const byte* SPRITE_PIXELS[$40*$40+$200]  = kickasm {{ .var pic = LoadPicture("tut.png")
     // palette: rgb->idx
     .var palette = Hashtable()
diff --git a/src/test/ref/examples/mega65/banked-music.log b/src/test/ref/examples/mega65/banked-music.log
index 90528e33d..44f858724 100644
--- a/src/test/ref/examples/mega65/banked-music.log
+++ b/src/test/ref/examples/mega65/banked-music.log
@@ -39,11 +39,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -320,7 +317,7 @@ void* memcpy_dma4::src#1
 byte memcpy_dma4::src_bank
 byte memcpy_dma4::src_bank#0
 byte memcpy_dma4::src_bank#1
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0
 byte~ memoryRemap::$1
@@ -849,7 +846,7 @@ byte memcpy_dma4::dmaMode#0 2.0
 word memcpy_dma4::num
 void* memcpy_dma4::src
 byte memcpy_dma4::src_bank
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0 202.0
 byte~ memoryRemap::$1 67.33333333333333
@@ -1729,7 +1726,7 @@ void* memcpy_dma4::src
 const void* memcpy_dma4::src#0 src = (void*)upperCodeData
 byte memcpy_dma4::src_bank
 const byte memcpy_dma4::src_bank#0 src_bank = 0
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0 reg byte a 202.0
 byte~ memoryRemap::$1 zp[1]:7 67.33333333333333
diff --git a/src/test/ref/examples/mega65/banked-music.sym b/src/test/ref/examples/mega65/banked-music.sym
index 9fafe01b3..6c600dbac 100644
--- a/src/test/ref/examples/mega65/banked-music.sym
+++ b/src/test/ref/examples/mega65/banked-music.sym
@@ -58,7 +58,7 @@ void* memcpy_dma4::src
 const void* memcpy_dma4::src#0 src = (void*)upperCodeData
 byte memcpy_dma4::src_bank
 const byte memcpy_dma4::src_bank#0 src_bank = 0
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0 reg byte a 202.0
 byte~ memoryRemap::$1 zp[1]:7 67.33333333333333
diff --git a/src/test/ref/examples/mega65/dma-test.log b/src/test/ref/examples/mega65/dma-test.log
index 3cdd4eb51..353c1676e 100644
--- a/src/test/ref/examples/mega65/dma-test.log
+++ b/src/test/ref/examples/mega65/dma-test.log
@@ -4,7 +4,6 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&DMA_SCREEN_UP
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&DMA_SCREEN_UP
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -77,7 +76,7 @@ SYMBOL TABLE SSA
 const nomodify byte* DEFAULT_SCREEN = (byte*)$800
 const nomodify struct F018_DMAGIC* DMA = (struct F018_DMAGIC*)$d700
 const nomodify byte DMA_COMMAND_COPY = 0
-struct DMA_LIST_F018B DMA_SCREEN_UP loadstore = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B DMA_SCREEN_UP loadstore = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRBANK = 2
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRLSBTRIG = 0
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRMB = 4
@@ -294,7 +293,7 @@ memoryRemap::@return: scope:[memoryRemap]  from memoryRemap
 
 
 VARIABLE REGISTER WEIGHTS
-struct DMA_LIST_F018B DMA_SCREEN_UP loadstore = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B DMA_SCREEN_UP loadstore = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
 void main()
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore 2.75
@@ -529,7 +528,7 @@ FINAL SYMBOL TABLE
 const nomodify byte* DEFAULT_SCREEN = (byte*) 2048
 const nomodify struct F018_DMAGIC* DMA = (struct F018_DMAGIC*) 55040
 const nomodify byte DMA_COMMAND_COPY = 0
-struct DMA_LIST_F018B DMA_SCREEN_UP loadstore mem[12] = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B DMA_SCREEN_UP loadstore mem[12] = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRBANK = 2
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRMB = 4
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRMSB = 1
diff --git a/src/test/ref/examples/mega65/dma-test.sym b/src/test/ref/examples/mega65/dma-test.sym
index 495b48ba0..6780f68d5 100644
--- a/src/test/ref/examples/mega65/dma-test.sym
+++ b/src/test/ref/examples/mega65/dma-test.sym
@@ -1,7 +1,7 @@
 const nomodify byte* DEFAULT_SCREEN = (byte*) 2048
 const nomodify struct F018_DMAGIC* DMA = (struct F018_DMAGIC*) 55040
 const nomodify byte DMA_COMMAND_COPY = 0
-struct DMA_LIST_F018B DMA_SCREEN_UP loadstore mem[12] = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B DMA_SCREEN_UP loadstore mem[12] = { command: DMA_COMMAND_COPY, count: (word)$18*$50, src: DEFAULT_SCREEN+$50, src_bank: 0, dest: DEFAULT_SCREEN, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRBANK = 2
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRMB = 4
 const byte OFFSET_STRUCT_F018_DMAGIC_ADDRMSB = 1
diff --git a/src/test/ref/examples/mega65/dma-test2.log b/src/test/ref/examples/mega65/dma-test2.log
index 3449f0656..657acb7ee 100644
--- a/src/test/ref/examples/mega65/dma-test2.log
+++ b/src/test/ref/examples/mega65/dma-test2.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -149,7 +146,7 @@ word memcpy_dma::num#1
 void* memcpy_dma::src
 void* memcpy_dma::src#0
 void* memcpy_dma::src#1
-struct DMA_LIST_F018B memcpy_dma_command loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0
 byte~ memoryRemap::$1
@@ -396,7 +393,7 @@ byte memcpy_dma::dmaMode
 byte memcpy_dma::dmaMode#0 2.4444444444444446
 word memcpy_dma::num
 void* memcpy_dma::src
-struct DMA_LIST_F018B memcpy_dma_command loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore 2.75
 word memoryRemap::lowerPageOffset
@@ -716,7 +713,7 @@ word memcpy_dma::num
 const word memcpy_dma::num#0 num = (word)$18*$50
 void* memcpy_dma::src
 const void* memcpy_dma::src#0 src = (void*)DEFAULT_SCREEN+$50
-struct DMA_LIST_F018B memcpy_dma_command loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore zp[1]:2 2.75
 word memoryRemap::lowerPageOffset
diff --git a/src/test/ref/examples/mega65/dma-test2.sym b/src/test/ref/examples/mega65/dma-test2.sym
index d70117ca8..1dd7a73b0 100644
--- a/src/test/ref/examples/mega65/dma-test2.sym
+++ b/src/test/ref/examples/mega65/dma-test2.sym
@@ -18,7 +18,7 @@ word memcpy_dma::num
 const word memcpy_dma::num#0 num = (word)$18*$50
 void* memcpy_dma::src
 const void* memcpy_dma::src#0 src = (void*)DEFAULT_SCREEN+$50
-struct DMA_LIST_F018B memcpy_dma_command loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore zp[1]:2 2.75
 word memoryRemap::lowerPageOffset
diff --git a/src/test/ref/examples/mega65/dma-test3.log b/src/test/ref/examples/mega65/dma-test3.log
index a6b1c1937..37c71f538 100644
--- a/src/test/ref/examples/mega65/dma-test3.log
+++ b/src/test/ref/examples/mega65/dma-test3.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -163,7 +160,7 @@ void* memcpy_dma4::src#1
 byte memcpy_dma4::src_bank
 byte memcpy_dma4::src_bank#0
 byte memcpy_dma4::src_bank#1
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 byte~ memoryRemap::$0
 byte~ memoryRemap::$1
@@ -426,7 +423,7 @@ byte memcpy_dma4::dmaMode#0 2.0
 word memcpy_dma4::num
 void* memcpy_dma4::src
 byte memcpy_dma4::src_bank
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore 2.75
 word memoryRemap::lowerPageOffset
@@ -768,7 +765,7 @@ void* memcpy_dma4::src
 const void* memcpy_dma4::src#0 src = (void*)DEFAULT_SCREEN+$50
 byte memcpy_dma4::src_bank
 const byte memcpy_dma4::src_bank#0 src_bank = 0
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore zp[1]:2 2.75
 word memoryRemap::lowerPageOffset
diff --git a/src/test/ref/examples/mega65/dma-test3.sym b/src/test/ref/examples/mega65/dma-test3.sym
index 1034f07ea..41040bff8 100644
--- a/src/test/ref/examples/mega65/dma-test3.sym
+++ b/src/test/ref/examples/mega65/dma-test3.sym
@@ -24,7 +24,7 @@ void* memcpy_dma4::src
 const void* memcpy_dma4::src#0 src = (void*)DEFAULT_SCREEN+$50
 byte memcpy_dma4::src_bank
 const byte memcpy_dma4::src_bank#0 src_bank = 0
-struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memcpy_dma_command4 loadstore mem[12] = { command: DMA_COMMAND_COPY, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 void memoryRemap(byte memoryRemap::remapBlocks , word memoryRemap::lowerPageOffset , word memoryRemap::upperPageOffset)
 volatile byte memoryRemap::aVal loadstore zp[1]:2 2.75
 word memoryRemap::lowerPageOffset
diff --git a/src/test/ref/examples/mega65/dma-test4.log b/src/test/ref/examples/mega65/dma-test4.log
index 2575acdd8..bbd4f2ce5 100644
--- a/src/test/ref/examples/mega65/dma-test4.log
+++ b/src/test/ref/examples/mega65/dma-test4.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
diff --git a/src/test/ref/examples/mega65/dma-test5.log b/src/test/ref/examples/mega65/dma-test5.log
index 590b18df3..fb77f27c6 100644
--- a/src/test/ref/examples/mega65/dma-test5.log
+++ b/src/test/ref/examples/mega65/dma-test5.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -173,7 +170,7 @@ byte memset_dma::fill#1
 word memset_dma::num
 word memset_dma::num#0
 word memset_dma::num#1
-struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
 
 Adding number conversion cast (unumber) 4 in memoryRemap::$1 = memoryRemap::remapBlocks#1 << 4
 Adding number conversion cast (unumber) $f in memoryRemap::$3 = memoryRemap::$2 & $f
@@ -400,7 +397,7 @@ byte memset_dma::dmaMode
 byte memset_dma::dmaMode#0 2.4444444444444446
 byte memset_dma::fill
 word memset_dma::num
-struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 
 Initial phi equivalence classes
 Added variable memoryRemap::aVal to live range equivalence class [ memoryRemap::aVal ]
@@ -720,7 +717,7 @@ byte memset_dma::fill
 const byte memset_dma::fill#0 fill = '*'
 word memset_dma::num
 const word memset_dma::num#0 num = (word)$50*$a
-struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 
 zp[1]:2 [ memoryRemap::aVal ]
 zp[1]:3 [ memoryRemap::xVal ]
diff --git a/src/test/ref/examples/mega65/dma-test5.sym b/src/test/ref/examples/mega65/dma-test5.sym
index 99ed3b80a..b916bec48 100644
--- a/src/test/ref/examples/mega65/dma-test5.sym
+++ b/src/test/ref/examples/mega65/dma-test5.sym
@@ -26,7 +26,7 @@ byte memset_dma::fill
 const byte memset_dma::fill#0 fill = '*'
 word memset_dma::num
 const word memset_dma::num#0 num = (word)$50*$a
-struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 
 zp[1]:2 [ memoryRemap::aVal ]
 zp[1]:3 [ memoryRemap::xVal ]
diff --git a/src/test/ref/examples/mega65/dma-test6.log b/src/test/ref/examples/mega65/dma-test6.log
index 68f6bf21b..9b8c08c51 100644
--- a/src/test/ref/examples/mega65/dma-test6.log
+++ b/src/test/ref/examples/mega65/dma-test6.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
diff --git a/src/test/ref/examples/mega65/dypp65.log b/src/test/ref/examples/mega65/dypp65.log
index 6c9a47abc..5e5feccec 100644
--- a/src/test/ref/examples/mega65/dypp65.log
+++ b/src/test/ref/examples/mega65/dypp65.log
@@ -28,11 +28,8 @@ Fixing struct type size struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Fixing struct type SIZE_OF struct F018_DMAGIC to 17
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memcpy_dma_command4
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memcpy_dma_command4
 Setting struct to load/store in variable affected by address-of *DMA.ADDRMSB = >&memset_dma_command
-Setting struct to load/store in variable affected by address-of *DMA.ADDRLSBTRIG = <&memset_dma_command
 Setting inferred volatile on symbol affected by address-of: memoryRemap::aVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::xVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
 Setting inferred volatile on symbol affected by address-of: memoryRemap::yVal in asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom  }
@@ -471,7 +468,7 @@ byte memset_dma256::fill#1
 word memset_dma256::num
 word memset_dma256::num#0
 word memset_dma256::num#1
-struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*)0, src_bank: 0, dest: (byte*)0, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte* memset_dma_command256[]  = { DMA_OPTION_DEST_MB, 0, DMA_OPTION_FORMAT_F018B, DMA_OPTION_END, DMA_COMMAND_FILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 
 Adding number conversion cast (unumber) 4 in memoryRemap::$1 = memoryRemap::remapBlocks#1 << 4
@@ -1147,7 +1144,7 @@ byte memset_dma256::dmaMode#0 2.0
 struct DMA_LIST_F018B* memset_dma256::f018b
 byte memset_dma256::fill
 word memset_dma256::num
-struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 
 Initial phi equivalence classes
 [ main::r#2 main::r#1 ]
@@ -2147,7 +2144,7 @@ const struct DMA_LIST_F018B* memset_dma256::f018b#0 f018b = (struct DMA_LIST_F01
 byte memset_dma256::fill
 word memset_dma256::num
 const word memset_dma256::num#0 num = (word)$2d*$19*2
-struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte* memset_dma_command256[]  = { DMA_OPTION_DEST_MB, 0, DMA_OPTION_FORMAT_F018B, DMA_OPTION_END, DMA_COMMAND_FILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 
 reg byte x [ main::r#2 main::r#1 ]
diff --git a/src/test/ref/examples/mega65/dypp65.sym b/src/test/ref/examples/mega65/dypp65.sym
index bd3d43cc1..c01c33ece 100644
--- a/src/test/ref/examples/mega65/dypp65.sym
+++ b/src/test/ref/examples/mega65/dypp65.sym
@@ -104,7 +104,7 @@ const struct DMA_LIST_F018B* memset_dma256::f018b#0 f018b = (struct DMA_LIST_F01
 byte memset_dma256::fill
 word memset_dma256::num
 const word memset_dma256::num#0 num = (word)$2d*$19*2
-struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
+volatile struct DMA_LIST_F018B memset_dma_command loadstore mem[12] = { command: DMA_COMMAND_FILL, count: 0, src: (byte*) 0, src_bank: 0, dest: (byte*) 0, dest_bank: 0, sub_command: 0, modulo: 0 }
 const byte* memset_dma_command256[]  = { DMA_OPTION_DEST_MB, 0, DMA_OPTION_FORMAT_F018B, DMA_OPTION_END, DMA_COMMAND_FILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 
 reg byte x [ main::r#2 main::r#1 ]
diff --git a/src/test/ref/parse-negated-struct-ref.log b/src/test/ref/parse-negated-struct-ref.log
index 226555753..e8b157346 100644
--- a/src/test/ref/parse-negated-struct-ref.log
+++ b/src/test/ref/parse-negated-struct-ref.log
@@ -34,7 +34,7 @@ __start::@return: scope:[__start]  from __start::@1
 SYMBOL TABLE SSA
 const byte OFFSET_STRUCT_A_B = 0
 void __start()
-struct A aa loadstore = { b: 1 }
+volatile struct A aa loadstore = { b: 1 }
 void main()
 bool~ main::$0
 bool~ main::$1
@@ -98,7 +98,7 @@ main::@return: scope:[main]  from main::@1
 
 
 VARIABLE REGISTER WEIGHTS
-struct A aa loadstore = { b: 1 }
+volatile struct A aa loadstore = { b: 1 }
 void main()
 
 Initial phi equivalence classes
@@ -182,7 +182,7 @@ Removing instruction __b1:
 Succesful ASM optimization Pass5UnusedLabelElimination
 
 FINAL SYMBOL TABLE
-struct A aa loadstore mem[1] = { b: 1 }
+volatile struct A aa loadstore mem[1] = { b: 1 }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct A* main::a = &aa
diff --git a/src/test/ref/parse-negated-struct-ref.sym b/src/test/ref/parse-negated-struct-ref.sym
index 4fe4656b8..849a4aa17 100644
--- a/src/test/ref/parse-negated-struct-ref.sym
+++ b/src/test/ref/parse-negated-struct-ref.sym
@@ -1,4 +1,4 @@
-struct A aa loadstore mem[1] = { b: 1 }
+volatile struct A aa loadstore mem[1] = { b: 1 }
 void main()
 const nomodify byte* main::SCREEN = (byte*) 1024
 const struct A* main::a = &aa
diff --git a/src/test/ref/struct-21.log b/src/test/ref/struct-21.log
index 70bc960b5..90c5d15e9 100644
--- a/src/test/ref/struct-21.log
+++ b/src/test/ref/struct-21.log
@@ -39,7 +39,7 @@ byte*~ main::$0
 byte*~ main::$1
 byte*~ main::$2
 byte*~ main::$3
-struct Point main::point1 loadstore
+volatile struct Point main::point1 loadstore
 const struct Point* main::ptr = &main::point1
 
 Adding number conversion cast (unumber) 0 in SCREEN[0] = *main::$0
@@ -101,7 +101,7 @@ main::@return: scope:[main]  from main
 
 VARIABLE REGISTER WEIGHTS
 void main()
-struct Point main::point1 loadstore
+volatile struct Point main::point1 loadstore
 
 Initial phi equivalence classes
 Added variable main::point1 to live range equivalence class [ main::point1 ]
@@ -179,7 +179,7 @@ const byte OFFSET_STRUCT_POINT_Y = 1
 const nomodify byte* SCREEN = (byte*) 1024
 const byte SIZEOF_STRUCT_POINT = 2
 void main()
-struct Point main::point1 loadstore zp[2]:2
+volatile struct Point main::point1 loadstore zp[2]:2
 const struct Point* main::ptr = &main::point1
 
 zp[2]:2 [ main::point1 ]
diff --git a/src/test/ref/struct-21.sym b/src/test/ref/struct-21.sym
index 464d34a4d..eaa523091 100644
--- a/src/test/ref/struct-21.sym
+++ b/src/test/ref/struct-21.sym
@@ -3,7 +3,7 @@ const byte OFFSET_STRUCT_POINT_Y = 1
 const nomodify byte* SCREEN = (byte*) 1024
 const byte SIZEOF_STRUCT_POINT = 2
 void main()
-struct Point main::point1 loadstore zp[2]:2
+volatile struct Point main::point1 loadstore zp[2]:2
 const struct Point* main::ptr = &main::point1
 
 zp[2]:2 [ main::point1 ]
diff --git a/src/test/ref/struct-35.log b/src/test/ref/struct-35.log
index e9de166f7..f9bad68a2 100644
--- a/src/test/ref/struct-35.log
+++ b/src/test/ref/struct-35.log
@@ -31,7 +31,7 @@ void __start()
 void main()
 const struct Point* main::p2 = &point2
 struct Point point1 loadstore = { x: 2, y: 3 }
-struct Point point2 loadstore = {}
+volatile struct Point point2 loadstore = {}
 
 Adding number conversion cast (unumber) 0 in SCREEN[0] = *((byte*)&point2+OFFSET_STRUCT_POINT_X)
 Adding number conversion cast (unumber) 1 in SCREEN[1] = *((byte*)&point2+OFFSET_STRUCT_POINT_Y)
@@ -76,7 +76,7 @@ main::@return: scope:[main]  from main
 VARIABLE REGISTER WEIGHTS
 void main()
 struct Point point1 loadstore = { x: 2, y: 3 }
-struct Point point2 loadstore = {}
+volatile struct Point point2 loadstore = {}
 
 Initial phi equivalence classes
 Added variable point1 to live range equivalence class [ point1 ]
@@ -159,7 +159,7 @@ const byte SIZEOF_STRUCT_POINT = 2
 void main()
 const struct Point* main::p2 = &point2
 struct Point point1 loadstore mem[2] = { x: 2, y: 3 }
-struct Point point2 loadstore mem[2] = {}
+volatile struct Point point2 loadstore mem[2] = {}
 
 mem[2] [ point1 ]
 mem[2] [ point2 ]
diff --git a/src/test/ref/struct-35.sym b/src/test/ref/struct-35.sym
index 76c7f82ea..a34996a7a 100644
--- a/src/test/ref/struct-35.sym
+++ b/src/test/ref/struct-35.sym
@@ -4,7 +4,7 @@ const byte SIZEOF_STRUCT_POINT = 2
 void main()
 const struct Point* main::p2 = &point2
 struct Point point1 loadstore mem[2] = { x: 2, y: 3 }
-struct Point point2 loadstore mem[2] = {}
+volatile struct Point point2 loadstore mem[2] = {}
 
 mem[2] [ point1 ]
 mem[2] [ point2 ]
diff --git a/src/test/ref/struct-pointer-ints.log b/src/test/ref/struct-pointer-ints.log
index a4c016731..e47ec77f6 100644
--- a/src/test/ref/struct-pointer-ints.log
+++ b/src/test/ref/struct-pointer-ints.log
@@ -54,7 +54,7 @@ signed word main::return#0
 signed word main::return#1
 signed word main::return#2
 signed word main::return#3
-struct myStruct main::s loadstore
+volatile struct myStruct main::s loadstore
 void update(struct myStruct* update::s , word update::size)
 word*~ update::$0
 word*~ update::$1
@@ -147,7 +147,7 @@ update::@return: scope:[update]  from update
 VARIABLE REGISTER WEIGHTS
 signed word main()
 signed word main::return
-struct myStruct main::s loadstore
+volatile struct myStruct main::s loadstore
 void update(struct myStruct* update::s , word update::size)
 struct myStruct* update::s
 word update::size
@@ -239,7 +239,7 @@ FINAL SYMBOL TABLE
 const byte SIZEOF_STRUCT_MYSTRUCT = 4
 signed word main()
 signed word main::return
-struct myStruct main::s loadstore zp[4]:2
+volatile struct myStruct main::s loadstore zp[4]:2
 void update(struct myStruct* update::s , word update::size)
 struct myStruct* update::s
 const struct myStruct* update::s#0 s = &main::s
diff --git a/src/test/ref/struct-pointer-ints.sym b/src/test/ref/struct-pointer-ints.sym
index b7c3be7b2..6569d4613 100644
--- a/src/test/ref/struct-pointer-ints.sym
+++ b/src/test/ref/struct-pointer-ints.sym
@@ -1,7 +1,7 @@
 const byte SIZEOF_STRUCT_MYSTRUCT = 4
 signed word main()
 signed word main::return
-struct myStruct main::s loadstore zp[4]:2
+volatile struct myStruct main::s loadstore zp[4]:2
 void update(struct myStruct* update::s , word update::size)
 struct myStruct* update::s
 const struct myStruct* update::s#0 s = &main::s
diff --git a/src/test/ref/struct-pointer-to-member-2.log b/src/test/ref/struct-pointer-to-member-2.log
index 4b3962d0a..ead500256 100644
--- a/src/test/ref/struct-pointer-to-member-2.log
+++ b/src/test/ref/struct-pointer-to-member-2.log
@@ -1,5 +1,4 @@
 Setting struct to load/store in variable affected by address-of COLORS
-Setting struct to load/store in variable affected by address-of COLORS
 
 CONTROL FLOW GRAPH SSA
 
@@ -25,7 +24,7 @@ __start::@return: scope:[__start]  from __start::@1
 SYMBOL TABLE SSA
 const nomodify byte* BG_COLOR = (byte*)(byte*)&COLORS+OFFSET_STRUCT_SCREEN_COLORS_BG0
 const nomodify byte* BORDER_COLOR = (byte*)(byte*)&COLORS+OFFSET_STRUCT_SCREEN_COLORS_BORDER
-struct SCREEN_COLORS COLORS loadstore = {}
+volatile struct SCREEN_COLORS COLORS loadstore = {}
 const byte OFFSET_STRUCT_SCREEN_COLORS_BG0 = 1
 const byte OFFSET_STRUCT_SCREEN_COLORS_BORDER = 0
 void __start()
@@ -72,7 +71,7 @@ main::@return: scope:[main]  from main
 
 
 VARIABLE REGISTER WEIGHTS
-struct SCREEN_COLORS COLORS loadstore = {}
+volatile struct SCREEN_COLORS COLORS loadstore = {}
 void main()
 
 Initial phi equivalence classes
@@ -142,7 +141,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
 FINAL SYMBOL TABLE
 const nomodify byte* BG_COLOR = (byte*)&COLORS+OFFSET_STRUCT_SCREEN_COLORS_BG0
 const nomodify byte* BORDER_COLOR = (byte*)&COLORS
-struct SCREEN_COLORS COLORS loadstore mem[5] = {}
+volatile struct SCREEN_COLORS COLORS loadstore mem[5] = {}
 const byte OFFSET_STRUCT_SCREEN_COLORS_BG0 = 1
 const byte SIZEOF_STRUCT_SCREEN_COLORS = 5
 void main()
diff --git a/src/test/ref/struct-pointer-to-member-2.sym b/src/test/ref/struct-pointer-to-member-2.sym
index 822389739..ed5781107 100644
--- a/src/test/ref/struct-pointer-to-member-2.sym
+++ b/src/test/ref/struct-pointer-to-member-2.sym
@@ -1,6 +1,6 @@
 const nomodify byte* BG_COLOR = (byte*)&COLORS+OFFSET_STRUCT_SCREEN_COLORS_BG0
 const nomodify byte* BORDER_COLOR = (byte*)&COLORS
-struct SCREEN_COLORS COLORS loadstore mem[5] = {}
+volatile struct SCREEN_COLORS COLORS loadstore mem[5] = {}
 const byte OFFSET_STRUCT_SCREEN_COLORS_BG0 = 1
 const byte SIZEOF_STRUCT_SCREEN_COLORS = 5
 void main()
diff --git a/src/test/ref/struct-ptr-19.log b/src/test/ref/struct-ptr-19.log
index 2bbf6b572..93c576f11 100644
--- a/src/test/ref/struct-ptr-19.log
+++ b/src/test/ref/struct-ptr-19.log
@@ -100,7 +100,7 @@ byte*~ main::$2
 byte*~ main::$3
 byte*~ main::$4
 byte*~ main::$5
-struct Point main::point loadstore
+volatile struct Point main::point loadstore
 const struct Point* main::ptr = &main::point
 void print(byte print::p_x , byte print::p_y)
 struct Point print::p
@@ -211,7 +211,7 @@ byte idx#12 12.0
 byte idx#13 2.6
 byte idx#3 16.5
 void main()
-struct Point main::point loadstore
+volatile struct Point main::point loadstore
 void print(byte print::p_x , byte print::p_y)
 struct Point print::p
 byte print::p_x
@@ -375,7 +375,7 @@ byte idx#12 idx zp[1]:2 12.0
 byte idx#13 idx zp[1]:2 2.6
 byte idx#3 reg byte y 16.5
 void main()
-struct Point main::point loadstore zp[2]:3
+volatile struct Point main::point loadstore zp[2]:3
 const struct Point* main::ptr = &main::point
 void print(byte print::p_x , byte print::p_y)
 struct Point print::p
diff --git a/src/test/ref/struct-ptr-19.sym b/src/test/ref/struct-ptr-19.sym
index bc3c845d8..e5d715b22 100644
--- a/src/test/ref/struct-ptr-19.sym
+++ b/src/test/ref/struct-ptr-19.sym
@@ -7,7 +7,7 @@ byte idx#12 idx zp[1]:2 12.0
 byte idx#13 idx zp[1]:2 2.6
 byte idx#3 reg byte y 16.5
 void main()
-struct Point main::point loadstore zp[2]:3
+volatile struct Point main::point loadstore zp[2]:3
 const struct Point* main::ptr = &main::point
 void print(byte print::p_x , byte print::p_y)
 struct Point print::p
diff --git a/src/test/ref/struct-ptr-28.log b/src/test/ref/struct-ptr-28.log
index e3194d340..500854ed8 100644
--- a/src/test/ref/struct-ptr-28.log
+++ b/src/test/ref/struct-ptr-28.log
@@ -131,8 +131,8 @@ byte idx#7
 byte idx#8
 byte idx#9
 void main()
-struct Person main::henriette loadstore
-struct Person main::jesper loadstore
+volatile struct Person main::henriette loadstore
+volatile struct Person main::jesper loadstore
 void print_person(struct Person* print_person::person)
 byte*~ print_person::$0
 byte*~ print_person::$1
@@ -281,8 +281,8 @@ byte idx#3 16.5
 byte idx#4 22.0
 byte idx#5 101.0
 void main()
-struct Person main::henriette loadstore
-struct Person main::jesper loadstore
+volatile struct Person main::henriette loadstore
+volatile struct Person main::jesper loadstore
 void print_person(struct Person* print_person::person)
 byte*~ print_person::$1 202.0
 byte*~ print_person::$2 202.0
@@ -557,8 +557,8 @@ byte idx#3 reg byte x 16.5
 byte idx#4 reg byte x 22.0
 byte idx#5 reg byte x 101.0
 void main()
-struct Person main::henriette loadstore zp[17]:25
-struct Person main::jesper loadstore zp[17]:8
+volatile struct Person main::henriette loadstore zp[17]:25
+volatile struct Person main::jesper loadstore zp[17]:8
 void print_person(struct Person* print_person::person)
 byte*~ print_person::$1 zp[2]:4 202.0
 byte*~ print_person::$2 zp[2]:6 202.0
diff --git a/src/test/ref/struct-ptr-28.sym b/src/test/ref/struct-ptr-28.sym
index 4576be9c7..4be009ff9 100644
--- a/src/test/ref/struct-ptr-28.sym
+++ b/src/test/ref/struct-ptr-28.sym
@@ -12,8 +12,8 @@ byte idx#3 reg byte x 16.5
 byte idx#4 reg byte x 22.0
 byte idx#5 reg byte x 101.0
 void main()
-struct Person main::henriette loadstore zp[17]:25
-struct Person main::jesper loadstore zp[17]:8
+volatile struct Person main::henriette loadstore zp[17]:25
+volatile struct Person main::jesper loadstore zp[17]:8
 void print_person(struct Person* print_person::person)
 byte*~ print_person::$1 zp[2]:4 202.0
 byte*~ print_person::$2 zp[2]:6 202.0
diff --git a/src/test/ref/struct-ptr-35.asm b/src/test/ref/struct-ptr-35.asm
new file mode 100644
index 000000000..439d8bd1c
--- /dev/null
+++ b/src/test/ref/struct-ptr-35.asm
@@ -0,0 +1,83 @@
+  // Commodore 64 PRG executable file
+.file [name="struct-ptr-35.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+  .const OFFSET_STRUCT_TILE_COUNT = 4
+.segment Code
+main: {
+    .label SCREEN = $400
+    .label __1 = 4
+    .label tile = 4
+    .label i = 2
+    .label __4 = 4
+    .label __5 = 6
+    lda #<0
+    sta.z i
+    sta.z i+1
+  __b1:
+    // tile = TileDB[i]
+    lda.z i
+    asl
+    sta.z __1
+    lda.z i+1
+    rol
+    sta.z __1+1
+    lda #<TileDB
+    clc
+    adc.z __4
+    sta.z __4
+    lda #>TileDB
+    adc.z __4+1
+    sta.z __4+1
+    ldy #0
+    lda (tile),y
+    pha
+    iny
+    lda (tile),y
+    sta.z tile+1
+    pla
+    sta.z tile
+    // SCREEN[i] =  tile->Count
+    clc
+    lda.z i
+    adc #<SCREEN
+    sta.z __5
+    lda.z i+1
+    adc #>SCREEN
+    sta.z __5+1
+    ldy #OFFSET_STRUCT_TILE_COUNT
+    lda (tile),y
+    ldy #0
+    sta (__5),y
+    // for(int i:0..1)
+    inc.z i
+    bne !+
+    inc.z i+1
+  !:
+    lda.z i+1
+    cmp #>2
+    bne __b1
+    lda.z i
+    cmp #<2
+    bne __b1
+    // }
+    rts
+}
+.segment Data
+  PlayerSprites: .fill 4*$c, 0
+  Enemy2Sprites: .fill 4*$c, 0
+  TileDB: .word S1, S2
+  S1: .word PlayerSprites, $14
+  .byte $40
+  .text "Sven"
+  .byte 0
+  .fill $f, 0
+  S2: .word Enemy2Sprites, $32
+  .byte $80
+  .text "Jesper"
+  .byte 0
+  .fill $d, 0
diff --git a/src/test/ref/struct-ptr-35.cfg b/src/test/ref/struct-ptr-35.cfg
new file mode 100644
index 000000000..c6fa93017
--- /dev/null
+++ b/src/test/ref/struct-ptr-35.cfg
@@ -0,0 +1,18 @@
+
+void main()
+main: scope:[main]  from
+  [0] phi()
+  to:main::@1
+main::@1: scope:[main]  from main main::@1
+  [1] main::i#2 = phi( main/0, main::@1/main::i#1 )
+  [2] main::$1 = main::i#2 << 1
+  [3] main::$4 = TileDB + main::$1
+  [4] main::tile#0 = *main::$4
+  [5] main::$5 = main::SCREEN + main::i#2
+  [6] *main::$5 = ((byte*)main::tile#0)[OFFSET_STRUCT_TILE_COUNT]
+  [7] main::i#1 = ++ main::i#2
+  [8] if(main::i#1!=2) goto main::@1
+  to:main::@return
+main::@return: scope:[main]  from main::@1
+  [9] return 
+  to:@return
diff --git a/src/test/ref/struct-ptr-35.log b/src/test/ref/struct-ptr-35.log
new file mode 100644
index 000000000..3913b523a
--- /dev/null
+++ b/src/test/ref/struct-ptr-35.log
@@ -0,0 +1,453 @@
+Fixing struct type size struct Tile to 25
+Fixing struct type size struct Tile to 25
+Fixing struct type size struct Tile to 25
+Fixing struct type size struct Tile to 25
+Fixing struct type SIZE_OF struct Tile to 25
+Fixing struct type SIZE_OF struct Tile to 25
+Setting struct to load/store in variable affected by address-of S1
+Setting struct to load/store in variable affected by address-of S2
+
+CONTROL FLOW GRAPH SSA
+
+void main()
+main: scope:[main]  from __start
+  main::i#0 = 0
+  to:main::@1
+main::@1: scope:[main]  from main main::@1
+  main::i#2 = phi( main/main::i#0, main::@1/main::i#1 )
+  main::$1 = main::i#2 * SIZEOF_POINTER
+  main::tile#0 = TileDB[main::$1]
+  main::$3 = (byte*)main::tile#0
+  main::$2 = main::$3 + OFFSET_STRUCT_TILE_COUNT
+  main::SCREEN[main::i#2] = *main::$2
+  main::i#1 = main::i#2 + rangenext(0,1)
+  main::$0 = main::i#1 != rangelast(0,1)
+  if(main::$0) goto main::@1
+  to:main::@return
+main::@return: scope:[main]  from main::@1
+  return 
+  to:@return
+
+void __start()
+__start: scope:[__start]  from
+  call main 
+  to:__start::@1
+__start::@1: scope:[__start]  from __start
+  to:__start::@return
+__start::@return: scope:[__start]  from __start::@1
+  return 
+  to:@return
+
+SYMBOL TABLE SSA
+const dword* Enemy2Sprites[$c]  = { fill( $c, 0) }
+const byte OFFSET_STRUCT_TILE_COUNT = 4
+const dword* PlayerSprites[$c]  = { fill( $c, 0) }
+volatile struct Tile S1 loadstore = { Tiles: PlayerSprites, Offset: $14, Count: $40, Name: "Sven" }
+volatile struct Tile S2 loadstore = { Tiles: Enemy2Sprites, Offset: $32, Count: $80, Name: "Jesper" }
+const byte SIZEOF_POINTER = 2
+const struct Tile** TileDB[2]  = { &S1, &S2 }
+void __start()
+void main()
+bool~ main::$0
+signed word~ main::$1
+byte*~ main::$2
+byte*~ main::$3
+const nomodify byte* main::SCREEN = (byte*)$400
+signed word main::i
+signed word main::i#0
+signed word main::i#1
+signed word main::i#2
+struct Tile* main::tile
+struct Tile* main::tile#0
+
+Simplifying constant pointer cast (byte*) 1024
+Successful SSA optimization PassNCastSimplification
+Simple Condition main::$0 [9] if(main::i#1!=rangelast(0,1)) goto main::@1
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Constant main::i#0 = 0
+Successful SSA optimization Pass2ConstantIdentification
+Resolved ranged next value [7] main::i#1 = ++ main::i#2 to ++
+Resolved ranged comparison value [9] if(main::i#1!=rangelast(0,1)) goto main::@1 to 2
+Converting *(pointer+n) to pointer[n] [6] main::SCREEN[main::i#2] = *main::$2  -- main::$3[OFFSET_STRUCT_TILE_COUNT]
+Successful SSA optimization Pass2InlineDerefIdx
+De-inlining pointer[w] to *(pointer+w)   [3] main::tile#0 = TileDB[main::$1]
+De-inlining pointer[w] to *(pointer+w)   [6] main::SCREEN[main::i#2] = main::$3[OFFSET_STRUCT_TILE_COUNT]
+Successful SSA optimization Pass2DeInlineWordDerefIdx
+Eliminating unused variable main::$2 and assignment [5] main::$2 = main::$3 + OFFSET_STRUCT_TILE_COUNT
+Successful SSA optimization PassNEliminateUnusedVars
+Removing unused procedure __start
+Removing unused procedure block __start
+Removing unused procedure block __start::@1
+Removing unused procedure block __start::@return
+Successful SSA optimization PassNEliminateEmptyStart
+Adding number conversion cast (snumber) 2 in [8] if(main::i#1!=2) goto main::@1
+Successful SSA optimization PassNAddNumberTypeConversions
+Simplifying constant integer cast 2
+Successful SSA optimization PassNCastSimplification
+Finalized signed number type (signed byte) 2
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inlining Noop Cast [4] main::$3 = (byte*)main::tile#0 keeping main::tile#0
+Successful SSA optimization Pass2NopCastInlining
+Rewriting multiplication to use shift [1] main::$1 = main::i#2 * SIZEOF_POINTER
+Successful SSA optimization Pass2MultiplyToShiftRewriting
+Inlining constant with var siblings main::i#0
+Constant inlined main::i#0 = 0
+Successful SSA optimization Pass2ConstantInlining
+Eliminating unused constant SIZEOF_POINTER
+Successful SSA optimization PassNEliminateUnusedVars
+Finalized unsigned number type (byte) $14
+Finalized unsigned number type (byte) $14
+Finalized unsigned number type (byte) $c
+Finalized unsigned number type (byte) $c
+Finalized unsigned number type (byte) $c
+Finalized unsigned number type (byte) $c
+Finalized unsigned number type (byte) 2
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Added new block during phi lifting main::@2(between main::@1 and main::@1)
+Adding NOP phi() at start of main
+CALL GRAPH
+
+Created 1 initial phi equivalence classes
+Coalesced [10] main::i#3 = main::i#1
+Coalesced down to 1 phi equivalence classes
+Culled Empty Block label main::@2
+Adding NOP phi() at start of main
+
+FINAL CONTROL FLOW GRAPH
+
+void main()
+main: scope:[main]  from
+  [0] phi()
+  to:main::@1
+main::@1: scope:[main]  from main main::@1
+  [1] main::i#2 = phi( main/0, main::@1/main::i#1 )
+  [2] main::$1 = main::i#2 << 1
+  [3] main::$4 = TileDB + main::$1
+  [4] main::tile#0 = *main::$4
+  [5] main::$5 = main::SCREEN + main::i#2
+  [6] *main::$5 = ((byte*)main::tile#0)[OFFSET_STRUCT_TILE_COUNT]
+  [7] main::i#1 = ++ main::i#2
+  [8] if(main::i#1!=2) goto main::@1
+  to:main::@return
+main::@return: scope:[main]  from main::@1
+  [9] return 
+  to:@return
+
+
+VARIABLE REGISTER WEIGHTS
+volatile struct Tile S1 loadstore = { Tiles: PlayerSprites, Offset: $14, Count: $40, Name: "Sven" }
+volatile struct Tile S2 loadstore = { Tiles: Enemy2Sprites, Offset: $32, Count: $80, Name: "Jesper" }
+void main()
+signed word~ main::$1 22.0
+struct Tile**~ main::$4 22.0
+byte*~ main::$5 22.0
+signed word main::i
+signed word main::i#1 16.5
+signed word main::i#2 7.333333333333333
+struct Tile* main::tile
+struct Tile* main::tile#0 5.5
+
+Initial phi equivalence classes
+[ main::i#2 main::i#1 ]
+Added variable main::$1 to live range equivalence class [ main::$1 ]
+Added variable main::$4 to live range equivalence class [ main::$4 ]
+Added variable main::tile#0 to live range equivalence class [ main::tile#0 ]
+Added variable main::$5 to live range equivalence class [ main::$5 ]
+Added variable S1 to live range equivalence class [ S1 ]
+Added variable S2 to live range equivalence class [ S2 ]
+Complete equivalence classes
+[ main::i#2 main::i#1 ]
+[ main::$1 ]
+[ main::$4 ]
+[ main::tile#0 ]
+[ main::$5 ]
+[ S1 ]
+[ S2 ]
+Allocated zp[2]:2 [ main::i#2 main::i#1 ]
+Allocated zp[2]:4 [ main::$1 ]
+Allocated zp[2]:6 [ main::$4 ]
+Allocated zp[2]:8 [ main::tile#0 ]
+Allocated zp[2]:10 [ main::$5 ]
+Allocated mem[25] [ S1 ]
+Allocated mem[25] [ S2 ]
+REGISTER UPLIFT POTENTIAL REGISTERS
+Statement [2] main::$1 = main::i#2 << 1 [ main::i#2 main::$1 ] (  [ main::i#2 main::$1 ] { }  ) always clobbers reg byte a 
+Statement [3] main::$4 = TileDB + main::$1 [ main::i#2 main::$4 ] (  [ main::i#2 main::$4 ] { }  ) always clobbers reg byte a 
+Statement [4] main::tile#0 = *main::$4 [ main::i#2 main::tile#0 ] (  [ main::i#2 main::tile#0 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [5] main::$5 = main::SCREEN + main::i#2 [ main::i#2 main::tile#0 main::$5 ] (  [ main::i#2 main::tile#0 main::$5 ] { }  ) always clobbers reg byte a 
+Statement [6] *main::$5 = ((byte*)main::tile#0)[OFFSET_STRUCT_TILE_COUNT] [ main::i#2 ] (  [ main::i#2 ] { }  ) always clobbers reg byte a reg byte y 
+Statement [8] if(main::i#1!=2) goto main::@1 [ main::i#1 ] (  [ main::i#1 ] { }  ) always clobbers reg byte a 
+Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , 
+Potential registers zp[2]:4 [ main::$1 ] : zp[2]:4 , 
+Potential registers zp[2]:6 [ main::$4 ] : zp[2]:6 , 
+Potential registers zp[2]:8 [ main::tile#0 ] : zp[2]:8 , 
+Potential registers zp[2]:10 [ main::$5 ] : zp[2]:10 , 
+Potential registers mem[25] [ S1 ] : mem[25] , 
+Potential registers mem[25] [ S2 ] : mem[25] , 
+
+REGISTER UPLIFT SCOPES
+Uplift Scope [main] 23.83: zp[2]:2 [ main::i#2 main::i#1 ] 22: zp[2]:4 [ main::$1 ] 22: zp[2]:6 [ main::$4 ] 22: zp[2]:10 [ main::$5 ] 5.5: zp[2]:8 [ main::tile#0 ] 
+Uplift Scope [Tile] 
+Uplift Scope [] 0: mem[25] [ S1 ] 0: mem[25] [ S2 ] 
+
+Uplifting [main] best 1356 combination zp[2]:2 [ main::i#2 main::i#1 ] zp[2]:4 [ main::$1 ] zp[2]:6 [ main::$4 ] zp[2]:10 [ main::$5 ] zp[2]:8 [ main::tile#0 ] 
+Uplifting [Tile] best 1356 combination 
+Uplifting [] best 1356 combination mem[25] [ S1 ] mem[25] [ S2 ] 
+Coalescing zero page register [ zp[2]:4 [ main::$1 ] ] with [ zp[2]:6 [ main::$4 ] ] - score: 1
+Coalescing zero page register [ zp[2]:4 [ main::$1 main::$4 ] ] with [ zp[2]:8 [ main::tile#0 ] ] - score: 1
+Allocated (was zp[2]:10) zp[2]:6 [ main::$5 ]
+
+ASSEMBLER BEFORE OPTIMIZATION
+  // File Comments
+  // Upstart
+  // Commodore 64 PRG executable file
+.file [name="struct-ptr-35.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+  // Global Constants & labels
+  .const OFFSET_STRUCT_TILE_COUNT = 4
+.segment Code
+  // main
+main: {
+    .label SCREEN = $400
+    .label __1 = 4
+    .label tile = 4
+    .label i = 2
+    .label __4 = 4
+    .label __5 = 6
+    // [1] phi from main to main::@1 [phi:main->main::@1]
+  __b1_from_main:
+    // [1] phi main::i#2 = 0 [phi:main->main::@1#0] -- vwsz1=vwsc1 
+    lda #<0
+    sta.z i
+    lda #>0
+    sta.z i+1
+    jmp __b1
+    // [1] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
+  __b1_from___b1:
+    // [1] phi main::i#2 = main::i#1 [phi:main::@1->main::@1#0] -- register_copy 
+    jmp __b1
+    // main::@1
+  __b1:
+    // [2] main::$1 = main::i#2 << 1 -- vwsz1=vwsz2_rol_1 
+    lda.z i
+    asl
+    sta.z __1
+    lda.z i+1
+    rol
+    sta.z __1+1
+    // [3] main::$4 = TileDB + main::$1 -- qssz1=qssc1_plus_vwsz1 
+    lda #<TileDB
+    clc
+    adc.z __4
+    sta.z __4
+    lda #>TileDB
+    adc.z __4+1
+    sta.z __4+1
+    // [4] main::tile#0 = *main::$4 -- pssz1=_deref_qssz1 
+    ldy #0
+    lda (tile),y
+    pha
+    iny
+    lda (tile),y
+    sta.z tile+1
+    pla
+    sta.z tile
+    // [5] main::$5 = main::SCREEN + main::i#2 -- pbuz1=pbuc1_plus_vwsz2 
+    clc
+    lda.z i
+    adc #<SCREEN
+    sta.z __5
+    lda.z i+1
+    adc #>SCREEN
+    sta.z __5+1
+    // [6] *main::$5 = ((byte*)main::tile#0)[OFFSET_STRUCT_TILE_COUNT] -- _deref_pbuz1=pbuz2_derefidx_vbuc1 
+    ldy #OFFSET_STRUCT_TILE_COUNT
+    lda (tile),y
+    ldy #0
+    sta (__5),y
+    // [7] main::i#1 = ++ main::i#2 -- vwsz1=_inc_vwsz1 
+    inc.z i
+    bne !+
+    inc.z i+1
+  !:
+    // [8] if(main::i#1!=2) goto main::@1 -- vwsz1_neq_vwuc1_then_la1 
+    lda.z i+1
+    cmp #>2
+    bne __b1_from___b1
+    lda.z i
+    cmp #<2
+    bne __b1_from___b1
+    jmp __breturn
+    // main::@return
+  __breturn:
+    // [9] return 
+    rts
+}
+  // File Data
+.segment Data
+  PlayerSprites: .fill 4*$c, 0
+  Enemy2Sprites: .fill 4*$c, 0
+  TileDB: .word S1, S2
+  S1: .word PlayerSprites, $14
+  .byte $40
+  .text "Sven"
+  .byte 0
+  .fill $f, 0
+  S2: .word Enemy2Sprites, $32
+  .byte $80
+  .text "Jesper"
+  .byte 0
+  .fill $d, 0
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp __b1
+Removing instruction jmp __breturn
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction lda #>0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Replacing label __b1_from___b1 with __b1
+Replacing label __b1_from___b1 with __b1
+Removing instruction __b1_from___b1:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction __b1_from_main:
+Removing instruction __breturn:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Removing instruction jmp __b1
+Succesful ASM optimization Pass5NextJumpElimination
+
+FINAL SYMBOL TABLE
+const dword* Enemy2Sprites[$c]  = { fill( $c, 0) }
+const byte OFFSET_STRUCT_TILE_COUNT = 4
+const dword* PlayerSprites[$c]  = { fill( $c, 0) }
+volatile struct Tile S1 loadstore mem[25] = { Tiles: PlayerSprites, Offset: $14, Count: $40, Name: "Sven" }
+volatile struct Tile S2 loadstore mem[25] = { Tiles: Enemy2Sprites, Offset: $32, Count: $80, Name: "Jesper" }
+const struct Tile** TileDB[2]  = { &S1, &S2 }
+void main()
+signed word~ main::$1 zp[2]:4 22.0
+struct Tile**~ main::$4 zp[2]:4 22.0
+byte*~ main::$5 zp[2]:6 22.0
+const nomodify byte* main::SCREEN = (byte*) 1024
+signed word main::i
+signed word main::i#1 i zp[2]:2 16.5
+signed word main::i#2 i zp[2]:2 7.333333333333333
+struct Tile* main::tile
+struct Tile* main::tile#0 tile zp[2]:4 5.5
+
+zp[2]:2 [ main::i#2 main::i#1 ]
+zp[2]:4 [ main::$1 main::$4 main::tile#0 ]
+zp[2]:6 [ main::$5 ]
+mem[25] [ S1 ]
+mem[25] [ S2 ]
+
+
+FINAL ASSEMBLER
+Score: 1316
+
+  // File Comments
+  // Upstart
+  // Commodore 64 PRG executable file
+.file [name="struct-ptr-35.prg", type="prg", segments="Program"]
+.segmentdef Program [segments="Basic, Code, Data"]
+.segmentdef Basic [start=$0801]
+.segmentdef Code [start=$80d]
+.segmentdef Data [startAfter="Code"]
+.segment Basic
+:BasicUpstart(main)
+  // Global Constants & labels
+  .const OFFSET_STRUCT_TILE_COUNT = 4
+.segment Code
+  // main
+main: {
+    .label SCREEN = $400
+    .label __1 = 4
+    .label tile = 4
+    .label i = 2
+    .label __4 = 4
+    .label __5 = 6
+    // [1] phi from main to main::@1 [phi:main->main::@1]
+    // [1] phi main::i#2 = 0 [phi:main->main::@1#0] -- vwsz1=vwsc1 
+    lda #<0
+    sta.z i
+    sta.z i+1
+    // [1] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
+    // [1] phi main::i#2 = main::i#1 [phi:main::@1->main::@1#0] -- register_copy 
+    // main::@1
+  __b1:
+    // tile = TileDB[i]
+    // [2] main::$1 = main::i#2 << 1 -- vwsz1=vwsz2_rol_1 
+    lda.z i
+    asl
+    sta.z __1
+    lda.z i+1
+    rol
+    sta.z __1+1
+    // [3] main::$4 = TileDB + main::$1 -- qssz1=qssc1_plus_vwsz1 
+    lda #<TileDB
+    clc
+    adc.z __4
+    sta.z __4
+    lda #>TileDB
+    adc.z __4+1
+    sta.z __4+1
+    // [4] main::tile#0 = *main::$4 -- pssz1=_deref_qssz1 
+    ldy #0
+    lda (tile),y
+    pha
+    iny
+    lda (tile),y
+    sta.z tile+1
+    pla
+    sta.z tile
+    // SCREEN[i] =  tile->Count
+    // [5] main::$5 = main::SCREEN + main::i#2 -- pbuz1=pbuc1_plus_vwsz2 
+    clc
+    lda.z i
+    adc #<SCREEN
+    sta.z __5
+    lda.z i+1
+    adc #>SCREEN
+    sta.z __5+1
+    // [6] *main::$5 = ((byte*)main::tile#0)[OFFSET_STRUCT_TILE_COUNT] -- _deref_pbuz1=pbuz2_derefidx_vbuc1 
+    ldy #OFFSET_STRUCT_TILE_COUNT
+    lda (tile),y
+    ldy #0
+    sta (__5),y
+    // for(int i:0..1)
+    // [7] main::i#1 = ++ main::i#2 -- vwsz1=_inc_vwsz1 
+    inc.z i
+    bne !+
+    inc.z i+1
+  !:
+    // [8] if(main::i#1!=2) goto main::@1 -- vwsz1_neq_vwuc1_then_la1 
+    lda.z i+1
+    cmp #>2
+    bne __b1
+    lda.z i
+    cmp #<2
+    bne __b1
+    // main::@return
+    // }
+    // [9] return 
+    rts
+}
+  // File Data
+.segment Data
+  PlayerSprites: .fill 4*$c, 0
+  Enemy2Sprites: .fill 4*$c, 0
+  TileDB: .word S1, S2
+  S1: .word PlayerSprites, $14
+  .byte $40
+  .text "Sven"
+  .byte 0
+  .fill $f, 0
+  S2: .word Enemy2Sprites, $32
+  .byte $80
+  .text "Jesper"
+  .byte 0
+  .fill $d, 0
+
diff --git a/src/test/ref/struct-ptr-35.sym b/src/test/ref/struct-ptr-35.sym
new file mode 100644
index 000000000..52675b762
--- /dev/null
+++ b/src/test/ref/struct-ptr-35.sym
@@ -0,0 +1,22 @@
+const dword* Enemy2Sprites[$c]  = { fill( $c, 0) }
+const byte OFFSET_STRUCT_TILE_COUNT = 4
+const dword* PlayerSprites[$c]  = { fill( $c, 0) }
+volatile struct Tile S1 loadstore mem[25] = { Tiles: PlayerSprites, Offset: $14, Count: $40, Name: "Sven" }
+volatile struct Tile S2 loadstore mem[25] = { Tiles: Enemy2Sprites, Offset: $32, Count: $80, Name: "Jesper" }
+const struct Tile** TileDB[2]  = { &S1, &S2 }
+void main()
+signed word~ main::$1 zp[2]:4 22.0
+struct Tile**~ main::$4 zp[2]:4 22.0
+byte*~ main::$5 zp[2]:6 22.0
+const nomodify byte* main::SCREEN = (byte*) 1024
+signed word main::i
+signed word main::i#1 i zp[2]:2 16.5
+signed word main::i#2 i zp[2]:2 7.333333333333333
+struct Tile* main::tile
+struct Tile* main::tile#0 tile zp[2]:4 5.5
+
+zp[2]:2 [ main::i#2 main::i#1 ]
+zp[2]:4 [ main::$1 main::$4 main::tile#0 ]
+zp[2]:6 [ main::$5 ]
+mem[25] [ S1 ]
+mem[25] [ S2 ]