diff --git a/src/main/fragment/cache/fragment-cache-csg65ce02.asm b/src/main/fragment/cache/fragment-cache-csg65ce02.asm
index a7247c54b..c3cce812d 100644
--- a/src/main/fragment/cache/fragment-cache-csg65ce02.asm
+++ b/src/main/fragment/cache/fragment-cache-csg65ce02.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
//FRAGMENT vbuz1=vbuc1
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 d23150953..fdfa5ab8e 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 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
//FRAGMENT _deref_pbuc1=vbuc2
lda #{c2}
sta {c1}
@@ -62,16 +62,1135 @@ ldz {z1}
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}
-//FRAGMENT vbuz1=_deref_pbuc1_plus_1
-lda {c1}
-inc
+//FRAGMENT isr_hardware_all_entry
+pha @clob_a
+phx @clob_x
+phy @clob_y
+phz @clob_z
+//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
+//FRAGMENT vbuz1=vbuz2_rol_4
lda {z2}
+asl
+asl
+asl
+asl
+sta {z1}
+//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}
+cmp #0
+bne {la1}
+//FRAGMENT vbuz1=vbuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT _deref_pbuc1=vbuz1
+lda {z1}
+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
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_4
+lda {z1}
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_4
+lda {z1}
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuz1_rol_4
+lda {z1}
+asl
+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
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_4
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuaa_rol_4
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_4
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuaa_rol_4
+asl
+asl
+asl
+asl
+taz
+//FRAGMENT vbuz1=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuxx_rol_4
+txa
+asl
+asl
+asl
+asl
+taz
+//FRAGMENT vbuz1=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuyy_rol_4
+tya
+asl
+asl
+asl
+asl
+taz
+//FRAGMENT vbuz1=vbuzz_rol_4
+tza
+asl
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuzz_rol_4
+tza
+asl
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuzz_rol_4
+tza
+asl
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuzz_rol_4
+tza
+asl
+asl
+asl
+asl
+tay
+//FRAGMENT vbuzz=vbuzz_rol_4
+tza
+asl
+asl
+asl
+asl
+taz
+//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}
@@ -121,18 +1240,10 @@ lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
-//FRAGMENT vbuz1=_deref_pbuz2
-ldy #0
-lda ({z2}),y
-sta {z1}
//FRAGMENT 0_neq_vbuz1_then_la1
lda {z1}
cmp #0
bne {la1}
-//FRAGMENT vbuz1_eq_vbuc1_then_la1
-lda #{c1}
-cmp {z1}
-beq {la1}
//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
lda {z3}
ldz {z2}
@@ -141,12 +1252,6 @@ sta ({z1}),z
lda #{c1}
ldz {z2}
sta ({z1}),z
-//FRAGMENT vbuz1=_inc_vbuz1
-inc {z1}
-//FRAGMENT vbuz1_neq_vbuc1_then_la1
-lda #{c1}
-cmp {z1}
-bne {la1}
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
lda #{c1}
clc
@@ -168,8 +1273,6 @@ sta {z1}
lda {z1}+1
sbc #0
sta {z1}+1
-//FRAGMENT vbuz1=_dec_vbuz1
-dec {z1}
//FRAGMENT pbuz1=pbuz2_plus_vwuc1
clc
lda {z2}
@@ -204,13 +1307,6 @@ inc
//FRAGMENT vbuxx=_deref_pbuc1_plus_1
ldx {c1}
inx
-//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
@@ -228,29 +1324,11 @@ tza
sta {z1}
lda #0
sta {z1}+1
-//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 vbuaa_eq_vbuc1_then_la1
-cmp #{c1}
-beq {la1}
//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
ldz {z2}
sta ({z1}),z
@@ -266,26 +1344,6 @@ sta ({z1}),z
tza
ldz {z2}
sta ({z1}),z
-//FRAGMENT vbuxx_lt_vbuc1_then_la1
-cpx #{c1}
-bcc {la1}
-//FRAGMENT vbuxx=vbuc1
-ldx #{c1}
-//FRAGMENT vbuzz=vbuc1
-ldz #{c1}
-//FRAGMENT vbuxx_eq_vbuc1_then_la1
-cpx #{c1}
-beq {la1}
-//FRAGMENT vbuyy=vbuz1
-ldy {z1}
-//FRAGMENT vbuyy_eq_vbuc1_then_la1
-cpy #{c1}
-beq {la1}
-//FRAGMENT vbuzz=vbuz1
-ldz {z1}
-//FRAGMENT vbuzz_eq_vbuc1_then_la1
-cpz #{c1}
-beq {la1}
//FRAGMENT 0_neq_vbuxx_then_la1
cpx #0
bne {la1}
@@ -301,21 +1359,11 @@ cpz #0
bne {la1}
//FRAGMENT vbuaa=vbuzz
tza
-//FRAGMENT vbuyy_lt_vbuc1_then_la1
-cpy #{c1}
-bcc {la1}
-//FRAGMENT vbuyy=vbuc1
-ldy #{c1}
//FRAGMENT vbuz1=vbuyy
sty {z1}
-//FRAGMENT vbuzz_lt_vbuc1_then_la1
-cpz #{c1}
-bcc {la1}
//FRAGMENT vbuz1=vbuzz
tza
sta {z1}
-//FRAGMENT vbuaa=vbuc1
-lda #{c1}
//FRAGMENT vbuxx=vbuaa
tax
//FRAGMENT vbuyy=_deref_pbuc1_plus_1
@@ -352,10 +1400,6 @@ asw {z1}
asw {z1}
asw {z1}
asw {z1}
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {c1}
//FRAGMENT vwuz1=vwuc1
lda #<{c1}
sta {z1}
@@ -405,9 +1449,6 @@ sta {z1}
bcc !+
inc {z1}+1
!:
-//FRAGMENT vbuz1=_deref_pbuc1
-lda {c1}
-sta {z1}
//FRAGMENT _deref_pwuc1=vwuz1
lda {z1}
sta {c1}
@@ -423,9 +1464,6 @@ 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}
@@ -572,10 +1610,6 @@ 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}
@@ -591,27 +1625,138 @@ tza
sta {c1}
lda #0
sta {c1}+1
-//FRAGMENT _deref_pbuc1=vbuxx
-stx {c1}
-//FRAGMENT vbuxx=_inc_vbuxx
-inx
-//FRAGMENT vbuyy=_inc_vbuyy
-iny
-//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 _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 pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ldx {z1}
+inc {c1},x
+//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 _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 vbuaa=_lo_vwuz1
+lda {z1}
+//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 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 pbuc1_derefidx_vbuyy=_inc_pbuc1_derefidx_vbuyy
+lda {c1},y
+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
+tza
+ora {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
//FRAGMENT vduz1=vduc1
lda #<{c1}
sta {z1}
@@ -633,14 +1778,6 @@ lda #{c1}
clc
adc {z2}
sta {z1}
-//FRAGMENT pbuc1_derefidx_vbuz1=vbuz2
-lda {z2}
-ldy {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},y
//FRAGMENT vwuz1=vwuc1_minus_vbuz2
sec
lda #<{c1}
@@ -673,27 +1810,6 @@ lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1
-//FRAGMENT vbuz1=_lo_vwuz2
-lda {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_rol_4
-lda {z2}
-asl
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuz1=_hi_vwuz2
-lda {z2}+1
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_band_vbuc1
-lda #{c1}
-and {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_bor_vbuz3
-lda {z2}
-ora {z3}
-sta {z1}
//FRAGMENT vduz1=vduz2_ror_4
lda {z2}+3
lsr
@@ -837,35 +1953,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 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 vwuz1=vwuc1_minus_vbuaa
tax
stx $ff
@@ -1309,266 +2396,6 @@ dey
bne !-
!e:
taz
-//FRAGMENT vbuaa=_lo_vwuz1
-lda {z1}
-//FRAGMENT vbuxx=_lo_vwuz1
-ldx {z1}
-//FRAGMENT _deref_pbuc1=vbuaa
-sta {c1}
-//FRAGMENT vbuaa=vbuz1_rol_4
-lda {z1}
-asl
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuz1_rol_4
-lda {z1}
-asl
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuz1_rol_4
-lda {z1}
-asl
-asl
-asl
-asl
-tay
-//FRAGMENT vbuzz=vbuz1_rol_4
-lda {z1}
-asl
-asl
-asl
-asl
-taz
-//FRAGMENT vbuz1=vbuxx_rol_4
-txa
-asl
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_rol_4
-txa
-asl
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuxx_rol_4
-txa
-asl
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuxx_rol_4
-txa
-asl
-asl
-asl
-asl
-tay
-//FRAGMENT vbuzz=vbuxx_rol_4
-txa
-asl
-asl
-asl
-asl
-taz
-//FRAGMENT vbuz1=vbuyy_rol_4
-tya
-asl
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_rol_4
-tya
-asl
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuyy_rol_4
-tya
-asl
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuyy_rol_4
-tya
-asl
-asl
-asl
-asl
-tay
-//FRAGMENT vbuzz=vbuyy_rol_4
-tya
-asl
-asl
-asl
-asl
-taz
-//FRAGMENT vbuz1=vbuzz_rol_4
-tza
-asl
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuzz_rol_4
-tza
-asl
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuzz_rol_4
-tza
-asl
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuzz_rol_4
-tza
-asl
-asl
-asl
-asl
-tay
-//FRAGMENT vbuzz=vbuzz_rol_4
-tza
-asl
-asl
-asl
-asl
-taz
-//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 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 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
@@ -1633,20 +2460,6 @@ 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
@@ -1659,9 +2472,6 @@ tay
stx $ff
ora $ff
taz
-//FRAGMENT vbuaa=vbuyy_bor_vbuaa
-sty $ff
-ora $ff
//FRAGMENT vbuxx=vbuyy_bor_vbuaa
sty $ff
ora $ff
@@ -1674,11 +2484,6 @@ tay
sty $ff
ora $ff
taz
-//FRAGMENT vbuaa=vbuzz_bor_vbuaa
-tay
-tza
-sty $ff
-ora $ff
//FRAGMENT vbuxx=vbuzz_bor_vbuaa
tax
tza
@@ -1712,25 +2517,11 @@ 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
@@ -1739,10 +2530,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
@@ -1751,32 +2538,11 @@ 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}
-tza
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=vbuzz
-tza
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=vbuzz
-tza
-sta {c1},y
-//FRAGMENT vbuz1=vbuz2_bor_vbuzz
-tza
-ora {z2}
-sta {z1}
//FRAGMENT vbuyy=vbuaa
tay
//FRAGMENT vbuzz=vbuaa
@@ -1845,769 +2611,3 @@ sta {z1}+3
NO_SYNTHESIS
//FRAGMENT vduz1=vwsc1
NO_SYNTHESIS
-//FRAGMENT isr_hardware_all_entry
-pha @clob_a
-phx @clob_x
-phy @clob_y
-phz @clob_z
-//FRAGMENT vbuz1_neq_0_then_la1
-lda {z1}
-cmp #0
-bne {la1}
-//FRAGMENT isr_hardware_all_exit
-plz @clob_z
-ply @clob_y
-plx @clob_x
-pla @clob_a
-rti
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_band_vbuc2
-lda #{c2}
-ldy {z2}
-and {c1},y
-sta {z1}
-//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=vbuz2_plus_1
-lda {z2}
-inc
-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_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_neq_vbuc1_then_la1
-cmp #{c1}
-bne {la1}
-//FRAGMENT vbuaa_neq_0_then_la1
-cmp #0
-bne {la1}
-//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 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 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
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_rol_4
-asl
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuaa_rol_4
-asl
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuaa_rol_4
-asl
-asl
-asl
-asl
-tay
-//FRAGMENT vbuzz=vbuaa_rol_4
-asl
-asl
-asl
-asl
-taz
-//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=vbuz1_plus_1
-lda {z1}
-inc
-//FRAGMENT vbuxx=vbuz1_plus_1
-ldx {z1}
-inx
-//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 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 vbuxx_eq__deref_pbuc1_then_la1
-cpx {c1}
-beq {la1}
-//FRAGMENT vbuyy_eq__deref_pbuc1_then_la1
-cpy {c1}
-beq {la1}
-//FRAGMENT vbuzz_eq__deref_pbuc1_then_la1
-cpz {c1}
-beq {la1}
-//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 vbuz1=pbuc1_derefidx_vbuzz
-tza
-tay
-lda {c1},y
-sta {z1}
-//FRAGMENT vbuyy=vbuz1_plus_1
-ldy {z1}
-iny
-//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=_inc__deref_pbuc1
-inc {c1}
-//FRAGMENT _deref_pbuc1_eq_vbuz1_then_la1
-lda {c1}
-cmp {z1}
-beq {la1}
-//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
-dec {c1}
-//FRAGMENT pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
-ldx {z1}
-inc {c1},x
-//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_vbuyy=_inc_pbuc1_derefidx_vbuyy
-lda {c1},y
-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}
diff --git a/src/main/fragment/cache/fragment-cache-mos6502.asm b/src/main/fragment/cache/fragment-cache-mos6502.asm
index 923c9b5c7..fed3d4540 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 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
//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 4eec7b7dd..76a25b881 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 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}
@@ -2860,6 +2860,24 @@ sta {c1},y
lda {c1}+1,y
adc {c2}+1,y
sta {c1}+1,y
+//FRAGMENT isr_hardware_all_entry
+sta rega+1 @clob_a
+stx regx+1 @clob_x
+sty regy+1 @clob_y
+//FRAGMENT isr_hardware_all_exit
+rega: @clob_a @nooptimize lda #0 @clob_a @nooptimize
+regx: @clob_x @nooptimize ldx #0 @clob_x @nooptimize
+regy: @clob_y @nooptimize ldy #0 @clob_y @nooptimize
+rti
+//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_pbuc1_lt_vbuc2_then_la1
lda {c1}
cmp #{c2}
@@ -3695,11 +3713,6 @@ asl {z1}
rol {z1}+1
//FRAGMENT isr_rom_min_c64_entry
-//FRAGMENT _deref_qprc1=pprc2
-lda #<{c2}
-sta {c1}
-lda #>{c2}
-sta {c1}+1
//FRAGMENT isr_rom_min_c64_exit
jmp $ea81
//FRAGMENT vbuz1=vbuz2_plus_vbuc1
@@ -7649,6 +7662,582 @@ bne {la1}
lda {c1},y
cmp #0
bne {la1}
+//FRAGMENT pbuz1=pbuz2_minus_vwuc1
+lda {z2}
+sec
+sbc #<{c1}
+sta {z1}
+lda {z2}+1
+sbc #>{c1}
+sta {z1}+1
+//FRAGMENT pssz1=pssc1_plus_vbuz2
+lda {z2}
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2
+ldy #{c2}
+lda ({z2}),y
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+sta {z1}
+//FRAGMENT pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1
+lda #{c2}
+ldy #{c1}
+cmp ({z1}),y
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1
+ldy #{c1}
+lda ({z1}),y
+
+cmp #{c2}
+bne {la1}
+//FRAGMENT _deref_(qbuz1_derefidx_vbuc1)=vbuc2
+ldx #{c2}
+ldy #{c1}
+lda ({z1}),y
+sta !+ +1
+iny
+lda ({z1}),y
+sta !+ +2
+!: stx $ffff
+//FRAGMENT pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3
+ldy #{c3}
+lda ({z1}),y
+ldy #{c2}
+pha
+lda ({z1}),y
+tay
+pla
+sta {c1},y
+//FRAGMENT vwuz1=_deref_pwuz2_ror_4
+ldy #0
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT vbuz1=vbuc1_bxor_vbuz2
+lda #{c1}
+eor {z2}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuc1_ror_4
+ldy #{c1}
+lda ({z2}),y
+sta {z1}
+iny
+lda ({z2}),y
+sta {z1}+1
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+//FRAGMENT _deref_pwuz1_lt_vwuc1_then_la1
+ldy #1
+lda ({z1}),y
+cmp #>{c1}
+bcc {la1}
+bne !+
+dey
+lda ({z1}),y
+cmp #<{c1}
+bcc {la1}
+!:
+//FRAGMENT _deref_pwuz1_gt_vwuc1_then_la1
+ldy #1
+lda #>{c1}
+cmp ({z1}),y
+bcc {la1}
+bne !+
+dey
+lda #<{c1}
+cmp ({z1}),y
+bcc {la1}
+!:
+//FRAGMENT pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1
+ldy #{c1}
+iny
+lda ({z1}),y
+cmp #>{c2}
+bcc {la1}
+bne !+
+dey
+lda ({z1}),y
+cmp #<{c2}
+bcc {la1}
+!:
+//FRAGMENT pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1
+ldy #{c1}
+iny
+lda #>{c2}
+cmp ({z1}),y
+bcc {la1}
+bne !+
+dey
+lda #<{c2}
+cmp ({z1}),y
+bcc {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 pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2
+ldx {z2}
+ldy #{c1}
+clc
+lda ({z1}),y
+adc {c2},x
+sta ({z1}),y
+iny
+lda ({z1}),y
+adc {c2}+1,x
+sta ({z1}),y
+//FRAGMENT _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
+ldy #{c1}
+sty $ff
+clc
+lda ({z1}),y
+ldy #0
+adc ({z1}),y
+sta ({z1}),y
+ldy $ff
+iny
+lda ({z1}),y
+ldy #1
+adc ({z1}),y
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
+ldy #{c2}
+clc
+lda ({z1}),y
+ldy #{c1}
+adc ({z1}),y
+sta ({z1}),y
+ldy #{c2}+1
+lda ({z1}),y
+ldy #{c1}+1
+adc ({z1}),y
+sta ({z1}),y
+//FRAGMENT vbuz1=_neg_vbuz2
+lda {z2}
+eor #$ff
+clc
+adc #$01
+sta {z1}
+//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
+ldy {z3}
+lda ({z2}),y
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
+lda #{c2}
+ldy {z1}
+cmp {c1},y
+bne {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 vwuz1=vbuc1_plus_vwuz2
+lda #{c1}
+clc
+adc {z2}
+sta {z1}
+lda #0
+adc {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 pwuc1_derefidx_vbuz1=_word_vbuz2
+lda {z2}
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vwuc2
+ldy {z1}
+lda #<{c2}
+sta {c1},y
+lda #>{c2}
+sta {c1}+1,y
+//FRAGMENT qbuc1_derefidx_vbuz1=pbuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+lda {z2}+1
+sta {c1}+1,y
+//FRAGMENT pssz1=pssc1_plus_vbuaa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pssz1=pssc1_plus_vbuxx
+txa
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT pssz1=pssc1_plus_vbuyy
+tya
+clc
+adc #<{c1}
+sta {z1}
+lda #>{c1}
+adc #0
+sta {z1}+1
+//FRAGMENT vbuaa=vbuc1_rol_pbuz1_derefidx_vbuc2
+ldy #{c2}
+lda ({z1}),y
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+//FRAGMENT vbuxx=vbuc1_rol_pbuz1_derefidx_vbuc2
+ldy #{c2}
+lda ({z1}),y
+tax
+lda #{c1}
+cpx #0
+beq !e+
+!:
+asl
+dex
+bne !-
+!e:
+tax
+//FRAGMENT vbuyy=vbuc1_rol_pbuz1_derefidx_vbuc2
+ldy #{c2}
+lda ({z1}),y
+tay
+lda #{c1}
+cpy #0
+beq !e+
+!:
+asl
+dey
+bne !-
+!e:
+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 pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
+ldy #{c1}
+tax
+clc
+lda ({z1}),y
+adc {c2},x
+sta ({z1}),y
+iny
+lda ({z1}),y
+adc {c2}+1,x
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuxx
+ldy #{c1}
+clc
+lda ({z1}),y
+adc {c2},x
+sta ({z1}),y
+iny
+lda ({z1}),y
+adc {c2}+1,x
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuyy
+tya
+ldy #{c1}
+tax
+clc
+lda ({z1}),y
+adc {c2},x
+sta ({z1}),y
+iny
+lda ({z1}),y
+adc {c2}+1,x
+sta ({z1}),y
+//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 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_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 vbuaa_ge_vbuz1_then_la1
+cmp {z1}
+bcs {la1}
+//FRAGMENT pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1
+tay
+lda #{c2}
+cmp {c1},y
+bne {la1}
+//FRAGMENT pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
+lda {c1},x
+cmp #{c2}
+bne {la1}
+//FRAGMENT pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
+lda #{c2}
+cmp {c1},y
+bne {la1}
+//FRAGMENT pwuc1_derefidx_vbuz1=_word_vbuxx
+ldy {z1}
+txa
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=_word_vbuyy
+tya
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuz1
+lda {z1}
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuxx
+txa
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuyy
+tya
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuz1
+lda {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuxx
+txa
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuyy
+tya
+sta {c1},y
+lda #0
+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 qbuc1_derefidx_vbuxx=pbuz1
+lda {z1}
+sta {c1},x
+lda {z1}+1
+sta {c1}+1,x
+//FRAGMENT qbuc1_derefidx_vbuyy=pbuz1
+lda {z1}
+sta {c1},y
+lda {z1}+1
+sta {c1}+1,y
+//FRAGMENT vbuyy_ge_vbuz1_then_la1
+cpy {z1}
+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 vbuxx_ge_vbuyy_then_la1
+sty $ff
+cpx $ff
+bcs {la1}
+//FRAGMENT vwuz1=vwuz1_ror_3
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {z1}
+lsr {z1}+1
+ror {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 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 vwuz1=vbuc1_plus_vwuz1
+lda #{c1}
+clc
+adc {z1}
+sta {z1}
+bcc !+
+inc {z1}+1
+!:
//FRAGMENT pbuz1=pbuz2_minus_vwuz3
lda {z2}
sec
@@ -7664,10 +8253,6 @@ sta {z1}
iny
lda ({z2}),y
sta {z1}+1
-//FRAGMENT vbuz1=pbuz2_derefidx_vbuz3
-ldy {z3}
-lda ({z2}),y
-sta {z1}
//FRAGMENT vbuz1_le_0_then_la1
lda {z1}
cmp #0
@@ -7696,12 +8281,6 @@ 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
@@ -7794,29 +8373,6 @@ sta {z1}
iny
lda ({z2}),y
sta {z1}+1
-//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_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 vbuaa_le_0_then_la1
cmp #0
beq {la1}
@@ -7847,57 +8403,6 @@ 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}
@@ -7993,10 +8498,6 @@ ldy {z1}
lda {c1},y
cmp {z2}
beq {la1}
-//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
-lda #{c2}
-ora {c1}
-sta {c1}
//FRAGMENT vbsz1=_sbyte_vwuz2
lda {z2}
sta {z1}
@@ -8234,9 +8735,6 @@ 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}
@@ -8253,22 +8751,6 @@ bcs {la1}
//FRAGMENT vbuz1_le_vbuaa_then_la1
cmp {z1}
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
@@ -8963,19 +9445,6 @@ 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 vbuz1=pbuz2_derefidx_vbuaa
tay
lda ({z2}),y
@@ -8991,15 +9460,6 @@ tax
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 vwuz1=vwuz2_bor_vbuxx
txa
ora {z2}
@@ -9025,15 +9485,6 @@ sta ({z1}),y
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}
@@ -9443,90 +9894,24 @@ sta {z1}+1
//FRAGMENT _deref_pbsc1=vbsz1
lda {z1}
sta {c1}
-//FRAGMENT pwuc1_derefidx_vbuz1=_word_vbuz2
-lda {z2}
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
//FRAGMENT pwuc1_derefidx_vbuaa=_word_vbuz1
tay
lda {z1}
sta {c1},y
lda #0
sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuz1
-lda {z1}
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuz1
-lda {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=_word_vbuxx
-ldy {z1}
-txa
-sta {c1},y
-lda #0
-sta {c1}+1,y
//FRAGMENT pwuc1_derefidx_vbuaa=_word_vbuxx
tay
txa
sta {c1},y
lda #0
sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuxx
-txa
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuxx
-txa
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=_word_vbuyy
-tya
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
//FRAGMENT pwuc1_derefidx_vbuaa=_word_vbuyy
tax
tya
sta {c1},x
lda #0
sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuxx=_word_vbuyy
-tya
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuyy=_word_vbuyy
-tya
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
-lda #{c2}
-ldy {z1}
-cmp {c1},y
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1
-tay
-lda #{c2}
-cmp {c1},y
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
-lda {c1},x
-cmp #{c2}
-bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
-lda #{c2}
-cmp {c1},y
-bne {la1}
//FRAGMENT vbuxx_neq_vbuaa_then_la1
tay
stx $ff
@@ -10992,10 +11377,6 @@ bne {la1}
lda {z1}
cmp #<{c1}
bne {la1}
-//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
-ldy {z1}
-lda {z2}
-sta {c1},y
//FRAGMENT vwuz1=vwuz2_ror_4
lda {z2}+1
lsr
@@ -12735,14 +13116,6 @@ sta {z1}
bcc !+
inc {z1}+1
!:
-//FRAGMENT pssz1=pssc1_plus_vbuz2
-lda {z2}
-clc
-adc #<{c1}
-sta {z1}
-lda #>{c1}
-adc #0
-sta {z1}+1
//FRAGMENT pwsz1_derefidx_vbuc1=vwsc2
ldy #{c1}
lda #<{c2}
@@ -12764,29 +13137,6 @@ ldy {z1}
lda {c2},y
cmp #{c1}
beq {la1}
-//FRAGMENT pssz1=pssc1_plus_vbuaa
-clc
-adc #<{c1}
-sta {z1}
-lda #>{c1}
-adc #0
-sta {z1}+1
-//FRAGMENT pssz1=pssc1_plus_vbuxx
-txa
-clc
-adc #<{c1}
-sta {z1}
-lda #>{c1}
-adc #0
-sta {z1}+1
-//FRAGMENT pssz1=pssc1_plus_vbuyy
-tya
-clc
-adc #<{c1}
-sta {z1}
-lda #>{c1}
-adc #0
-sta {z1}+1
//FRAGMENT pbsz1_derefidx_vbuc1=vbsxx
ldy #{c1}
txa
@@ -12874,10 +13224,6 @@ sta {z1}
ldy {z2}
lda {c1}+1,y
sta {z1}
-//FRAGMENT vbuz1=vbuc1_bxor_vbuz2
-lda #{c1}
-eor {z2}
-sta {z1}
//FRAGMENT pwuc1_derefidx_vbuz1=vbuxx
ldy {z1}
txa
@@ -13099,17 +13445,6 @@ 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 vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldy {z1}
txa
@@ -13289,28 +13624,12 @@ bcc {la1}
ldy {m1}
tya
sta {c1},y
-//FRAGMENT pwuc1_derefidx_vbuz1=vwuc2
-ldy {z1}
-lda #<{c2}
-sta {c1},y
-lda #>{c2}
-sta {c1}+1,y
//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 _deref_pbuc1_ge_vbuc2_then_la1
lda {c1}
cmp #{c2}
@@ -15589,15 +15908,6 @@ tax
//FRAGMENT vbuyy=_hi_pwsc1_derefidx_vbuyy
lda {c1}+1,y
tay
-//FRAGMENT isr_hardware_all_entry
-sta rega+1 @clob_a
-stx regx+1 @clob_x
-sty regy+1 @clob_y
-//FRAGMENT isr_hardware_all_exit
-rega: @clob_a lda #0 @clob_a
-regx: @clob_x ldx #0 @clob_x
-regy: @clob_y ldy #0 @clob_y
-rti
//FRAGMENT vwuz1=vbuz2_band_vbuc1
lda {z2}
and #{c1}
@@ -15853,19 +16163,6 @@ bne {la1}
lda {z2}
ldy #0
sta ({z1}),y
-//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 vwuz1=vwuz2_minus_vbuc1
sec
lda {z2}
@@ -16101,19 +16398,6 @@ 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}
@@ -16362,6 +16646,112 @@ tay
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__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
@@ -17727,17 +18117,6 @@ lda #0
!:
adc {z2}+1
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 vbsaa_eq_vbsc1_then_la1
cmp #{c1}
beq {la1}
@@ -17809,13 +18188,6 @@ lda #0
!:
adc {z1}+1
sta {z1}+1
-//FRAGMENT vwuz1=vwuz1_ror_3
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
//FRAGMENT vwuz1=vwuz1_rol_2
asl {z1}
rol {z1}+1
@@ -18193,6 +18565,37 @@ ldy #{c1}
clc
adc ({z1}),y
sta ({z1}),y
+//FRAGMENT vbuz1=_deref_pbuz2_ror_4
+ldy #0
+lda ({z2}),y
+lsr
+lsr
+lsr
+lsr
+sta {z1}
+//FRAGMENT vbuaa=_deref_pbuz1_ror_4
+ldy #0
+lda ({z1}),y
+lsr
+lsr
+lsr
+lsr
+//FRAGMENT vbuxx=_deref_pbuz1_ror_4
+ldy #0
+lda ({z1}),y
+lsr
+lsr
+lsr
+lsr
+tax
+//FRAGMENT vbuyy=_deref_pbuz1_ror_4
+ldy #0
+lda ({z1}),y
+lsr
+lsr
+lsr
+lsr
+tay
//FRAGMENT _deref_pbuc1=_deref_pbuc1_bxor_vbuc2
lda #{c2}
eor {c1}
@@ -18513,6 +18916,126 @@ cmp {z1}
beq !+
bcs {la1}
!:
+//FRAGMENT pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},y
+lda {c2}+1,y
+sta {c1}+1,y
+lda {c2}+2,y
+sta {c1}+2,y
+lda {c2}+3,y
+sta {c1}+3,y
+//FRAGMENT pbuz1_derefidx_vbuz2_eq_0_then_la1
+ldy {z2}
+lda ({z1}),y
+
+cmp #0
+beq {la1}
+//FRAGMENT pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_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
+lda {c1}+2,y
+adc {c2}+2,y
+sta {c1}+2,y
+lda {c1}+3,y
+adc {c2}+3,y
+sta {c1}+3,y
+//FRAGMENT qbuc1_derefidx_vbuaa=pbuz1
+tay
+lda {z1}
+sta {c1},y
+lda {z1}+1
+sta {c1}+1,y
+//FRAGMENT pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa
+tay
+lda {c2},y
+sta {c1},y
+lda {c2}+1,y
+sta {c1}+1,y
+lda {c2}+2,y
+sta {c1}+2,y
+lda {c2}+3,y
+sta {c1}+3,y
+//FRAGMENT pduc1_derefidx_vbuxx=pduc2_derefidx_vbuxx
+lda {c2},x
+sta {c1},x
+lda {c2}+1,x
+sta {c1}+1,x
+lda {c2}+2,x
+sta {c1}+2,x
+lda {c2}+3,x
+sta {c1}+3,x
+//FRAGMENT pduc1_derefidx_vbuyy=pduc2_derefidx_vbuyy
+lda {c2},y
+sta {c1},y
+lda {c2}+1,y
+sta {c1}+1,y
+lda {c2}+2,y
+sta {c1}+2,y
+lda {c2}+3,y
+sta {c1}+3,y
+//FRAGMENT pbuz1_derefidx_vbuxx_eq_0_then_la1
+txa
+tay
+lda ({z1}),y
+
+cmp #0
+beq {la1}
+//FRAGMENT pbuz1_derefidx_vbuyy_eq_0_then_la1
+lda ({z1}),y
+
+cmp #0
+beq {la1}
+//FRAGMENT pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa
+tay
+clc
+lda {c1},y
+adc {c2},y
+sta {c1},y
+lda {c1}+1,y
+adc {c2}+1,y
+sta {c1}+1,y
+lda {c1}+2,y
+adc {c2}+2,y
+sta {c1}+2,y
+lda {c1}+3,y
+adc {c2}+3,y
+sta {c1}+3,y
+//FRAGMENT pduc1_derefidx_vbuxx=pduc1_derefidx_vbuxx_plus_pduc2_derefidx_vbuxx
+clc
+lda {c1},x
+adc {c2},x
+sta {c1},x
+lda {c1}+1,x
+adc {c2}+1,x
+sta {c1}+1,x
+lda {c1}+2,x
+adc {c2}+2,x
+sta {c1}+2,x
+lda {c1}+3,x
+adc {c2}+3,x
+sta {c1}+3,x
+//FRAGMENT pduc1_derefidx_vbuyy=pduc1_derefidx_vbuyy_plus_pduc2_derefidx_vbuyy
+clc
+lda {c1},y
+adc {c2},y
+sta {c1},y
+lda {c1}+1,y
+adc {c2}+1,y
+sta {c1}+1,y
+lda {c1}+2,y
+adc {c2}+2,y
+sta {c1}+2,y
+lda {c1}+3,y
+adc {c2}+3,y
+sta {c1}+3,y
//FRAGMENT pbuz1=_dec_pbuz2
lda {z2}
sec
@@ -19456,526 +19979,3 @@ ror {z1}
dex
bne !-
!e:
-//FRAGMENT pbuz1=pbuz2_minus_vwuc1
-lda {z2}
-sec
-sbc #<{c1}
-sta {z1}
-lda {z2}+1
-sbc #>{c1}
-sta {z1}+1
-//FRAGMENT vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2
-ldy #{c2}
-lda ({z2}),y
-tay
-lda #{c1}
-cpy #0
-beq !e+
-!:
-asl
-dey
-bne !-
-!e:
-sta {z1}
-//FRAGMENT pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1
-lda #{c2}
-ldy #{c1}
-cmp ({z1}),y
-beq {la1}
-//FRAGMENT pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1
-ldy #{c1}
-lda ({z1}),y
-
-cmp #{c2}
-bne {la1}
-//FRAGMENT _deref_(qbuz1_derefidx_vbuc1)=vbuc2
-ldx #{c2}
-ldy #{c1}
-lda ({z1}),y
-sta !+ +1
-iny
-lda ({z1}),y
-sta !+ +2
-!: stx $ffff
-//FRAGMENT pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3
-ldy #{c3}
-lda ({z1}),y
-ldy #{c2}
-pha
-lda ({z1}),y
-tay
-pla
-sta {c1},y
-//FRAGMENT vwuz1=_deref_pwuz2_ror_4
-ldy #0
-lda ({z2}),y
-sta {z1}
-iny
-lda ({z2}),y
-sta {z1}+1
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-//FRAGMENT vwuz1=pwuz2_derefidx_vbuc1_ror_4
-ldy #{c1}
-lda ({z2}),y
-sta {z1}
-iny
-lda ({z2}),y
-sta {z1}+1
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-lsr {z1}+1
-ror {z1}
-//FRAGMENT _deref_pwuz1_lt_vwuc1_then_la1
-ldy #1
-lda ({z1}),y
-cmp #>{c1}
-bcc {la1}
-bne !+
-dey
-lda ({z1}),y
-cmp #<{c1}
-bcc {la1}
-!:
-//FRAGMENT _deref_pwuz1_gt_vwuc1_then_la1
-ldy #1
-lda #>{c1}
-cmp ({z1}),y
-bcc {la1}
-bne !+
-dey
-lda #<{c1}
-cmp ({z1}),y
-bcc {la1}
-!:
-//FRAGMENT pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1
-ldy #{c1}
-iny
-lda ({z1}),y
-cmp #>{c2}
-bcc {la1}
-bne !+
-dey
-lda ({z1}),y
-cmp #<{c2}
-bcc {la1}
-!:
-//FRAGMENT pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1
-ldy #{c1}
-iny
-lda #>{c2}
-cmp ({z1}),y
-bcc {la1}
-bne !+
-dey
-lda #<{c2}
-cmp ({z1}),y
-bcc {la1}
-!:
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2
-ldx {z2}
-ldy #{c1}
-clc
-lda ({z1}),y
-adc {c2},x
-sta ({z1}),y
-iny
-lda ({z1}),y
-adc {c2}+1,x
-sta ({z1}),y
-//FRAGMENT _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
-ldy #{c1}
-sty $ff
-clc
-lda ({z1}),y
-ldy #0
-adc ({z1}),y
-sta ({z1}),y
-ldy $ff
-iny
-lda ({z1}),y
-ldy #1
-adc ({z1}),y
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
-ldy #{c2}
-clc
-lda ({z1}),y
-ldy #{c1}
-adc ({z1}),y
-sta ({z1}),y
-ldy #{c2}+1
-lda ({z1}),y
-ldy #{c1}+1
-adc ({z1}),y
-sta ({z1}),y
-//FRAGMENT vwuz1=vbuc1_plus_vwuz2
-lda #{c1}
-clc
-adc {z2}
-sta {z1}
-lda #0
-adc {z2}+1
-sta {z1}+1
-//FRAGMENT qbuc1_derefidx_vbuz1=pbuz2
-ldy {z1}
-lda {z2}
-sta {c1},y
-lda {z2}+1
-sta {c1}+1,y
-//FRAGMENT vbuaa=vbuc1_rol_pbuz1_derefidx_vbuc2
-ldy #{c2}
-lda ({z1}),y
-tay
-lda #{c1}
-cpy #0
-beq !e+
-!:
-asl
-dey
-bne !-
-!e:
-//FRAGMENT vbuxx=vbuc1_rol_pbuz1_derefidx_vbuc2
-ldy #{c2}
-lda ({z1}),y
-tax
-lda #{c1}
-cpx #0
-beq !e+
-!:
-asl
-dex
-bne !-
-!e:
-tax
-//FRAGMENT vbuyy=vbuc1_rol_pbuz1_derefidx_vbuc2
-ldy #{c2}
-lda ({z1}),y
-tay
-lda #{c1}
-cpy #0
-beq !e+
-!:
-asl
-dey
-bne !-
-!e:
-tay
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
-ldy #{c1}
-tax
-clc
-lda ({z1}),y
-adc {c2},x
-sta ({z1}),y
-iny
-lda ({z1}),y
-adc {c2}+1,x
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuxx
-ldy #{c1}
-clc
-lda ({z1}),y
-adc {c2},x
-sta ({z1}),y
-iny
-lda ({z1}),y
-adc {c2}+1,x
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuyy
-tya
-ldy #{c1}
-tax
-clc
-lda ({z1}),y
-adc {c2},x
-sta ({z1}),y
-iny
-lda ({z1}),y
-adc {c2}+1,x
-sta ({z1}),y
-//FRAGMENT qbuc1_derefidx_vbuxx=pbuz1
-lda {z1}
-sta {c1},x
-lda {z1}+1
-sta {c1}+1,x
-//FRAGMENT qbuc1_derefidx_vbuyy=pbuz1
-lda {z1}
-sta {c1},y
-lda {z1}+1
-sta {c1}+1,y
-//FRAGMENT vwuz1=vbuc1_plus_vwuz1
-lda #{c1}
-clc
-adc {z1}
-sta {z1}
-bcc !+
-inc {z1}+1
-!:
-//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__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 vbuz1=_deref_pbuz2_ror_4
-ldy #0
-lda ({z2}),y
-lsr
-lsr
-lsr
-lsr
-sta {z1}
-//FRAGMENT vbuaa=_deref_pbuz1_ror_4
-ldy #0
-lda ({z1}),y
-lsr
-lsr
-lsr
-lsr
-//FRAGMENT vbuxx=_deref_pbuz1_ror_4
-ldy #0
-lda ({z1}),y
-lsr
-lsr
-lsr
-lsr
-tax
-//FRAGMENT vbuyy=_deref_pbuz1_ror_4
-ldy #0
-lda ({z1}),y
-lsr
-lsr
-lsr
-lsr
-tay
-//FRAGMENT pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},y
-lda {c2}+1,y
-sta {c1}+1,y
-lda {c2}+2,y
-sta {c1}+2,y
-lda {c2}+3,y
-sta {c1}+3,y
-//FRAGMENT pbuz1_derefidx_vbuz2_eq_0_then_la1
-ldy {z2}
-lda ({z1}),y
-
-cmp #0
-beq {la1}
-//FRAGMENT pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_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
-lda {c1}+2,y
-adc {c2}+2,y
-sta {c1}+2,y
-lda {c1}+3,y
-adc {c2}+3,y
-sta {c1}+3,y
-//FRAGMENT qbuc1_derefidx_vbuaa=pbuz1
-tay
-lda {z1}
-sta {c1},y
-lda {z1}+1
-sta {c1}+1,y
-//FRAGMENT pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1},y
-lda {c2}+1,y
-sta {c1}+1,y
-lda {c2}+2,y
-sta {c1}+2,y
-lda {c2}+3,y
-sta {c1}+3,y
-//FRAGMENT pduc1_derefidx_vbuxx=pduc2_derefidx_vbuxx
-lda {c2},x
-sta {c1},x
-lda {c2}+1,x
-sta {c1}+1,x
-lda {c2}+2,x
-sta {c1}+2,x
-lda {c2}+3,x
-sta {c1}+3,x
-//FRAGMENT pduc1_derefidx_vbuyy=pduc2_derefidx_vbuyy
-lda {c2},y
-sta {c1},y
-lda {c2}+1,y
-sta {c1}+1,y
-lda {c2}+2,y
-sta {c1}+2,y
-lda {c2}+3,y
-sta {c1}+3,y
-//FRAGMENT pbuz1_derefidx_vbuxx_eq_0_then_la1
-txa
-tay
-lda ({z1}),y
-
-cmp #0
-beq {la1}
-//FRAGMENT pbuz1_derefidx_vbuyy_eq_0_then_la1
-lda ({z1}),y
-
-cmp #0
-beq {la1}
-//FRAGMENT pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa
-tay
-clc
-lda {c1},y
-adc {c2},y
-sta {c1},y
-lda {c1}+1,y
-adc {c2}+1,y
-sta {c1}+1,y
-lda {c1}+2,y
-adc {c2}+2,y
-sta {c1}+2,y
-lda {c1}+3,y
-adc {c2}+3,y
-sta {c1}+3,y
-//FRAGMENT pduc1_derefidx_vbuxx=pduc1_derefidx_vbuxx_plus_pduc2_derefidx_vbuxx
-clc
-lda {c1},x
-adc {c2},x
-sta {c1},x
-lda {c1}+1,x
-adc {c2}+1,x
-sta {c1}+1,x
-lda {c1}+2,x
-adc {c2}+2,x
-sta {c1}+2,x
-lda {c1}+3,x
-adc {c2}+3,x
-sta {c1}+3,x
-//FRAGMENT pduc1_derefidx_vbuyy=pduc1_derefidx_vbuyy_plus_pduc2_derefidx_vbuyy
-clc
-lda {c1},y
-adc {c2},y
-sta {c1},y
-lda {c1}+1,y
-adc {c2}+1,y
-sta {c1}+1,y
-lda {c1}+2,y
-adc {c2}+2,y
-sta {c1}+2,y
-lda {c1}+3,y
-adc {c2}+3,y
-sta {c1}+3,y
diff --git a/src/main/fragment/cache/fragment-cache-rom6502x.asm b/src/main/fragment/cache/fragment-cache-rom6502x.asm
index 339758d6d..4f85ab34b 100644
--- a/src/main/fragment/cache/fragment-cache-rom6502x.asm
+++ b/src/main/fragment/cache/fragment-cache-rom6502x.asm
@@ -1,13 +1,12 @@
-//KICKC FRAGMENT CACHE 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
+//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
+inc {c1}
//FRAGMENT isr_hardware_all_entry
pha @clob_none
txa @clob_x
pha @clob_x
tya @clob_y
pha @clob_y
-//FRAGMENT _deref_pbuc1=vbuc2
-lda #{c2}
-sta {c1}
//FRAGMENT isr_hardware_all_exit
pla @clob_y
tay @clob_y
@@ -15,53 +14,71 @@ pla @clob_x
tax @clob_x
pla @clob_none
rti
-//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_pbuc1=_inc__deref_pbuc1
-inc {c1}
-//FRAGMENT vbuz1=vbuz2
-lda {z2}
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_band_vbuc1
+//FRAGMENT vbuz1=vbuc1
lda #{c1}
-and {z2}
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ldy {z1}
+lda {c2},y
+sta {c1},y
+//FRAGMENT vbuz1=_inc_vbuz1
+inc {z1}
+//FRAGMENT vbuz1_neq_vbuc1_then_la1
+lda #{c1}
+cmp {z1}
+bne {la1}
+//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 vbuxx_neq_vbuc1_then_la1
+cpx #{c1}
+bne {la1}
+//FRAGMENT vbuxx=vbuc1
+ldx #{c1}
+//FRAGMENT vbuxx=_inc_vbuxx
+inx
+//FRAGMENT vbuyy=vbuc1
+ldy #{c1}
+//FRAGMENT vbuyy=_inc_vbuyy
+iny
+//FRAGMENT vbuyy_neq_vbuc1_then_la1
+cpy #{c1}
+bne {la1}
+//FRAGMENT _deref_pbuc1=vbuc2
+lda #{c2}
+sta {c1}
+//FRAGMENT _deref_pbuc1=vbuz1
+lda {z1}
+sta {c1}
+//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
+lda #{c2}
+and {c1}
sta {z1}
//FRAGMENT 0_eq_vbuz1_then_la1
lda {z1}
cmp #0
beq {la1}
-//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
-dec {c1}
-//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2
-lda #{c2}
-and {c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuc1
-lda #{c1}
-sta {z1}
//FRAGMENT pbuc1_derefidx_vbuz1=vbuc2
lda #{c2}
ldy {z1}
sta {c1},y
-//FRAGMENT vbuz1=_inc_vbuz1
-inc {z1}
//FRAGMENT 0_neq_vbuz1_then_la1
lda {z1}
cmp #0
bne {la1}
-//FRAGMENT vwuz1=vwuc1
+//FRAGMENT pvoz1=pvoc1
lda #<{c1}
sta {z1}
lda #>{c1}
sta {z1}+1
-//FRAGMENT pvoz1=pvoc1
+//FRAGMENT vwuz1=vwuc1
lda #<{c1}
sta {z1}
lda #>{c1}
@@ -71,6 +88,673 @@ lda #<{c1}
sta {z1}
lda #>{c1}
sta {z1}+1
+//FRAGMENT vwuz1_lt_vbuc1_then_la1
+lda {z1}+1
+bne !+
+lda {z1}
+cmp #{c1}
+bcc {la1}
+!:
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_vbuc2
+lda #{c2}
+ldy {z2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_bxor_vbuc1
+lda #{c1}
+eor {z2}
+sta {z1}
+//FRAGMENT vbuz1=vbuz2
+lda {z2}
+sta {z1}
+//FRAGMENT vwuz1_ge_vbuc1_then_la1
+lda {z1}+1
+bne {la1}
+lda {z1}
+cmp #{c1}
+bcs {la1}
+!:
+//FRAGMENT vbuz1=_inc_vbuz2
+ldy {z2}
+iny
+sty {z1}
+//FRAGMENT vwuz1=_inc_vwuz1
+inc {z1}
+bne !+
+inc {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 pwuz1=pwuc1_plus_vwuz2
+clc
+lda {z2}
+adc #<{c1}
+sta {z1}
+lda {z2}+1
+adc #>{c1}
+sta {z1}+1
+//FRAGMENT _deref_pwuz1=vbuc1
+lda #{c1}
+ldy #0
+sta ({z1}),y
+tya
+iny
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=vbuc2
+lda #{c2}
+ldy #{c1}
+sta ({z1}),y
+lda #0
+iny
+sta ({z1}),y
+//FRAGMENT vwuz1_lt_vwuz2_then_la1
+lda {z1}+1
+cmp {z2}+1
+bcc {la1}
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
+ldy #{c1}
+sty $ff
+clc
+lda ({z1}),y
+ldy #0
+adc ({z1}),y
+sta ({z1}),y
+ldy $ff
+iny
+lda ({z1}),y
+ldy #1
+adc ({z1}),y
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_vbuc2
+lda #{c2}
+ldy #{c1}
+clc
+adc ({z1}),y
+sta ({z1}),y
+iny
+lda #0
+adc ({z1}),y
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
+ldy #{c2}
+clc
+lda ({z1}),y
+ldy #{c1}
+adc ({z1}),y
+sta ({z1}),y
+ldy #{c2}+1
+lda ({z1}),y
+ldy #{c1}+1
+adc ({z1}),y
+sta ({z1}),y
+//FRAGMENT vwuz1=_deref_pwuz2_ror_8
+ldy #1
+lda ({z2}),y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_bxor_vwuc2
+ldy #{c1}
+lda #<{c2}
+eor ({z1}),y
+sta ({z1}),y
+iny
+lda #>{c2}
+eor ({z1}),y
+sta ({z1}),y
+//FRAGMENT vwuz1=pwuz2_derefidx_vbuc1_ror_8
+ldy #{c1}
+lda #0
+sta {z1}+1
+iny
+lda ({z2}),y
+sta {z1}
+//FRAGMENT vbuz1=vbuz2_plus_vbuc1
+lax {z2}
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT vwuz1_lt_vbuz2_then_la1
+lda {z1}+1
+bne !+
+lda {z1}
+cmp {z2}
+bcc {la1}
+!:
+//FRAGMENT vwuz1_ge_vbuz2_then_la1
+lda {z1}+1
+bne {la1}
+lda {z1}
+cmp {z2}
+bcs {la1}
+!:
+//FRAGMENT vbuz1=vbuz2_minus_2
+lda {z2}
+sec
+sbc #2
+sta {z1}
+//FRAGMENT vwuz1=_word_vbuz2
+lda {z2}
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_rol_8
+lda {z2}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT pwuz1_derefidx_vbuc1=vwuz2
+ldy #{c1}
+lda {z2}
+sta ({z1}),y
+iny
+lda {z2}+1
+sta ({z1}),y
+//FRAGMENT vbuz1=vbuz2_rol_2
+lda {z2}
+asl
+asl
+sta {z1}
+//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+//FRAGMENT vwuz1=vwuz2
+lda {z2}
+sta {z1}
+lda {z2}+1
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz2_band_vwuc1
+lda {z2}
+and #<{c1}
+sta {z1}
+lda {z2}+1
+and #>{c1}
+sta {z1}+1
+//FRAGMENT vbuz1=vwuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT pwuz1_derefidx_vbuc1=vbuz2
+lda {z2}
+ldy #{c1}
+sta ({z1}),y
+lda #0
+iny
+sta ({z1}),y
+//FRAGMENT vbuz1=_hi_pvoz2
+lda {z2}+1
+sta {z1}
+//FRAGMENT vbuz1=_lo_pvoz2
+lda {z2}
+sta {z1}
+//FRAGMENT pbuz1=pbuz2
+lda {z2}
+sta {z1}
+lda {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 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 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 0_eq_vbuaa_then_la1
+cmp #0
+beq {la1}
+//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=pbuc1_derefidx_vbuz1_plus_vbuc2
+lda #{c2}
+ldy {z1}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_plus_vbuc2
+ldx {z1}
+lda {c1},x
+tax
+axs #-[{c2}]
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_plus_vbuc2
+lda #{c2}
+ldy {z1}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa_plus_vbuc2
+tay
+lda #{c2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa_plus_vbuc2
+tay
+lda #{c2}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa_plus_vbuc2
+tax
+lda {c1},x
+tax
+axs #-[{c2}]
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa_plus_vbuc2
+tay
+lda #{c2}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},x
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},x
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_plus_vbuc2
+lda {c1},x
+tax
+axs #-[{c2}]
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},x
+tay
+//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},y
+sta {z1}
+//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},y
+//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_vbuc2
+lda {c1},y
+tax
+axs #-[{c2}]
+//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_plus_vbuc2
+lda #{c2}
+clc
+adc {c1},y
+tay
+//FRAGMENT vbuz1=vbuaa_bxor_vbuc1
+eor #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+sta {z1}
+//FRAGMENT vbuz1=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+//FRAGMENT vbuaa=vbuaa_bxor_vbuc1
+eor #{c1}
+//FRAGMENT vbuaa=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+//FRAGMENT vbuaa=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+//FRAGMENT vbuxx=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+tax
+//FRAGMENT vbuxx=vbuaa_bxor_vbuc1
+eor #{c1}
+tax
+//FRAGMENT vbuxx=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+tax
+//FRAGMENT vbuxx=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+tax
+//FRAGMENT vbuyy=vbuz1_bxor_vbuc1
+lda #{c1}
+eor {z1}
+tay
+//FRAGMENT vbuyy=vbuaa_bxor_vbuc1
+eor #{c1}
+tay
+//FRAGMENT vbuyy=vbuxx_bxor_vbuc1
+txa
+eor #{c1}
+tay
+//FRAGMENT vbuyy=vbuyy_bxor_vbuc1
+tya
+eor #{c1}
+tay
+//FRAGMENT vbuz1=vbuaa
+sta {z1}
+//FRAGMENT vbuaa=_inc_vbuz1
+lda {z1}
+clc
+adc #1
+//FRAGMENT vbuz1=vbuxx_plus_vbuc1
+txa
+axs #-[{c1}]
+stx {z1}
+//FRAGMENT vbuaa=vbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+//FRAGMENT vbuaa=vbuxx_plus_vbuc1
+txa
+clc
+adc #{c1}
+//FRAGMENT vbuxx=vbuz1_plus_vbuc1
+lax {z1}
+axs #-[{c1}]
+//FRAGMENT vbuxx=vbuxx_plus_vbuc1
+txa
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuz1_plus_vbuc1
+lda #{c1}
+clc
+adc {z1}
+tay
+//FRAGMENT vbuyy=vbuxx_plus_vbuc1
+txa
+clc
+adc #{c1}
+tay
+//FRAGMENT vwuz1_lt_vbuxx_then_la1
+lda {z1}+1
+bne !+
+stx $ff
+lda {z1}
+cmp $ff
+bcc {la1}
+!:
+//FRAGMENT vwuz1_ge_vbuxx_then_la1
+lda {z1}+1
+bne {la1}
+stx $ff
+lda {z1}
+cmp $ff
+bcs {la1}
+!:
+//FRAGMENT vwuz1_ge_vbuyy_then_la1
+lda {z1}+1
+bne {la1}
+sty $ff
+lda {z1}
+cmp $ff
+bcs {la1}
+!:
+//FRAGMENT vbuz1=vbuxx_minus_2
+dex
+dex
+stx {z1}
+//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=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=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 pbuc1_derefidx_vbuaa=_byte_vwuz1
+tay
+lda {z1}
+sta {c1},y
+//FRAGMENT pbuc1_derefidx_vbuxx=_byte_vwuz1
+lda {z1}
+sta {c1},x
+//FRAGMENT pbuc1_derefidx_vbuyy=_byte_vwuz1
+lda {z1}
+sta {c1},y
+//FRAGMENT vbuxx=vbuz1
+ldx {z1}
+//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 pwuz1_derefidx_vbuc1=vbuxx
+txa
+ldy #{c1}
+sta ({z1}),y
+lda #0
+iny
+sta ({z1}),y
+//FRAGMENT pwuz1_derefidx_vbuc1=vbuyy
+tya
+ldy #{c1}
+sta ({z1}),y
+lda #0
+iny
+sta ({z1}),y
+//FRAGMENT vbuaa=_hi_pvoz1
+lda {z1}+1
+//FRAGMENT vbuxx=_hi_pvoz1
+ldx {z1}+1
+//FRAGMENT _deref_pbuc1=vbuaa
+sta {c1}
+//FRAGMENT vbuaa=_lo_pvoz1
+lda {z1}
+//FRAGMENT vbuxx=_lo_pvoz1
+ldx {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 vbuaa=vbuz1_minus_2
+lda {z1}
+sec
+sbc #2
+//FRAGMENT vbuxx=vbuz1_minus_2
+ldx {z1}
+dex
+dex
+//FRAGMENT vbuyy=vbuz1_minus_2
+ldy {z1}
+dey
+dey
+//FRAGMENT vbuz1=_inc_vbuxx
+inx
+stx {z1}
+//FRAGMENT _deref_pbuc1=vbuxx
+stx {c1}
+//FRAGMENT _deref_pbuc1=vbuyy
+sty {c1}
+//FRAGMENT vbuyy=_hi_pvoz1
+ldy {z1}+1
+//FRAGMENT vbuyy=_lo_pvoz1
+ldy {z1}
+//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 vbuz1=vbuxx
+stx {z1}
+//FRAGMENT vbuz1=vbuyy
+sty {z1}
+//FRAGMENT vbuxx=_inc_vbuz1
+ldx {z1}
+inx
+//FRAGMENT vbuyy=_inc_vbuz1
+ldy {z1}
+iny
+//FRAGMENT vwuz1=vwuz1_bxor_vwuz2
+lda {z1}
+eor {z2}
+sta {z1}
+lda {z1}+1
+eor {z2}+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 vwuz1=_deref_pwuz1_ror_8
+ldy #1
+lda ({z1}),y
+sta {z1}
+dey
+sty {z1}+1
+//FRAGMENT vwuz1=pwuz1_derefidx_vbuc1_ror_8
+ldy #{c1}
+iny
+lda ({z1}),y
+sta {z1}
+lda #0
+sta {z1}+1
+//FRAGMENT vwuz1=vwuz1_rol_8
+lda {z1}
+sta {z1}+1
+lda #0
+sta {z1}
+//FRAGMENT vwuz1=vwuz1_band_vwuc1
+lda {z1}
+and #<{c1}
+sta {z1}
+lda {z1}+1
+and #>{c1}
+sta {z1}+1
+//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 vbuz1=vbuz2_band_vbuc1
+lda #{c1}
+and {z2}
+sta {z1}
+//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
+dec {c1}
//FRAGMENT vbuz1_lt_vbuc1_then_la1
lda {z1}
cmp #{c1}
@@ -115,38 +799,6 @@ 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
@@ -171,12 +823,8 @@ 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}
@@ -205,37 +853,10 @@ 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}
@@ -342,29 +963,6 @@ 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
@@ -379,23 +977,9 @@ 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 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 vbuz1=vbuz2_bor_vbuyy
tya
ora {z2}
@@ -413,8 +997,6 @@ ora {z1}
//FRAGMENT vbuaa=vbuz1_bor_vbuyy
tya
ora {z1}
-//FRAGMENT vbuz1=vbuxx
-stx {z1}
//FRAGMENT vbuxx=vbuz1_bor_vbuz2
lda {z1}
ora {z2}
@@ -430,8 +1012,6 @@ tax
tya
ora {z1}
tax
-//FRAGMENT vbuz1=vbuyy
-sty {z1}
//FRAGMENT vbuyy=vbuz1_bor_vbuz2
lda {z1}
ora {z2}
@@ -488,15 +1068,6 @@ 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
@@ -512,17 +1083,374 @@ sta {z1}
bcc !+
inc {z1}+1
!:
-//FRAGMENT vbuz1_neq_vbuc1_then_la1
-lda #{c1}
+//FRAGMENT vbuz1_ge_vbuc1_then_la1
+lda {z1}
+cmp #{c1}
+bcs {la1}
+//FRAGMENT vbuz1=vbuz2_rol_3
+lda {z2}
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuc2
+lda #{c2}
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT vbuz1_lt_vbuz2_then_la1
+lda {z1}
+cmp {z2}
+bcc {la1}
+//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_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 vwuz1=pwuc1_derefidx_vbuz2_ror_8
+ldy {z2}
+lda #0
+sta {z1}+1
+lda {c1}+1,y
+sta {z1}
+//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2
+ldy {z1}
+lda {c1},y
+eor #<{c2}
+sta {c1},y
+lda {c1}+1,y
+eor #>{c2}
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vwuz2
+ldy {z1}
+lda {z2}
+sta {c1},y
+lda {z2}+1
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuz2
+lda {z2}
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT vbuxx_ge_vbuc1_then_la1
+cpx #{c1}
+bcs {la1}
+//FRAGMENT vbuaa=vbuz1_rol_3
+lda {z1}
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuz1_rol_3
+lda {z1}
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuz1_rol_3
+lda {z1}
+asl
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuxx_rol_3
+txa
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuxx_rol_3
+txa
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuxx_rol_3
+txa
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuxx_rol_3
+txa
+asl
+asl
+asl
+tay
+//FRAGMENT vbuz1=vbuyy_rol_3
+tya
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_rol_3
+tya
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuyy_rol_3
+tya
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuyy_rol_3
+tya
+asl
+asl
+asl
+tay
+//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 vbuaa_lt_vbuz1_then_la1
cmp {z1}
-bne {la1}
+bcc {la1}
+//FRAGMENT vbuz1=vbuaa_rol_3
+asl
+asl
+asl
+sta {z1}
+//FRAGMENT vbuaa=vbuaa_rol_3
+asl
+asl
+asl
+//FRAGMENT vbuxx=vbuaa_rol_3
+asl
+asl
+asl
+tax
+//FRAGMENT vbuyy=vbuaa_rol_3
+asl
+asl
+asl
+tay
+//FRAGMENT pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_pwuc2_derefidx_vbuaa
+tax
+tay
+clc
+lda {c1},y
+adc {c2},x
+sta {c1},y
+lda {c1}+1,y
+adc {c2}+1,x
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuxx
+txa
+tay
+txa
+sty $ff
+ldx $ff
+tay
+clc
+lda {c1},y
+adc {c2},x
+sta {c1},y
+lda {c1}+1,y
+adc {c2}+1,x
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy
+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_vbuxx=pwuc1_derefidx_vbuxx_plus_vbuc2
+clc
+lda {c1},x
+adc #{c2}
+sta {c1},x
+lda {c1}+1,x
+adc #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2
+clc
+lda {c1},y
+adc #{c2}
+sta {c1},y
+lda {c1}+1,y
+adc #0
+sta {c1}+1,y
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_ror_8
+txa
+tay
+lda #0
+sta {z1}+1
+lda {c1}+1,y
+sta {z1}
+//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy_ror_8
+lda #0
+sta {z1}+1
+lda {c1}+1,y
+sta {z1}
+//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_bxor_vwuc2
+txa
+tay
+lda {c1},y
+eor #<{c2}
+sta {c1},y
+lda {c1}+1,y
+eor #>{c2}
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2
+lda {c1},y
+eor #<{c2}
+sta {c1},y
+lda {c1}+1,y
+eor #>{c2}
+sta {c1}+1,y
+//FRAGMENT vbuz1=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+sta {z1}
+//FRAGMENT vbuaa=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+//FRAGMENT vbuxx=vbuyy_plus_vbuc1
+tya
+tax
+axs #-[{c1}]
+//FRAGMENT vbuyy=vbuyy_plus_vbuc1
+tya
+clc
+adc #{c1}
+tay
+//FRAGMENT vwuz1_lt_vbuyy_then_la1
+lda {z1}+1
+bne !+
+sty $ff
+lda {z1}
+cmp $ff
+bcc {la1}
+!:
+//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 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 pwuc1_derefidx_vbuaa=vwuz1
+tay
+lda {z1}
+sta {c1},y
+lda {z1}+1
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuaa
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuxx
+ldy {z1}
+txa
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuz1=vbuyy
+tya
+ldy {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuxx=vbuz1
+lda {z1}
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuxx=vbuaa
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuxx=vbuxx
+txa
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuxx=vbuyy
+tya
+sta {c1},x
+lda #0
+sta {c1}+1,x
+//FRAGMENT pwuc1_derefidx_vbuyy=vbuz1
+lda {z1}
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=vbuaa
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=vbuxx
+txa
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT pwuc1_derefidx_vbuyy=vbuyy
+tya
+sta {c1},y
+lda #0
+sta {c1}+1,y
+//FRAGMENT vbuxx_lt_vbuz1_then_la1
+cpx {z1}
+bcc {la1}
+//FRAGMENT vbuyy_lt_vbuz1_then_la1
+cpy {z1}
+bcc {la1}
//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
@@ -553,11 +1481,6 @@ 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
@@ -704,20 +1627,6 @@ 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}
@@ -799,11 +1708,6 @@ sta {z1}+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
@@ -824,10 +1728,6 @@ sta {z1}
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}]
@@ -836,20 +1736,6 @@ stx {z1}
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
@@ -865,44 +1751,6 @@ tax
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
@@ -924,9 +1772,6 @@ sta {c1},y
tay
lda {c2},x
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
@@ -941,9 +1786,6 @@ sta {c1},x
//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 vbuxx=vbuxx_minus_vbuc1
txa
axs #{c1}
@@ -1154,17 +1996,6 @@ 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}
@@ -1178,834 +2009,3 @@ inx
//FRAGMENT vbuyy=vbuz1_plus_1
ldy {z1}
iny
-//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
-ldy {z1}
-lda {c2},y
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuaa
-tay
-lda {c2},y
-sta {c1},y
-//FRAGMENT vbuxx_neq_vbuc1_then_la1
-cpx #{c1}
-bne {la1}
-//FRAGMENT vbuyy_neq_vbuc1_then_la1
-cpy #{c1}
-bne {la1}
-//FRAGMENT vwuz1_lt_vbuc1_then_la1
-lda {z1}+1
-bne !+
-lda {z1}
-cmp #{c1}
-bcc {la1}
-!:
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_vbuc2
-lda #{c2}
-ldy {z2}
-clc
-adc {c1},y
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_bxor_vbuc1
-lda #{c1}
-eor {z2}
-sta {z1}
-//FRAGMENT vwuz1_ge_vbuc1_then_la1
-lda {z1}+1
-bne {la1}
-lda {z1}
-cmp #{c1}
-bcs {la1}
-!:
-//FRAGMENT vbuz1=_inc_vbuz2
-ldy {z2}
-iny
-sty {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 pwuz1=pwuc1_plus_vwuz2
-clc
-lda {z2}
-adc #<{c1}
-sta {z1}
-lda {z2}+1
-adc #>{c1}
-sta {z1}+1
-//FRAGMENT _deref_pwuz1=vbuc1
-lda #{c1}
-ldy #0
-sta ({z1}),y
-tya
-iny
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=vbuc2
-lda #{c2}
-ldy #{c1}
-sta ({z1}),y
-lda #0
-iny
-sta ({z1}),y
-//FRAGMENT _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
-ldy #{c1}
-sty $ff
-clc
-lda ({z1}),y
-ldy #0
-adc ({z1}),y
-sta ({z1}),y
-ldy $ff
-iny
-lda ({z1}),y
-ldy #1
-adc ({z1}),y
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_vbuc2
-lda #{c2}
-ldy #{c1}
-clc
-adc ({z1}),y
-sta ({z1}),y
-iny
-lda #0
-adc ({z1}),y
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
-ldy #{c2}
-clc
-lda ({z1}),y
-ldy #{c1}
-adc ({z1}),y
-sta ({z1}),y
-ldy #{c2}+1
-lda ({z1}),y
-ldy #{c1}+1
-adc ({z1}),y
-sta ({z1}),y
-//FRAGMENT vwuz1=_deref_pwuz2_ror_8
-ldy #1
-lda ({z2}),y
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_bxor_vwuc2
-ldy #{c1}
-lda #<{c2}
-eor ({z1}),y
-sta ({z1}),y
-iny
-lda #>{c2}
-eor ({z1}),y
-sta ({z1}),y
-//FRAGMENT vwuz1=pwuz2_derefidx_vbuc1_ror_8
-ldy #{c1}
-lda #0
-sta {z1}+1
-iny
-lda ({z2}),y
-sta {z1}
-//FRAGMENT vbuz1=vbuz2_plus_vbuc1
-lax {z2}
-axs #-[{c1}]
-stx {z1}
-//FRAGMENT vwuz1_lt_vbuz2_then_la1
-lda {z1}+1
-bne !+
-lda {z1}
-cmp {z2}
-bcc {la1}
-!:
-//FRAGMENT vwuz1_ge_vbuz2_then_la1
-lda {z1}+1
-bne {la1}
-lda {z1}
-cmp {z2}
-bcs {la1}
-!:
-//FRAGMENT vbuz1=vbuz2_minus_2
-lda {z2}
-sec
-sbc #2
-sta {z1}
-//FRAGMENT vwuz1=vwuz2_rol_8
-lda {z2}
-sta {z1}+1
-lda #0
-sta {z1}
-//FRAGMENT pwuz1_derefidx_vbuc1=vwuz2
-ldy #{c1}
-lda {z2}
-sta ({z1}),y
-iny
-lda {z2}+1
-sta ({z1}),y
-//FRAGMENT pbuc1_derefidx_vbuz1=_byte_vwuz2
-ldy {z1}
-lda {z2}
-sta {c1},y
-//FRAGMENT vwuz1=vwuz2
-lda {z2}
-sta {z1}
-lda {z2}+1
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz2_band_vwuc1
-lda {z2}
-and #<{c1}
-sta {z1}
-lda {z2}+1
-and #>{c1}
-sta {z1}+1
-//FRAGMENT vbuz1=vwuz2_band_vbuc1
-lda #{c1}
-and {z2}
-sta {z1}
-//FRAGMENT pwuz1_derefidx_vbuc1=vbuz2
-lda {z2}
-ldy #{c1}
-sta ({z1}),y
-lda #0
-iny
-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 vbuaa=pbuc1_derefidx_vbuz1_plus_vbuc2
-lda #{c2}
-ldy {z1}
-clc
-adc {c1},y
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1_plus_vbuc2
-ldx {z1}
-lda {c1},x
-tax
-axs #-[{c2}]
-//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1_plus_vbuc2
-lda #{c2}
-ldy {z1}
-clc
-adc {c1},y
-tay
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa_plus_vbuc2
-tay
-lda #{c2}
-clc
-adc {c1},y
-sta {z1}
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa_plus_vbuc2
-tay
-lda #{c2}
-clc
-adc {c1},y
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa_plus_vbuc2
-tax
-lda {c1},x
-tax
-axs #-[{c2}]
-//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa_plus_vbuc2
-tay
-lda #{c2}
-clc
-adc {c1},y
-tay
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},x
-sta {z1}
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuxx_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},x
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuxx_plus_vbuc2
-lda {c1},x
-tax
-axs #-[{c2}]
-//FRAGMENT vbuyy=pbuc1_derefidx_vbuxx_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},x
-tay
-//FRAGMENT vbuz1=pbuc1_derefidx_vbuyy_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},y
-sta {z1}
-//FRAGMENT vbuaa=pbuc1_derefidx_vbuyy_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},y
-//FRAGMENT vbuxx=pbuc1_derefidx_vbuyy_plus_vbuc2
-lda {c1},y
-tax
-axs #-[{c2}]
-//FRAGMENT vbuyy=pbuc1_derefidx_vbuyy_plus_vbuc2
-lda #{c2}
-clc
-adc {c1},y
-tay
-//FRAGMENT vbuz1=vbuaa_bxor_vbuc1
-eor #{c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-sta {z1}
-//FRAGMENT vbuz1=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-//FRAGMENT vbuaa=vbuaa_bxor_vbuc1
-eor #{c1}
-//FRAGMENT vbuaa=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-//FRAGMENT vbuaa=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-//FRAGMENT vbuxx=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-tax
-//FRAGMENT vbuxx=vbuaa_bxor_vbuc1
-eor #{c1}
-tax
-//FRAGMENT vbuxx=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-tax
-//FRAGMENT vbuxx=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-tax
-//FRAGMENT vbuyy=vbuz1_bxor_vbuc1
-lda #{c1}
-eor {z1}
-tay
-//FRAGMENT vbuyy=vbuaa_bxor_vbuc1
-eor #{c1}
-tay
-//FRAGMENT vbuyy=vbuxx_bxor_vbuc1
-txa
-eor #{c1}
-tay
-//FRAGMENT vbuyy=vbuyy_bxor_vbuc1
-tya
-eor #{c1}
-tay
-//FRAGMENT vbuaa=_inc_vbuz1
-lda {z1}
-clc
-adc #1
-//FRAGMENT vbuz1=vbuxx_plus_vbuc1
-txa
-axs #-[{c1}]
-stx {z1}
-//FRAGMENT vbuaa=vbuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-//FRAGMENT vbuaa=vbuxx_plus_vbuc1
-txa
-clc
-adc #{c1}
-//FRAGMENT vbuxx=vbuz1_plus_vbuc1
-lax {z1}
-axs #-[{c1}]
-//FRAGMENT vbuyy=vbuz1_plus_vbuc1
-lda #{c1}
-clc
-adc {z1}
-tay
-//FRAGMENT vbuyy=vbuxx_plus_vbuc1
-txa
-clc
-adc #{c1}
-tay
-//FRAGMENT vwuz1_lt_vbuxx_then_la1
-lda {z1}+1
-bne !+
-stx $ff
-lda {z1}
-cmp $ff
-bcc {la1}
-!:
-//FRAGMENT vwuz1_ge_vbuxx_then_la1
-lda {z1}+1
-bne {la1}
-stx $ff
-lda {z1}
-cmp $ff
-bcs {la1}
-!:
-//FRAGMENT vwuz1_ge_vbuyy_then_la1
-lda {z1}+1
-bne {la1}
-sty $ff
-lda {z1}
-cmp $ff
-bcs {la1}
-!:
-//FRAGMENT vbuz1=vbuxx_minus_2
-dex
-dex
-stx {z1}
-//FRAGMENT pbuc1_derefidx_vbuaa=_byte_vwuz1
-tay
-lda {z1}
-sta {c1},y
-//FRAGMENT pbuc1_derefidx_vbuxx=_byte_vwuz1
-lda {z1}
-sta {c1},x
-//FRAGMENT pbuc1_derefidx_vbuyy=_byte_vwuz1
-lda {z1}
-sta {c1},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 pwuz1_derefidx_vbuc1=vbuxx
-txa
-ldy #{c1}
-sta ({z1}),y
-lda #0
-iny
-sta ({z1}),y
-//FRAGMENT pwuz1_derefidx_vbuc1=vbuyy
-tya
-ldy #{c1}
-sta ({z1}),y
-lda #0
-iny
-sta ({z1}),y
-//FRAGMENT vbuaa=vbuz1_minus_2
-lda {z1}
-sec
-sbc #2
-//FRAGMENT vbuxx=vbuz1_minus_2
-ldx {z1}
-dex
-dex
-//FRAGMENT vbuyy=vbuz1_minus_2
-ldy {z1}
-dey
-dey
-//FRAGMENT vbuz1=_inc_vbuxx
-inx
-stx {z1}
-//FRAGMENT vbuxx=_inc_vbuz1
-ldx {z1}
-inx
-//FRAGMENT vbuyy=_inc_vbuz1
-ldy {z1}
-iny
-//FRAGMENT vwuz1=vwuz1_bxor_vwuz2
-lda {z1}
-eor {z2}
-sta {z1}
-lda {z1}+1
-eor {z2}+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 vwuz1=_deref_pwuz1_ror_8
-ldy #1
-lda ({z1}),y
-sta {z1}
-dey
-sty {z1}+1
-//FRAGMENT vwuz1=pwuz1_derefidx_vbuc1_ror_8
-ldy #{c1}
-iny
-lda ({z1}),y
-sta {z1}
-lda #0
-sta {z1}+1
-//FRAGMENT vwuz1=vwuz1_rol_8
-lda {z1}
-sta {z1}+1
-lda #0
-sta {z1}
-//FRAGMENT vwuz1=vwuz1_band_vwuc1
-lda {z1}
-and #<{c1}
-sta {z1}
-lda {z1}+1
-and #>{c1}
-sta {z1}+1
-//FRAGMENT vbuz1=vbuz2_rol_3
-lda {z2}
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT pwuc1_derefidx_vbuz1=vbuc2
-lda #{c2}
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT vbuz1_lt_vbuz2_then_la1
-lda {z1}
-cmp {z2}
-bcc {la1}
-//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_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 vwuz1=pwuc1_derefidx_vbuz2_ror_8
-ldy {z2}
-lda #0
-sta {z1}+1
-lda {c1}+1,y
-sta {z1}
-//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2
-ldy {z1}
-lda {c1},y
-eor #<{c2}
-sta {c1},y
-lda {c1}+1,y
-eor #>{c2}
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=vwuz2
-ldy {z1}
-lda {z2}
-sta {c1},y
-lda {z2}+1
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=vbuz2
-lda {z2}
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT vbuaa=vbuz1_rol_3
-lda {z1}
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuz1_rol_3
-lda {z1}
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuz1_rol_3
-lda {z1}
-asl
-asl
-asl
-tay
-//FRAGMENT vbuz1=vbuxx_rol_3
-txa
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuxx_rol_3
-txa
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuxx_rol_3
-txa
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuxx_rol_3
-txa
-asl
-asl
-asl
-tay
-//FRAGMENT vbuz1=vbuyy_rol_3
-tya
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_rol_3
-tya
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuyy_rol_3
-tya
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuyy_rol_3
-tya
-asl
-asl
-asl
-tay
-//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 vbuaa_lt_vbuz1_then_la1
-cmp {z1}
-bcc {la1}
-//FRAGMENT vbuz1=vbuaa_rol_3
-asl
-asl
-asl
-sta {z1}
-//FRAGMENT vbuaa=vbuaa_rol_3
-asl
-asl
-asl
-//FRAGMENT vbuxx=vbuaa_rol_3
-asl
-asl
-asl
-tax
-//FRAGMENT vbuyy=vbuaa_rol_3
-asl
-asl
-asl
-tay
-//FRAGMENT pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_pwuc2_derefidx_vbuaa
-tax
-tay
-clc
-lda {c1},y
-adc {c2},x
-sta {c1},y
-lda {c1}+1,y
-adc {c2}+1,x
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuxx
-txa
-tay
-txa
-sty $ff
-ldx $ff
-tay
-clc
-lda {c1},y
-adc {c2},x
-sta {c1},y
-lda {c1}+1,y
-adc {c2}+1,x
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy
-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_vbuxx=pwuc1_derefidx_vbuxx_plus_vbuc2
-clc
-lda {c1},x
-adc #{c2}
-sta {c1},x
-lda {c1}+1,x
-adc #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2
-clc
-lda {c1},y
-adc #{c2}
-sta {c1},y
-lda {c1}+1,y
-adc #0
-sta {c1}+1,y
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_ror_8
-txa
-tay
-lda #0
-sta {z1}+1
-lda {c1}+1,y
-sta {z1}
-//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy_ror_8
-lda #0
-sta {z1}+1
-lda {c1}+1,y
-sta {z1}
-//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_bxor_vwuc2
-txa
-tay
-lda {c1},y
-eor #<{c2}
-sta {c1},y
-lda {c1}+1,y
-eor #>{c2}
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2
-lda {c1},y
-eor #<{c2}
-sta {c1},y
-lda {c1}+1,y
-eor #>{c2}
-sta {c1}+1,y
-//FRAGMENT vbuz1=vbuyy_plus_vbuc1
-tya
-clc
-adc #{c1}
-sta {z1}
-//FRAGMENT vbuaa=vbuyy_plus_vbuc1
-tya
-clc
-adc #{c1}
-//FRAGMENT vbuxx=vbuyy_plus_vbuc1
-tya
-tax
-axs #-[{c1}]
-//FRAGMENT vwuz1_lt_vbuyy_then_la1
-lda {z1}+1
-bne !+
-sty $ff
-lda {z1}
-cmp $ff
-bcc {la1}
-!:
-//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 pwuc1_derefidx_vbuaa=vwuz1
-tay
-lda {z1}
-sta {c1},y
-lda {z1}+1
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=vbuaa
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=vbuxx
-ldy {z1}
-txa
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuz1=vbuyy
-tya
-ldy {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuxx=vbuz1
-lda {z1}
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuxx=vbuaa
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuxx=vbuxx
-txa
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuxx=vbuyy
-tya
-sta {c1},x
-lda #0
-sta {c1}+1,x
-//FRAGMENT pwuc1_derefidx_vbuyy=vbuz1
-lda {z1}
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuyy=vbuaa
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuyy=vbuxx
-txa
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT pwuc1_derefidx_vbuyy=vbuyy
-tya
-sta {c1},y
-lda #0
-sta {c1}+1,y
-//FRAGMENT vbuxx_lt_vbuz1_then_la1
-cpx {z1}
-bcc {la1}
-//FRAGMENT vbuyy_lt_vbuz1_then_la1
-cpy {z1}
-bcc {la1}
diff --git a/src/main/fragment/cache/fragment-cache-wdc65c02.asm b/src/main/fragment/cache/fragment-cache-wdc65c02.asm
index 2d78ed345..9c0a953eb 100644
--- a/src/main/fragment/cache/fragment-cache-wdc65c02.asm
+++ b/src/main/fragment/cache/fragment-cache-wdc65c02.asm
@@ -1,4 +1,4 @@
-//KICKC FRAGMENT CACHE 15355793f5 153557b229
+//KICKC FRAGMENT CACHE 13789539dd 13789557f9
//FRAGMENT vwuz1=vwuc1
lda #<{c1}
sta {z1}
diff --git a/src/main/fragment/mos6502-selfmod/isr_hardware_all_exit.asm b/src/main/fragment/mos6502-selfmod/isr_hardware_all_exit.asm
index 1fdf08deb..f45614254 100644
--- a/src/main/fragment/mos6502-selfmod/isr_hardware_all_exit.asm
+++ b/src/main/fragment/mos6502-selfmod/isr_hardware_all_exit.asm
@@ -1,4 +1,4 @@
-rega: @clob_a lda #0 @clob_a
-regx: @clob_x ldx #0 @clob_x
-regy: @clob_y ldy #0 @clob_y
+rega: @clob_a @nooptimize lda #0 @clob_a @nooptimize
+regx: @clob_x @nooptimize ldx #0 @clob_x @nooptimize
+regy: @clob_y @nooptimize ldy #0 @clob_y @nooptimize
rti
\ No newline at end of file
diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java b/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java
index 1a13ec229..edb20b995 100644
--- a/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java
+++ b/src/main/java/dk/camelot64/kickc/asm/AsmInstruction.java
@@ -4,9 +4,6 @@ import dk.camelot64.cpufamily6502.CpuAddressingMode;
import dk.camelot64.cpufamily6502.CpuOpcode;
import dk.camelot64.kickc.model.InternalError;
-import java.util.ArrayList;
-import java.util.List;
-
/** A specific assembler instruction line (opcode, addressing mode and specific parameter value) */
public class AsmInstruction extends AsmLine {
@@ -19,9 +16,6 @@ public class AsmInstruction extends AsmLine {
/** The second ASM opcode parameter. Null if not used. Only used for addressing mode Zeropage Test Relative {@link CpuAddressingMode#REZ} - eg. BBR0 $12,label */
private String operand2;
- /** If true the instruction will not be optimized away. */
- private boolean dontOptimize;
-
public AsmInstruction(CpuOpcode cpuOpcode, String operand1, String operand2) {
this.cpuOpcode = cpuOpcode;
this.operand1 = operand1;
@@ -72,14 +66,6 @@ public class AsmInstruction extends AsmLine {
return getAsm();
}
- public boolean isDontOptimize() {
- return dontOptimize;
- }
-
- public void setDontOptimize(boolean dontOptimize) {
- this.dontOptimize = dontOptimize;
- }
-
/***
* Get the operand value that represents a jump target (if the opcode is a jump as defined by {@link CpuOpcode#isJump()}
* @return The jump target operand
diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java b/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java
index 2f335e749..ce9fc7a57 100644
--- a/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java
+++ b/src/main/java/dk/camelot64/kickc/asm/AsmLabel.java
@@ -5,8 +5,6 @@ public class AsmLabel extends AsmLine {
private String label;
- private boolean dontOptimize;
-
public AsmLabel(String label) {
this.label = label;
}
@@ -34,14 +32,6 @@ public class AsmLabel extends AsmLine {
return label + ":";
}
- public boolean isDontOptimize() {
- return dontOptimize;
- }
-
- public void setDontOptimize(boolean dontOptimize) {
- this.dontOptimize = dontOptimize;
- }
-
@Override
public String toString() {
return getAsm();
diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmLine.java b/src/main/java/dk/camelot64/kickc/asm/AsmLine.java
index b1d5bb9fa..b6919122a 100644
--- a/src/main/java/dk/camelot64/kickc/asm/AsmLine.java
+++ b/src/main/java/dk/camelot64/kickc/asm/AsmLine.java
@@ -36,4 +36,11 @@ public abstract class AsmLine {
return tags;
}
+ /**
+ * Has the ASM line been marked as don't optimize?
+ * @return true if the ASM should not be optimized
+ */
+ public boolean isNoOptimize() {
+ return getTags().has("nooptimize");
+ }
}
diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
index e5b911246..ade4d7039 100644
--- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
+++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java
@@ -14,8 +14,10 @@ import dk.camelot64.kickc.model.types.SymbolType;
import dk.camelot64.kickc.model.values.*;
import dk.camelot64.kickc.parser.KickCParser;
import dk.camelot64.kickc.parser.KickCParserBaseVisitor;
+import org.antlr.v4.runtime.tree.TerminalNode;
import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
/** ASM Code Fragment with register/variable bindings that can be used for generating ASM code for a specific statement . */
@@ -198,26 +200,24 @@ public class AsmFragmentInstance {
this.visit(context);
}
+ private static AsmLine addTags(AsmLine asmLine, List asmTags) {
+ if(asmTags != null)
+ for(TerminalNode asmTag : asmTags) {
+ final String tagName = asmTag.getText().substring(1);
+ asmLine.getTags().add(tagName);
+ }
+ return asmLine;
+ }
+
@Override
public Object visitAsmLabelName(KickCParser.AsmLabelNameContext ctx) {
- final AsmLabel labelLine = new AsmLabel(ctx.ASM_NAME().getText());
- if(ctx.ASM_TAG()!=null) {
- final String tagName = ctx.ASM_TAG().getText().substring(1);
- labelLine.getTags().add(tagName);
- }
- asmProgram.addLine(labelLine);
+ asmProgram.addLine(addTags(new AsmLabel(ctx.ASM_NAME().getText()), ctx.ASM_TAG()));
return null;
}
@Override
public Object visitAsmLabelMulti(KickCParser.AsmLabelMultiContext ctx) {
- String label = ctx.ASM_MULTI_NAME().getText();
- final AsmLabel labelLine = new AsmLabel(label);
- if(ctx.ASM_TAG()!=null) {
- final String tagName = ctx.ASM_TAG().getText().substring(1);
- labelLine.getTags().add(tagName);
- }
- asmProgram.addLine(labelLine);
+ asmProgram.addLine(addTags(new AsmLabel(ctx.ASM_MULTI_NAME().getText()), ctx.ASM_TAG()));
return null;
}
@@ -227,7 +227,7 @@ public class AsmFragmentInstance {
for(int i = 1; i < ctx.getChildCount(); i = i + 2) {
values.add(ctx.getChild(i).getText());
}
- asmProgram.addLine(new AsmDataNumeric(null, AsmDataNumeric.Type.BYTE, values));
+ asmProgram.addLine(addTags(new AsmDataNumeric(null, AsmDataNumeric.Type.BYTE, values), ctx.ASM_TAG()));
return null;
}
@@ -240,12 +240,8 @@ public class AsmFragmentInstance {
} else {
instruction = (AsmInstruction) this.visit(paramModeCtx);
}
- if(ctx.ASM_TAG()!=null) {
- final String tagName = ctx.ASM_TAG().getText().substring(1);
- instruction.getTags().add(tagName);
- }
if(instruction != null) {
- asmProgram.addLine(instruction);
+ asmProgram.addLine(addTags(instruction, ctx.ASM_TAG()));
} else {
throw new RuntimeException("Error parsing ASM fragment line " + name + ".asm\n - Line: " + ctx.getText());
}
@@ -352,7 +348,7 @@ public class AsmFragmentInstance {
String operand1 = param1 == null ? null : param1.getParam();
String operand2 = param2 == null ? null : param2.getParam();
if(cpuOpcode == null) {
- throw new InternalError("Error in " + name + ".asm line " + instructionCtx.getStart().getLine() + " - Instruction type not supported " + addressingMode.getAsm(mnemonic, operand1, operand2) +" by CPU "+this.fragmentInstance.fragmentTemplate.getTargetCpu().getName());
+ throw new InternalError("Error in " + name + ".asm line " + instructionCtx.getStart().getLine() + " - Instruction type not supported " + addressingMode.getAsm(mnemonic, operand1, operand2) + " by CPU " + this.fragmentInstance.fragmentTemplate.getTargetCpu().getName());
}
return new AsmInstruction(cpuOpcode, operand1, operand2);
}
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4 b/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
index 41dd2786b..307ca7578 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
@@ -279,16 +279,16 @@ asmLine
;
asmLabel
- : ASM_NAME ASM_COLON ASM_TAG? #asmLabelName
- | ASM_MULTI_NAME ASM_COLON ASM_TAG? #asmLabelMulti
+ : ASM_NAME ASM_COLON ASM_TAG* #asmLabelName
+ | ASM_MULTI_NAME ASM_COLON ASM_TAG* #asmLabelMulti
;
asmInstruction
- : ASM_MNEMONIC (asmParamMode)? ASM_TAG?
+ : ASM_MNEMONIC (asmParamMode)? ASM_TAG*
;
asmBytes
- : ASM_BYTE asmExpr ( ASM_COMMA asmExpr)* ASM_TAG?
+ : ASM_BYTE asmExpr ( ASM_COMMA asmExpr)* ASM_TAG*
;
asmParamMode
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.interp b/src/main/java/dk/camelot64/kickc/parser/KickCParser.interp
index cfdeea1c5..9a1b9823b 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.interp
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.interp
@@ -363,4 +363,4 @@ asmExpr
atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 156, 865, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 7, 4, 104, 10, 4, 12, 4, 14, 4, 107, 11, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 123, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 7, 7, 130, 10, 7, 12, 7, 14, 7, 133, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 140, 10, 7, 12, 7, 14, 7, 143, 11, 7, 3, 7, 7, 7, 146, 10, 7, 12, 7, 14, 7, 149, 11, 7, 3, 8, 3, 8, 3, 8, 7, 8, 154, 10, 8, 12, 8, 14, 8, 157, 11, 8, 3, 8, 3, 8, 7, 8, 161, 10, 8, 12, 8, 14, 8, 164, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 7, 9, 170, 10, 9, 12, 9, 14, 9, 173, 11, 9, 3, 9, 3, 9, 5, 9, 177, 10, 9, 3, 9, 3, 9, 7, 9, 181, 10, 9, 12, 9, 14, 9, 184, 11, 9, 3, 9, 3, 9, 5, 9, 188, 10, 9, 3, 10, 7, 10, 191, 10, 10, 12, 10, 14, 10, 194, 11, 10, 3, 10, 3, 10, 7, 10, 198, 10, 10, 12, 10, 14, 10, 201, 11, 10, 3, 11, 3, 11, 7, 11, 205, 10, 11, 12, 11, 14, 11, 208, 11, 11, 3, 12, 3, 12, 5, 12, 212, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 224, 10, 13, 3, 13, 7, 13, 227, 10, 13, 12, 13, 14, 13, 230, 11, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 240, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 247, 10, 14, 3, 14, 3, 14, 3, 14, 5, 14, 252, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, 258, 10, 14, 12, 14, 14, 14, 261, 11, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 5, 16, 268, 10, 16, 3, 16, 3, 16, 6, 16, 272, 10, 16, 13, 16, 14, 16, 273, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 286, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 298, 10, 20, 12, 20, 14, 20, 301, 11, 20, 3, 21, 3, 21, 3, 21, 5, 21, 306, 10, 21, 3, 22, 3, 22, 7, 22, 310, 10, 22, 12, 22, 14, 22, 313, 11, 22, 3, 22, 3, 22, 3, 22, 5, 22, 318, 10, 22, 3, 22, 3, 22, 3, 22, 5, 22, 323, 10, 22, 3, 23, 3, 23, 5, 23, 327, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 334, 10, 24, 12, 24, 14, 24, 337, 11, 24, 3, 25, 3, 25, 7, 25, 341, 10, 25, 12, 25, 14, 25, 344, 11, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 350, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 7, 26, 358, 10, 26, 12, 26, 14, 26, 361, 11, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 372, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 383, 10, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 404, 10, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 411, 10, 28, 12, 28, 14, 28, 414, 11, 28, 3, 28, 3, 28, 3, 28, 5, 28, 419, 10, 28, 3, 29, 6, 29, 422, 10, 29, 13, 29, 14, 29, 423, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 431, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 444, 10, 30, 3, 30, 7, 30, 447, 10, 30, 12, 30, 14, 30, 450, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 459, 10, 30, 12, 30, 14, 30, 462, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 473, 10, 30, 12, 30, 14, 30, 476, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 494, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 503, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 511, 10, 30, 3, 31, 6, 31, 514, 10, 31, 13, 31, 14, 31, 515, 3, 31, 3, 31, 3, 31, 5, 31, 521, 10, 31, 5, 31, 523, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 529, 10, 32, 3, 33, 3, 33, 3, 33, 5, 33, 534, 10, 33, 3, 33, 3, 33, 5, 33, 538, 10, 33, 3, 33, 3, 33, 7, 33, 542, 10, 33, 12, 33, 14, 33, 545, 11, 33, 5, 33, 547, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 555, 10, 33, 3, 34, 5, 34, 558, 10, 34, 3, 34, 5, 34, 561, 10, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 571, 10, 36, 12, 36, 14, 36, 574, 11, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 585, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 593, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 599, 10, 37, 3, 37, 3, 37, 5, 37, 603, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 622, 10, 37, 12, 37, 14, 37, 625, 11, 37, 3, 37, 5, 37, 628, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 6, 37, 635, 10, 37, 13, 37, 14, 37, 636, 3, 37, 3, 37, 5, 37, 641, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 691, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 701, 10, 37, 12, 37, 14, 37, 704, 11, 37, 3, 38, 3, 38, 3, 38, 7, 38, 709, 10, 38, 12, 38, 14, 38, 712, 11, 38, 3, 39, 3, 39, 5, 39, 716, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 724, 10, 40, 12, 40, 14, 40, 727, 11, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 741, 10, 41, 3, 42, 7, 42, 744, 10, 42, 12, 42, 14, 42, 747, 11, 42, 3, 43, 3, 43, 3, 43, 5, 43, 752, 10, 43, 3, 44, 3, 44, 3, 44, 5, 44, 757, 10, 44, 3, 44, 3, 44, 3, 44, 5, 44, 762, 10, 44, 5, 44, 764, 10, 44, 3, 45, 3, 45, 5, 45, 768, 10, 45, 3, 45, 5, 45, 771, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 777, 10, 46, 12, 46, 14, 46, 780, 11, 46, 3, 46, 5, 46, 783, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 830, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 846, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 7, 48, 860, 10, 48, 12, 48, 14, 48, 863, 11, 48, 3, 48, 2, 9, 12, 24, 26, 38, 70, 72, 94, 49, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 2, 13, 3, 2, 23, 24, 5, 2, 18, 19, 25, 26, 82, 82, 4, 2, 33, 33, 36, 36, 3, 2, 29, 30, 3, 2, 20, 22, 3, 2, 18, 19, 3, 2, 31, 36, 3, 2, 127, 130, 3, 2, 125, 126, 3, 2, 131, 132, 3, 2, 127, 128, 2, 994, 2, 96, 3, 2, 2, 2, 4, 99, 3, 2, 2, 2, 6, 105, 3, 2, 2, 2, 8, 122, 3, 2, 2, 2, 10, 124, 3, 2, 2, 2, 12, 127, 3, 2, 2, 2, 14, 150, 3, 2, 2, 2, 16, 187, 3, 2, 2, 2, 18, 192, 3, 2, 2, 2, 20, 202, 3, 2, 2, 2, 22, 209, 3, 2, 2, 2, 24, 215, 3, 2, 2, 2, 26, 246, 3, 2, 2, 2, 28, 262, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 277, 3, 2, 2, 2, 34, 280, 3, 2, 2, 2, 36, 283, 3, 2, 2, 2, 38, 291, 3, 2, 2, 2, 40, 302, 3, 2, 2, 2, 42, 307, 3, 2, 2, 2, 44, 324, 3, 2, 2, 2, 46, 330, 3, 2, 2, 2, 48, 349, 3, 2, 2, 2, 50, 351, 3, 2, 2, 2, 52, 371, 3, 2, 2, 2, 54, 418, 3, 2, 2, 2, 56, 421, 3, 2, 2, 2, 58, 510, 3, 2, 2, 2, 60, 513, 3, 2, 2, 2, 62, 524, 3, 2, 2, 2, 64, 554, 3, 2, 2, 2, 66, 560, 3, 2, 2, 2, 68, 562, 3, 2, 2, 2, 70, 564, 3, 2, 2, 2, 72, 640, 3, 2, 2, 2, 74, 705, 3, 2, 2, 2, 76, 713, 3, 2, 2, 2, 78, 719, 3, 2, 2, 2, 80, 740, 3, 2, 2, 2, 82, 745, 3, 2, 2, 2, 84, 751, 3, 2, 2, 2, 86, 763, 3, 2, 2, 2, 88, 765, 3, 2, 2, 2, 90, 772, 3, 2, 2, 2, 92, 829, 3, 2, 2, 2, 94, 845, 3, 2, 2, 2, 96, 97, 5, 6, 4, 2, 97, 98, 7, 2, 2, 3, 98, 3, 3, 2, 2, 2, 99, 100, 5, 82, 42, 2, 100, 101, 7, 2, 2, 3, 101, 5, 3, 2, 2, 2, 102, 104, 5, 8, 5, 2, 103, 102, 3, 2, 2, 2, 104, 107, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 105, 106, 3, 2, 2, 2, 106, 7, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 108, 109, 5, 10, 6, 2, 109, 110, 7, 10, 2, 2, 110, 123, 3, 2, 2, 2, 111, 112, 5, 30, 16, 2, 112, 113, 7, 10, 2, 2, 113, 123, 3, 2, 2, 2, 114, 115, 5, 36, 19, 2, 115, 116, 7, 10, 2, 2, 116, 123, 3, 2, 2, 2, 117, 123, 5, 42, 22, 2, 118, 123, 5, 50, 26, 2, 119, 120, 5, 14, 8, 2, 120, 121, 7, 10, 2, 2, 121, 123, 3, 2, 2, 2, 122, 108, 3, 2, 2, 2, 122, 111, 3, 2, 2, 2, 122, 114, 3, 2, 2, 2, 122, 117, 3, 2, 2, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 123, 9, 3, 2, 2, 2, 124, 125, 5, 18, 10, 2, 125, 126, 5, 12, 7, 2, 126, 11, 3, 2, 2, 2, 127, 131, 8, 7, 1, 2, 128, 130, 5, 20, 11, 2, 129, 128, 3, 2, 2, 2, 130, 133, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 134, 3, 2, 2, 2, 133, 131, 3, 2, 2, 2, 134, 135, 5, 16, 9, 2, 135, 147, 3, 2, 2, 2, 136, 137, 12, 3, 2, 2, 137, 141, 7, 12, 2, 2, 138, 140, 5, 20, 11, 2, 139, 138, 3, 2, 2, 2, 140, 143, 3, 2, 2, 2, 141, 139, 3, 2, 2, 2, 141, 142, 3, 2, 2, 2, 142, 144, 3, 2, 2, 2, 143, 141, 3, 2, 2, 2, 144, 146, 5, 16, 9, 2, 145, 136, 3, 2, 2, 2, 146, 149, 3, 2, 2, 2, 147, 145, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 13, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, 150, 151, 7, 41, 2, 2, 151, 155, 5, 18, 10, 2, 152, 154, 5, 20, 11, 2, 153, 152, 3, 2, 2, 2, 154, 157, 3, 2, 2, 2, 155, 153, 3, 2, 2, 2, 155, 156, 3, 2, 2, 2, 156, 158, 3, 2, 2, 2, 157, 155, 3, 2, 2, 2, 158, 162, 7, 109, 2, 2, 159, 161, 5, 22, 12, 2, 160, 159, 3, 2, 2, 2, 161, 164, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 165, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 165, 166, 8, 8, 1, 2, 166, 15, 3, 2, 2, 2, 167, 171, 7, 109, 2, 2, 168, 170, 5, 22, 12, 2, 169, 168, 3, 2, 2, 2, 170, 173, 3, 2, 2, 2, 171, 169, 3, 2, 2, 2, 171, 172, 3, 2, 2, 2, 172, 176, 3, 2, 2, 2, 173, 171, 3, 2, 2, 2, 174, 175, 7, 39, 2, 2, 175, 177, 5, 72, 37, 2, 176, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 188, 3, 2, 2, 2, 178, 182, 7, 109, 2, 2, 179, 181, 5, 22, 12, 2, 180, 179, 3, 2, 2, 2, 181, 184, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 182, 183, 3, 2, 2, 2, 183, 185, 3, 2, 2, 2, 184, 182, 3, 2, 2, 2, 185, 186, 7, 39, 2, 2, 186, 188, 5, 76, 39, 2, 187, 167, 3, 2, 2, 2, 187, 178, 3, 2, 2, 2, 188, 17, 3, 2, 2, 2, 189, 191, 5, 54, 28, 2, 190, 189, 3, 2, 2, 2, 191, 194, 3, 2, 2, 2, 192, 190, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 195, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 195, 199, 5, 26, 14, 2, 196, 198, 5, 54, 28, 2, 197, 196, 3, 2, 2, 2, 198, 201, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 19, 3, 2, 2, 2, 201, 199, 3, 2, 2, 2, 202, 206, 7, 20, 2, 2, 203, 205, 5, 54, 28, 2, 204, 203, 3, 2, 2, 2, 205, 208, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 21, 3, 2, 2, 2, 208, 206, 3, 2, 2, 2, 209, 211, 7, 6, 2, 2, 210, 212, 5, 72, 37, 2, 211, 210, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 214, 7, 7, 2, 2, 214, 23, 3, 2, 2, 2, 215, 216, 8, 13, 1, 2, 216, 217, 5, 26, 14, 2, 217, 228, 3, 2, 2, 2, 218, 219, 12, 4, 2, 2, 219, 227, 7, 20, 2, 2, 220, 221, 12, 3, 2, 2, 221, 223, 7, 6, 2, 2, 222, 224, 5, 72, 37, 2, 223, 222, 3, 2, 2, 2, 223, 224, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 227, 7, 7, 2, 2, 226, 218, 3, 2, 2, 2, 226, 220, 3, 2, 2, 2, 227, 230, 3, 2, 2, 2, 228, 226, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 25, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 231, 232, 8, 14, 1, 2, 232, 233, 7, 8, 2, 2, 233, 234, 5, 26, 14, 2, 234, 235, 7, 9, 2, 2, 235, 247, 3, 2, 2, 2, 236, 247, 7, 84, 2, 2, 237, 239, 7, 83, 2, 2, 238, 240, 7, 84, 2, 2, 239, 238, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 247, 3, 2, 2, 2, 241, 247, 5, 30, 16, 2, 242, 247, 5, 28, 15, 2, 243, 247, 5, 36, 19, 2, 244, 247, 5, 34, 18, 2, 245, 247, 7, 3, 2, 2, 246, 231, 3, 2, 2, 2, 246, 236, 3, 2, 2, 2, 246, 237, 3, 2, 2, 2, 246, 241, 3, 2, 2, 2, 246, 242, 3, 2, 2, 2, 246, 243, 3, 2, 2, 2, 246, 244, 3, 2, 2, 2, 246, 245, 3, 2, 2, 2, 247, 259, 3, 2, 2, 2, 248, 249, 12, 9, 2, 2, 249, 251, 7, 6, 2, 2, 250, 252, 5, 72, 37, 2, 251, 250, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 258, 7, 7, 2, 2, 254, 255, 12, 8, 2, 2, 255, 256, 7, 8, 2, 2, 256, 258, 7, 9, 2, 2, 257, 248, 3, 2, 2, 2, 257, 254, 3, 2, 2, 2, 258, 261, 3, 2, 2, 2, 259, 257, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 27, 3, 2, 2, 2, 261, 259, 3, 2, 2, 2, 262, 263, 7, 71, 2, 2, 263, 264, 7, 109, 2, 2, 264, 29, 3, 2, 2, 2, 265, 267, 7, 71, 2, 2, 266, 268, 7, 109, 2, 2, 267, 266, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 271, 7, 4, 2, 2, 270, 272, 5, 32, 17, 2, 271, 270, 3, 2, 2, 2, 272, 273, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 276, 7, 5, 2, 2, 276, 31, 3, 2, 2, 2, 277, 278, 5, 10, 6, 2, 278, 279, 7, 10, 2, 2, 279, 33, 3, 2, 2, 2, 280, 281, 7, 72, 2, 2, 281, 282, 7, 109, 2, 2, 282, 35, 3, 2, 2, 2, 283, 285, 7, 72, 2, 2, 284, 286, 7, 109, 2, 2, 285, 284, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 287, 288, 7, 4, 2, 2, 288, 289, 5, 38, 20, 2, 289, 290, 7, 5, 2, 2, 290, 37, 3, 2, 2, 2, 291, 292, 8, 20, 1, 2, 292, 293, 5, 40, 21, 2, 293, 299, 3, 2, 2, 2, 294, 295, 12, 3, 2, 2, 295, 296, 7, 12, 2, 2, 296, 298, 5, 40, 21, 2, 297, 294, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 39, 3, 2, 2, 2, 301, 299, 3, 2, 2, 2, 302, 305, 7, 109, 2, 2, 303, 304, 7, 39, 2, 2, 304, 306, 5, 72, 37, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 41, 3, 2, 2, 2, 307, 311, 5, 18, 10, 2, 308, 310, 5, 20, 11, 2, 309, 308, 3, 2, 2, 2, 310, 313, 3, 2, 2, 2, 311, 309, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 314, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 314, 315, 7, 109, 2, 2, 315, 317, 7, 8, 2, 2, 316, 318, 5, 46, 24, 2, 317, 316, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 322, 7, 9, 2, 2, 320, 323, 5, 44, 23, 2, 321, 323, 7, 10, 2, 2, 322, 320, 3, 2, 2, 2, 322, 321, 3, 2, 2, 2, 323, 43, 3, 2, 2, 2, 324, 326, 7, 4, 2, 2, 325, 327, 5, 56, 29, 2, 326, 325, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 328, 3, 2, 2, 2, 328, 329, 7, 5, 2, 2, 329, 45, 3, 2, 2, 2, 330, 335, 5, 48, 25, 2, 331, 332, 7, 12, 2, 2, 332, 334, 5, 48, 25, 2, 333, 331, 3, 2, 2, 2, 334, 337, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 335, 336, 3, 2, 2, 2, 336, 47, 3, 2, 2, 2, 337, 335, 3, 2, 2, 2, 338, 342, 5, 18, 10, 2, 339, 341, 5, 20, 11, 2, 340, 339, 3, 2, 2, 2, 341, 344, 3, 2, 2, 2, 342, 340, 3, 2, 2, 2, 342, 343, 3, 2, 2, 2, 343, 345, 3, 2, 2, 2, 344, 342, 3, 2, 2, 2, 345, 346, 7, 109, 2, 2, 346, 350, 3, 2, 2, 2, 347, 350, 7, 84, 2, 2, 348, 350, 7, 14, 2, 2, 349, 338, 3, 2, 2, 2, 349, 347, 3, 2, 2, 2, 349, 348, 3, 2, 2, 2, 350, 49, 3, 2, 2, 2, 351, 352, 7, 89, 2, 2, 352, 353, 7, 109, 2, 2, 353, 354, 7, 8, 2, 2, 354, 359, 5, 52, 27, 2, 355, 356, 7, 12, 2, 2, 356, 358, 5, 52, 27, 2, 357, 355, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 362, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 363, 7, 9, 2, 2, 363, 51, 3, 2, 2, 2, 364, 372, 7, 100, 2, 2, 365, 366, 7, 100, 2, 2, 366, 367, 7, 13, 2, 2, 367, 372, 7, 100, 2, 2, 368, 372, 7, 109, 2, 2, 369, 372, 7, 110, 2, 2, 370, 372, 7, 58, 2, 2, 371, 364, 3, 2, 2, 2, 371, 365, 3, 2, 2, 2, 371, 368, 3, 2, 2, 2, 371, 369, 3, 2, 2, 2, 371, 370, 3, 2, 2, 2, 372, 53, 3, 2, 2, 2, 373, 419, 7, 42, 2, 2, 374, 375, 7, 45, 2, 2, 375, 376, 7, 8, 2, 2, 376, 377, 7, 100, 2, 2, 377, 419, 7, 9, 2, 2, 378, 382, 7, 50, 2, 2, 379, 380, 7, 8, 2, 2, 380, 381, 7, 109, 2, 2, 381, 383, 7, 9, 2, 2, 382, 379, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 419, 3, 2, 2, 2, 384, 419, 7, 53, 2, 2, 385, 419, 7, 54, 2, 2, 386, 387, 7, 52, 2, 2, 387, 388, 7, 8, 2, 2, 388, 389, 5, 72, 37, 2, 389, 390, 7, 9, 2, 2, 390, 419, 3, 2, 2, 2, 391, 419, 7, 47, 2, 2, 392, 419, 7, 48, 2, 2, 393, 419, 7, 55, 2, 2, 394, 419, 7, 56, 2, 2, 395, 419, 7, 43, 2, 2, 396, 419, 7, 44, 2, 2, 397, 419, 7, 46, 2, 2, 398, 419, 7, 57, 2, 2, 399, 403, 7, 49, 2, 2, 400, 401, 7, 8, 2, 2, 401, 402, 7, 109, 2, 2, 402, 404, 7, 9, 2, 2, 403, 400, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 419, 3, 2, 2, 2, 405, 406, 7, 51, 2, 2, 406, 407, 7, 8, 2, 2, 407, 412, 5, 52, 27, 2, 408, 409, 7, 12, 2, 2, 409, 411, 5, 52, 27, 2, 410, 408, 3, 2, 2, 2, 411, 414, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 415, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 416, 7, 9, 2, 2, 416, 419, 3, 2, 2, 2, 417, 419, 7, 58, 2, 2, 418, 373, 3, 2, 2, 2, 418, 374, 3, 2, 2, 2, 418, 378, 3, 2, 2, 2, 418, 384, 3, 2, 2, 2, 418, 385, 3, 2, 2, 2, 418, 386, 3, 2, 2, 2, 418, 391, 3, 2, 2, 2, 418, 392, 3, 2, 2, 2, 418, 393, 3, 2, 2, 2, 418, 394, 3, 2, 2, 2, 418, 395, 3, 2, 2, 2, 418, 396, 3, 2, 2, 2, 418, 397, 3, 2, 2, 2, 418, 398, 3, 2, 2, 2, 418, 399, 3, 2, 2, 2, 418, 405, 3, 2, 2, 2, 418, 417, 3, 2, 2, 2, 419, 55, 3, 2, 2, 2, 420, 422, 5, 58, 30, 2, 421, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 57, 3, 2, 2, 2, 425, 426, 5, 10, 6, 2, 426, 427, 7, 10, 2, 2, 427, 511, 3, 2, 2, 2, 428, 430, 7, 4, 2, 2, 429, 431, 5, 56, 29, 2, 430, 429, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 432, 511, 7, 5, 2, 2, 433, 434, 5, 70, 36, 2, 434, 435, 7, 10, 2, 2, 435, 511, 3, 2, 2, 2, 436, 437, 7, 59, 2, 2, 437, 438, 7, 8, 2, 2, 438, 439, 5, 70, 36, 2, 439, 440, 7, 9, 2, 2, 440, 443, 5, 58, 30, 2, 441, 442, 7, 60, 2, 2, 442, 444, 5, 58, 30, 2, 443, 441, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 511, 3, 2, 2, 2, 445, 447, 5, 54, 28, 2, 446, 445, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 451, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 7, 61, 2, 2, 452, 453, 7, 8, 2, 2, 453, 454, 5, 70, 36, 2, 454, 455, 7, 9, 2, 2, 455, 456, 5, 58, 30, 2, 456, 511, 3, 2, 2, 2, 457, 459, 5, 54, 28, 2, 458, 457, 3, 2, 2, 2, 459, 462, 3, 2, 2, 2, 460, 458, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 463, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 463, 464, 7, 62, 2, 2, 464, 465, 5, 58, 30, 2, 465, 466, 7, 61, 2, 2, 466, 467, 7, 8, 2, 2, 467, 468, 5, 70, 36, 2, 468, 469, 7, 9, 2, 2, 469, 470, 7, 10, 2, 2, 470, 511, 3, 2, 2, 2, 471, 473, 5, 54, 28, 2, 472, 471, 3, 2, 2, 2, 473, 476, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 477, 3, 2, 2, 2, 476, 474, 3, 2, 2, 2, 477, 478, 7, 63, 2, 2, 478, 479, 7, 8, 2, 2, 479, 480, 5, 64, 33, 2, 480, 481, 7, 9, 2, 2, 481, 482, 5, 58, 30, 2, 482, 511, 3, 2, 2, 2, 483, 484, 7, 64, 2, 2, 484, 485, 7, 8, 2, 2, 485, 486, 5, 70, 36, 2, 486, 487, 7, 9, 2, 2, 487, 488, 7, 4, 2, 2, 488, 489, 5, 60, 31, 2, 489, 490, 7, 5, 2, 2, 490, 511, 3, 2, 2, 2, 491, 493, 7, 65, 2, 2, 492, 494, 5, 70, 36, 2, 493, 492, 3, 2, 2, 2, 493, 494, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 511, 7, 10, 2, 2, 496, 497, 7, 66, 2, 2, 497, 511, 7, 10, 2, 2, 498, 499, 7, 67, 2, 2, 499, 511, 7, 10, 2, 2, 500, 502, 7, 68, 2, 2, 501, 503, 5, 78, 40, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 505, 7, 4, 2, 2, 505, 506, 5, 82, 42, 2, 506, 507, 7, 134, 2, 2, 507, 511, 3, 2, 2, 2, 508, 511, 5, 76, 39, 2, 509, 511, 7, 10, 2, 2, 510, 425, 3, 2, 2, 2, 510, 428, 3, 2, 2, 2, 510, 433, 3, 2, 2, 2, 510, 436, 3, 2, 2, 2, 510, 448, 3, 2, 2, 2, 510, 460, 3, 2, 2, 2, 510, 474, 3, 2, 2, 2, 510, 483, 3, 2, 2, 2, 510, 491, 3, 2, 2, 2, 510, 496, 3, 2, 2, 2, 510, 498, 3, 2, 2, 2, 510, 500, 3, 2, 2, 2, 510, 508, 3, 2, 2, 2, 510, 509, 3, 2, 2, 2, 511, 59, 3, 2, 2, 2, 512, 514, 5, 62, 32, 2, 513, 512, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 522, 3, 2, 2, 2, 517, 518, 7, 69, 2, 2, 518, 520, 7, 11, 2, 2, 519, 521, 5, 56, 29, 2, 520, 519, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 523, 3, 2, 2, 2, 522, 517, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 61, 3, 2, 2, 2, 524, 525, 7, 70, 2, 2, 525, 526, 5, 72, 37, 2, 526, 528, 7, 11, 2, 2, 527, 529, 5, 56, 29, 2, 528, 527, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 63, 3, 2, 2, 2, 530, 531, 5, 66, 34, 2, 531, 533, 7, 10, 2, 2, 532, 534, 5, 68, 35, 2, 533, 532, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 537, 7, 10, 2, 2, 536, 538, 5, 70, 36, 2, 537, 536, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 555, 3, 2, 2, 2, 539, 543, 5, 18, 10, 2, 540, 542, 5, 20, 11, 2, 541, 540, 3, 2, 2, 2, 542, 545, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 547, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 546, 539, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 549, 7, 109, 2, 2, 549, 550, 7, 11, 2, 2, 550, 551, 5, 72, 37, 2, 551, 552, 7, 13, 2, 2, 552, 553, 5, 72, 37, 2, 553, 555, 3, 2, 2, 2, 554, 530, 3, 2, 2, 2, 554, 546, 3, 2, 2, 2, 555, 65, 3, 2, 2, 2, 556, 558, 5, 10, 6, 2, 557, 556, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 561, 3, 2, 2, 2, 559, 561, 5, 70, 36, 2, 560, 557, 3, 2, 2, 2, 560, 559, 3, 2, 2, 2, 561, 67, 3, 2, 2, 2, 562, 563, 5, 70, 36, 2, 563, 69, 3, 2, 2, 2, 564, 565, 8, 36, 1, 2, 565, 566, 5, 72, 37, 2, 566, 572, 3, 2, 2, 2, 567, 568, 12, 3, 2, 2, 568, 569, 7, 12, 2, 2, 569, 571, 5, 72, 37, 2, 570, 567, 3, 2, 2, 2, 571, 574, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 71, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 575, 576, 8, 37, 1, 2, 576, 577, 7, 8, 2, 2, 577, 578, 5, 70, 36, 2, 578, 579, 7, 9, 2, 2, 579, 641, 3, 2, 2, 2, 580, 581, 7, 73, 2, 2, 581, 584, 7, 8, 2, 2, 582, 585, 5, 72, 37, 2, 583, 585, 5, 24, 13, 2, 584, 582, 3, 2, 2, 2, 584, 583, 3, 2, 2, 2, 585, 586, 3, 2, 2, 2, 586, 587, 7, 9, 2, 2, 587, 641, 3, 2, 2, 2, 588, 589, 7, 74, 2, 2, 589, 592, 7, 8, 2, 2, 590, 593, 5, 72, 37, 2, 591, 593, 5, 24, 13, 2, 592, 590, 3, 2, 2, 2, 592, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 595, 7, 9, 2, 2, 595, 641, 3, 2, 2, 2, 596, 598, 7, 75, 2, 2, 597, 599, 7, 8, 2, 2, 598, 597, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 602, 7, 109, 2, 2, 601, 603, 7, 9, 2, 2, 602, 601, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 641, 3, 2, 2, 2, 604, 605, 7, 8, 2, 2, 605, 606, 5, 24, 13, 2, 606, 607, 7, 9, 2, 2, 607, 608, 5, 72, 37, 26, 608, 641, 3, 2, 2, 2, 609, 610, 9, 2, 2, 2, 610, 641, 5, 72, 37, 25, 611, 612, 7, 20, 2, 2, 612, 641, 5, 72, 37, 23, 613, 614, 9, 3, 2, 2, 614, 641, 5, 72, 37, 22, 615, 616, 9, 4, 2, 2, 616, 641, 5, 72, 37, 18, 617, 618, 7, 4, 2, 2, 618, 623, 5, 72, 37, 2, 619, 620, 7, 12, 2, 2, 620, 622, 5, 72, 37, 2, 621, 619, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 628, 7, 12, 2, 2, 627, 626, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 7, 5, 2, 2, 630, 641, 3, 2, 2, 2, 631, 641, 7, 109, 2, 2, 632, 641, 7, 100, 2, 2, 633, 635, 7, 110, 2, 2, 634, 633, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 636, 637, 3, 2, 2, 2, 637, 641, 3, 2, 2, 2, 638, 641, 7, 111, 2, 2, 639, 641, 7, 85, 2, 2, 640, 575, 3, 2, 2, 2, 640, 580, 3, 2, 2, 2, 640, 588, 3, 2, 2, 2, 640, 596, 3, 2, 2, 2, 640, 604, 3, 2, 2, 2, 640, 609, 3, 2, 2, 2, 640, 611, 3, 2, 2, 2, 640, 613, 3, 2, 2, 2, 640, 615, 3, 2, 2, 2, 640, 617, 3, 2, 2, 2, 640, 631, 3, 2, 2, 2, 640, 632, 3, 2, 2, 2, 640, 634, 3, 2, 2, 2, 640, 638, 3, 2, 2, 2, 640, 639, 3, 2, 2, 2, 641, 702, 3, 2, 2, 2, 642, 643, 12, 21, 2, 2, 643, 644, 9, 5, 2, 2, 644, 701, 5, 72, 37, 22, 645, 646, 12, 20, 2, 2, 646, 647, 9, 6, 2, 2, 647, 701, 5, 72, 37, 21, 648, 649, 12, 19, 2, 2, 649, 650, 9, 7, 2, 2, 650, 701, 5, 72, 37, 20, 651, 652, 12, 17, 2, 2, 652, 653, 9, 8, 2, 2, 653, 701, 5, 72, 37, 18, 654, 655, 12, 16, 2, 2, 655, 656, 7, 25, 2, 2, 656, 701, 5, 72, 37, 17, 657, 658, 12, 15, 2, 2, 658, 659, 7, 27, 2, 2, 659, 701, 5, 72, 37, 16, 660, 661, 12, 14, 2, 2, 661, 662, 7, 28, 2, 2, 662, 701, 5, 72, 37, 15, 663, 664, 12, 13, 2, 2, 664, 665, 7, 37, 2, 2, 665, 701, 5, 72, 37, 14, 666, 667, 12, 12, 2, 2, 667, 668, 7, 38, 2, 2, 668, 701, 5, 72, 37, 13, 669, 670, 12, 11, 2, 2, 670, 671, 7, 15, 2, 2, 671, 672, 5, 72, 37, 2, 672, 673, 7, 11, 2, 2, 673, 674, 5, 72, 37, 12, 674, 701, 3, 2, 2, 2, 675, 676, 12, 10, 2, 2, 676, 677, 7, 39, 2, 2, 677, 701, 5, 72, 37, 10, 678, 679, 12, 9, 2, 2, 679, 680, 7, 40, 2, 2, 680, 701, 5, 72, 37, 9, 681, 682, 12, 33, 2, 2, 682, 683, 7, 16, 2, 2, 683, 701, 7, 109, 2, 2, 684, 685, 12, 32, 2, 2, 685, 686, 7, 17, 2, 2, 686, 701, 7, 109, 2, 2, 687, 688, 12, 31, 2, 2, 688, 690, 7, 8, 2, 2, 689, 691, 5, 74, 38, 2, 690, 689, 3, 2, 2, 2, 690, 691, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 701, 7, 9, 2, 2, 693, 694, 12, 27, 2, 2, 694, 695, 7, 6, 2, 2, 695, 696, 5, 70, 36, 2, 696, 697, 7, 7, 2, 2, 697, 701, 3, 2, 2, 2, 698, 699, 12, 24, 2, 2, 699, 701, 9, 2, 2, 2, 700, 642, 3, 2, 2, 2, 700, 645, 3, 2, 2, 2, 700, 648, 3, 2, 2, 2, 700, 651, 3, 2, 2, 2, 700, 654, 3, 2, 2, 2, 700, 657, 3, 2, 2, 2, 700, 660, 3, 2, 2, 2, 700, 663, 3, 2, 2, 2, 700, 666, 3, 2, 2, 2, 700, 669, 3, 2, 2, 2, 700, 675, 3, 2, 2, 2, 700, 678, 3, 2, 2, 2, 700, 681, 3, 2, 2, 2, 700, 684, 3, 2, 2, 2, 700, 687, 3, 2, 2, 2, 700, 693, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 701, 704, 3, 2, 2, 2, 702, 700, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 73, 3, 2, 2, 2, 704, 702, 3, 2, 2, 2, 705, 710, 5, 72, 37, 2, 706, 707, 7, 12, 2, 2, 707, 709, 5, 72, 37, 2, 708, 706, 3, 2, 2, 2, 709, 712, 3, 2, 2, 2, 710, 708, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 75, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 713, 715, 7, 76, 2, 2, 714, 716, 5, 78, 40, 2, 715, 714, 3, 2, 2, 2, 715, 716, 3, 2, 2, 2, 716, 717, 3, 2, 2, 2, 717, 718, 7, 86, 2, 2, 718, 77, 3, 2, 2, 2, 719, 720, 7, 8, 2, 2, 720, 725, 5, 80, 41, 2, 721, 722, 7, 12, 2, 2, 722, 724, 5, 80, 41, 2, 723, 721, 3, 2, 2, 2, 724, 727, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 728, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 728, 729, 7, 9, 2, 2, 729, 79, 3, 2, 2, 2, 730, 731, 7, 77, 2, 2, 731, 741, 7, 110, 2, 2, 732, 733, 7, 78, 2, 2, 733, 741, 7, 109, 2, 2, 734, 735, 7, 79, 2, 2, 735, 741, 7, 110, 2, 2, 736, 737, 7, 80, 2, 2, 737, 741, 5, 72, 37, 2, 738, 739, 7, 81, 2, 2, 739, 741, 5, 72, 37, 2, 740, 730, 3, 2, 2, 2, 740, 732, 3, 2, 2, 2, 740, 734, 3, 2, 2, 2, 740, 736, 3, 2, 2, 2, 740, 738, 3, 2, 2, 2, 741, 81, 3, 2, 2, 2, 742, 744, 5, 84, 43, 2, 743, 742, 3, 2, 2, 2, 744, 747, 3, 2, 2, 2, 745, 743, 3, 2, 2, 2, 745, 746, 3, 2, 2, 2, 746, 83, 3, 2, 2, 2, 747, 745, 3, 2, 2, 2, 748, 752, 5, 86, 44, 2, 749, 752, 5, 88, 45, 2, 750, 752, 5, 90, 46, 2, 751, 748, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 750, 3, 2, 2, 2, 752, 85, 3, 2, 2, 2, 753, 754, 7, 147, 2, 2, 754, 756, 7, 118, 2, 2, 755, 757, 7, 148, 2, 2, 756, 755, 3, 2, 2, 2, 756, 757, 3, 2, 2, 2, 757, 764, 3, 2, 2, 2, 758, 759, 7, 146, 2, 2, 759, 761, 7, 118, 2, 2, 760, 762, 7, 148, 2, 2, 761, 760, 3, 2, 2, 2, 761, 762, 3, 2, 2, 2, 762, 764, 3, 2, 2, 2, 763, 753, 3, 2, 2, 2, 763, 758, 3, 2, 2, 2, 764, 87, 3, 2, 2, 2, 765, 767, 7, 116, 2, 2, 766, 768, 5, 92, 47, 2, 767, 766, 3, 2, 2, 2, 767, 768, 3, 2, 2, 2, 768, 770, 3, 2, 2, 2, 769, 771, 7, 148, 2, 2, 770, 769, 3, 2, 2, 2, 770, 771, 3, 2, 2, 2, 771, 89, 3, 2, 2, 2, 772, 773, 7, 115, 2, 2, 773, 778, 5, 94, 48, 2, 774, 775, 7, 119, 2, 2, 775, 777, 5, 94, 48, 2, 776, 774, 3, 2, 2, 2, 777, 780, 3, 2, 2, 2, 778, 776, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 782, 3, 2, 2, 2, 780, 778, 3, 2, 2, 2, 781, 783, 7, 148, 2, 2, 782, 781, 3, 2, 2, 2, 782, 783, 3, 2, 2, 2, 783, 91, 3, 2, 2, 2, 784, 830, 5, 94, 48, 2, 785, 786, 7, 117, 2, 2, 786, 830, 5, 94, 48, 2, 787, 788, 5, 94, 48, 2, 788, 789, 7, 119, 2, 2, 789, 790, 5, 94, 48, 2, 790, 830, 3, 2, 2, 2, 791, 792, 7, 120, 2, 2, 792, 793, 5, 94, 48, 2, 793, 794, 7, 121, 2, 2, 794, 795, 7, 119, 2, 2, 795, 796, 7, 147, 2, 2, 796, 830, 3, 2, 2, 2, 797, 798, 7, 120, 2, 2, 798, 799, 7, 120, 2, 2, 799, 800, 5, 94, 48, 2, 800, 801, 7, 121, 2, 2, 801, 802, 7, 121, 2, 2, 802, 803, 7, 119, 2, 2, 803, 804, 7, 147, 2, 2, 804, 830, 3, 2, 2, 2, 805, 806, 7, 120, 2, 2, 806, 807, 5, 94, 48, 2, 807, 808, 7, 119, 2, 2, 808, 809, 7, 147, 2, 2, 809, 810, 7, 121, 2, 2, 810, 811, 7, 119, 2, 2, 811, 812, 7, 147, 2, 2, 812, 830, 3, 2, 2, 2, 813, 814, 7, 120, 2, 2, 814, 815, 5, 94, 48, 2, 815, 816, 7, 119, 2, 2, 816, 817, 7, 147, 2, 2, 817, 818, 7, 121, 2, 2, 818, 830, 3, 2, 2, 2, 819, 820, 7, 120, 2, 2, 820, 821, 5, 94, 48, 2, 821, 822, 7, 121, 2, 2, 822, 830, 3, 2, 2, 2, 823, 824, 7, 120, 2, 2, 824, 825, 7, 120, 2, 2, 825, 826, 5, 94, 48, 2, 826, 827, 7, 121, 2, 2, 827, 828, 7, 121, 2, 2, 828, 830, 3, 2, 2, 2, 829, 784, 3, 2, 2, 2, 829, 785, 3, 2, 2, 2, 829, 787, 3, 2, 2, 2, 829, 791, 3, 2, 2, 2, 829, 797, 3, 2, 2, 2, 829, 805, 3, 2, 2, 2, 829, 813, 3, 2, 2, 2, 829, 819, 3, 2, 2, 2, 829, 823, 3, 2, 2, 2, 830, 93, 3, 2, 2, 2, 831, 832, 8, 48, 1, 2, 832, 833, 7, 122, 2, 2, 833, 834, 5, 94, 48, 2, 834, 835, 7, 123, 2, 2, 835, 846, 3, 2, 2, 2, 836, 837, 9, 9, 2, 2, 837, 846, 5, 94, 48, 10, 838, 846, 7, 147, 2, 2, 839, 846, 7, 145, 2, 2, 840, 841, 7, 133, 2, 2, 841, 842, 7, 147, 2, 2, 842, 846, 7, 134, 2, 2, 843, 846, 7, 135, 2, 2, 844, 846, 7, 144, 2, 2, 845, 831, 3, 2, 2, 2, 845, 836, 3, 2, 2, 2, 845, 838, 3, 2, 2, 2, 845, 839, 3, 2, 2, 2, 845, 840, 3, 2, 2, 2, 845, 843, 3, 2, 2, 2, 845, 844, 3, 2, 2, 2, 846, 861, 3, 2, 2, 2, 847, 848, 12, 12, 2, 2, 848, 849, 7, 124, 2, 2, 849, 860, 5, 94, 48, 13, 850, 851, 12, 11, 2, 2, 851, 852, 9, 10, 2, 2, 852, 860, 5, 94, 48, 12, 853, 854, 12, 9, 2, 2, 854, 855, 9, 11, 2, 2, 855, 860, 5, 94, 48, 10, 856, 857, 12, 8, 2, 2, 857, 858, 9, 12, 2, 2, 858, 860, 5, 94, 48, 9, 859, 847, 3, 2, 2, 2, 859, 850, 3, 2, 2, 2, 859, 853, 3, 2, 2, 2, 859, 856, 3, 2, 2, 2, 860, 863, 3, 2, 2, 2, 861, 859, 3, 2, 2, 2, 861, 862, 3, 2, 2, 2, 862, 95, 3, 2, 2, 2, 863, 861, 3, 2, 2, 2, 92, 105, 122, 131, 141, 147, 155, 162, 171, 176, 182, 187, 192, 199, 206, 211, 223, 226, 228, 239, 246, 251, 257, 259, 267, 273, 285, 299, 305, 311, 317, 322, 326, 335, 342, 349, 359, 371, 382, 403, 412, 418, 423, 430, 443, 448, 460, 474, 493, 502, 510, 515, 520, 522, 528, 533, 537, 543, 546, 554, 557, 560, 572, 584, 592, 598, 602, 623, 627, 636, 640, 690, 700, 702, 710, 715, 725, 740, 745, 751, 756, 761, 763, 767, 770, 778, 782, 829, 845, 859, 861]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 156, 877, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 7, 4, 104, 10, 4, 12, 4, 14, 4, 107, 11, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 123, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 7, 7, 130, 10, 7, 12, 7, 14, 7, 133, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 140, 10, 7, 12, 7, 14, 7, 143, 11, 7, 3, 7, 7, 7, 146, 10, 7, 12, 7, 14, 7, 149, 11, 7, 3, 8, 3, 8, 3, 8, 7, 8, 154, 10, 8, 12, 8, 14, 8, 157, 11, 8, 3, 8, 3, 8, 7, 8, 161, 10, 8, 12, 8, 14, 8, 164, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 7, 9, 170, 10, 9, 12, 9, 14, 9, 173, 11, 9, 3, 9, 3, 9, 5, 9, 177, 10, 9, 3, 9, 3, 9, 7, 9, 181, 10, 9, 12, 9, 14, 9, 184, 11, 9, 3, 9, 3, 9, 5, 9, 188, 10, 9, 3, 10, 7, 10, 191, 10, 10, 12, 10, 14, 10, 194, 11, 10, 3, 10, 3, 10, 7, 10, 198, 10, 10, 12, 10, 14, 10, 201, 11, 10, 3, 11, 3, 11, 7, 11, 205, 10, 11, 12, 11, 14, 11, 208, 11, 11, 3, 12, 3, 12, 5, 12, 212, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 224, 10, 13, 3, 13, 7, 13, 227, 10, 13, 12, 13, 14, 13, 230, 11, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 240, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 247, 10, 14, 3, 14, 3, 14, 3, 14, 5, 14, 252, 10, 14, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, 258, 10, 14, 12, 14, 14, 14, 261, 11, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 5, 16, 268, 10, 16, 3, 16, 3, 16, 6, 16, 272, 10, 16, 13, 16, 14, 16, 273, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 286, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 298, 10, 20, 12, 20, 14, 20, 301, 11, 20, 3, 21, 3, 21, 3, 21, 5, 21, 306, 10, 21, 3, 22, 3, 22, 7, 22, 310, 10, 22, 12, 22, 14, 22, 313, 11, 22, 3, 22, 3, 22, 3, 22, 5, 22, 318, 10, 22, 3, 22, 3, 22, 3, 22, 5, 22, 323, 10, 22, 3, 23, 3, 23, 5, 23, 327, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 334, 10, 24, 12, 24, 14, 24, 337, 11, 24, 3, 25, 3, 25, 7, 25, 341, 10, 25, 12, 25, 14, 25, 344, 11, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 350, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 7, 26, 358, 10, 26, 12, 26, 14, 26, 361, 11, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 372, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 383, 10, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 404, 10, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 411, 10, 28, 12, 28, 14, 28, 414, 11, 28, 3, 28, 3, 28, 3, 28, 5, 28, 419, 10, 28, 3, 29, 6, 29, 422, 10, 29, 13, 29, 14, 29, 423, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 431, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 444, 10, 30, 3, 30, 7, 30, 447, 10, 30, 12, 30, 14, 30, 450, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 459, 10, 30, 12, 30, 14, 30, 462, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 473, 10, 30, 12, 30, 14, 30, 476, 11, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 494, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 503, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 511, 10, 30, 3, 31, 6, 31, 514, 10, 31, 13, 31, 14, 31, 515, 3, 31, 3, 31, 3, 31, 5, 31, 521, 10, 31, 5, 31, 523, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 529, 10, 32, 3, 33, 3, 33, 3, 33, 5, 33, 534, 10, 33, 3, 33, 3, 33, 5, 33, 538, 10, 33, 3, 33, 3, 33, 7, 33, 542, 10, 33, 12, 33, 14, 33, 545, 11, 33, 5, 33, 547, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 555, 10, 33, 3, 34, 5, 34, 558, 10, 34, 3, 34, 5, 34, 561, 10, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 571, 10, 36, 12, 36, 14, 36, 574, 11, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 585, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 593, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 599, 10, 37, 3, 37, 3, 37, 5, 37, 603, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 622, 10, 37, 12, 37, 14, 37, 625, 11, 37, 3, 37, 5, 37, 628, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 6, 37, 635, 10, 37, 13, 37, 14, 37, 636, 3, 37, 3, 37, 5, 37, 641, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 691, 10, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 701, 10, 37, 12, 37, 14, 37, 704, 11, 37, 3, 38, 3, 38, 3, 38, 7, 38, 709, 10, 38, 12, 38, 14, 38, 712, 11, 38, 3, 39, 3, 39, 5, 39, 716, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 724, 10, 40, 12, 40, 14, 40, 727, 11, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 741, 10, 41, 3, 42, 7, 42, 744, 10, 42, 12, 42, 14, 42, 747, 11, 42, 3, 43, 3, 43, 3, 43, 5, 43, 752, 10, 43, 3, 44, 3, 44, 3, 44, 7, 44, 757, 10, 44, 12, 44, 14, 44, 760, 11, 44, 3, 44, 3, 44, 3, 44, 7, 44, 765, 10, 44, 12, 44, 14, 44, 768, 11, 44, 5, 44, 770, 10, 44, 3, 45, 3, 45, 5, 45, 774, 10, 45, 3, 45, 7, 45, 777, 10, 45, 12, 45, 14, 45, 780, 11, 45, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 786, 10, 46, 12, 46, 14, 46, 789, 11, 46, 3, 46, 7, 46, 792, 10, 46, 12, 46, 14, 46, 795, 11, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 842, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 858, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 7, 48, 872, 10, 48, 12, 48, 14, 48, 875, 11, 48, 3, 48, 2, 9, 12, 24, 26, 38, 70, 72, 94, 49, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 2, 13, 3, 2, 23, 24, 5, 2, 18, 19, 25, 26, 82, 82, 4, 2, 33, 33, 36, 36, 3, 2, 29, 30, 3, 2, 20, 22, 3, 2, 18, 19, 3, 2, 31, 36, 3, 2, 127, 130, 3, 2, 125, 126, 3, 2, 131, 132, 3, 2, 127, 128, 2, 1006, 2, 96, 3, 2, 2, 2, 4, 99, 3, 2, 2, 2, 6, 105, 3, 2, 2, 2, 8, 122, 3, 2, 2, 2, 10, 124, 3, 2, 2, 2, 12, 127, 3, 2, 2, 2, 14, 150, 3, 2, 2, 2, 16, 187, 3, 2, 2, 2, 18, 192, 3, 2, 2, 2, 20, 202, 3, 2, 2, 2, 22, 209, 3, 2, 2, 2, 24, 215, 3, 2, 2, 2, 26, 246, 3, 2, 2, 2, 28, 262, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 277, 3, 2, 2, 2, 34, 280, 3, 2, 2, 2, 36, 283, 3, 2, 2, 2, 38, 291, 3, 2, 2, 2, 40, 302, 3, 2, 2, 2, 42, 307, 3, 2, 2, 2, 44, 324, 3, 2, 2, 2, 46, 330, 3, 2, 2, 2, 48, 349, 3, 2, 2, 2, 50, 351, 3, 2, 2, 2, 52, 371, 3, 2, 2, 2, 54, 418, 3, 2, 2, 2, 56, 421, 3, 2, 2, 2, 58, 510, 3, 2, 2, 2, 60, 513, 3, 2, 2, 2, 62, 524, 3, 2, 2, 2, 64, 554, 3, 2, 2, 2, 66, 560, 3, 2, 2, 2, 68, 562, 3, 2, 2, 2, 70, 564, 3, 2, 2, 2, 72, 640, 3, 2, 2, 2, 74, 705, 3, 2, 2, 2, 76, 713, 3, 2, 2, 2, 78, 719, 3, 2, 2, 2, 80, 740, 3, 2, 2, 2, 82, 745, 3, 2, 2, 2, 84, 751, 3, 2, 2, 2, 86, 769, 3, 2, 2, 2, 88, 771, 3, 2, 2, 2, 90, 781, 3, 2, 2, 2, 92, 841, 3, 2, 2, 2, 94, 857, 3, 2, 2, 2, 96, 97, 5, 6, 4, 2, 97, 98, 7, 2, 2, 3, 98, 3, 3, 2, 2, 2, 99, 100, 5, 82, 42, 2, 100, 101, 7, 2, 2, 3, 101, 5, 3, 2, 2, 2, 102, 104, 5, 8, 5, 2, 103, 102, 3, 2, 2, 2, 104, 107, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 105, 106, 3, 2, 2, 2, 106, 7, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 108, 109, 5, 10, 6, 2, 109, 110, 7, 10, 2, 2, 110, 123, 3, 2, 2, 2, 111, 112, 5, 30, 16, 2, 112, 113, 7, 10, 2, 2, 113, 123, 3, 2, 2, 2, 114, 115, 5, 36, 19, 2, 115, 116, 7, 10, 2, 2, 116, 123, 3, 2, 2, 2, 117, 123, 5, 42, 22, 2, 118, 123, 5, 50, 26, 2, 119, 120, 5, 14, 8, 2, 120, 121, 7, 10, 2, 2, 121, 123, 3, 2, 2, 2, 122, 108, 3, 2, 2, 2, 122, 111, 3, 2, 2, 2, 122, 114, 3, 2, 2, 2, 122, 117, 3, 2, 2, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 123, 9, 3, 2, 2, 2, 124, 125, 5, 18, 10, 2, 125, 126, 5, 12, 7, 2, 126, 11, 3, 2, 2, 2, 127, 131, 8, 7, 1, 2, 128, 130, 5, 20, 11, 2, 129, 128, 3, 2, 2, 2, 130, 133, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 134, 3, 2, 2, 2, 133, 131, 3, 2, 2, 2, 134, 135, 5, 16, 9, 2, 135, 147, 3, 2, 2, 2, 136, 137, 12, 3, 2, 2, 137, 141, 7, 12, 2, 2, 138, 140, 5, 20, 11, 2, 139, 138, 3, 2, 2, 2, 140, 143, 3, 2, 2, 2, 141, 139, 3, 2, 2, 2, 141, 142, 3, 2, 2, 2, 142, 144, 3, 2, 2, 2, 143, 141, 3, 2, 2, 2, 144, 146, 5, 16, 9, 2, 145, 136, 3, 2, 2, 2, 146, 149, 3, 2, 2, 2, 147, 145, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 13, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, 150, 151, 7, 41, 2, 2, 151, 155, 5, 18, 10, 2, 152, 154, 5, 20, 11, 2, 153, 152, 3, 2, 2, 2, 154, 157, 3, 2, 2, 2, 155, 153, 3, 2, 2, 2, 155, 156, 3, 2, 2, 2, 156, 158, 3, 2, 2, 2, 157, 155, 3, 2, 2, 2, 158, 162, 7, 109, 2, 2, 159, 161, 5, 22, 12, 2, 160, 159, 3, 2, 2, 2, 161, 164, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 165, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 165, 166, 8, 8, 1, 2, 166, 15, 3, 2, 2, 2, 167, 171, 7, 109, 2, 2, 168, 170, 5, 22, 12, 2, 169, 168, 3, 2, 2, 2, 170, 173, 3, 2, 2, 2, 171, 169, 3, 2, 2, 2, 171, 172, 3, 2, 2, 2, 172, 176, 3, 2, 2, 2, 173, 171, 3, 2, 2, 2, 174, 175, 7, 39, 2, 2, 175, 177, 5, 72, 37, 2, 176, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 188, 3, 2, 2, 2, 178, 182, 7, 109, 2, 2, 179, 181, 5, 22, 12, 2, 180, 179, 3, 2, 2, 2, 181, 184, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 182, 183, 3, 2, 2, 2, 183, 185, 3, 2, 2, 2, 184, 182, 3, 2, 2, 2, 185, 186, 7, 39, 2, 2, 186, 188, 5, 76, 39, 2, 187, 167, 3, 2, 2, 2, 187, 178, 3, 2, 2, 2, 188, 17, 3, 2, 2, 2, 189, 191, 5, 54, 28, 2, 190, 189, 3, 2, 2, 2, 191, 194, 3, 2, 2, 2, 192, 190, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 195, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 195, 199, 5, 26, 14, 2, 196, 198, 5, 54, 28, 2, 197, 196, 3, 2, 2, 2, 198, 201, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 19, 3, 2, 2, 2, 201, 199, 3, 2, 2, 2, 202, 206, 7, 20, 2, 2, 203, 205, 5, 54, 28, 2, 204, 203, 3, 2, 2, 2, 205, 208, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 21, 3, 2, 2, 2, 208, 206, 3, 2, 2, 2, 209, 211, 7, 6, 2, 2, 210, 212, 5, 72, 37, 2, 211, 210, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 213, 3, 2, 2, 2, 213, 214, 7, 7, 2, 2, 214, 23, 3, 2, 2, 2, 215, 216, 8, 13, 1, 2, 216, 217, 5, 26, 14, 2, 217, 228, 3, 2, 2, 2, 218, 219, 12, 4, 2, 2, 219, 227, 7, 20, 2, 2, 220, 221, 12, 3, 2, 2, 221, 223, 7, 6, 2, 2, 222, 224, 5, 72, 37, 2, 223, 222, 3, 2, 2, 2, 223, 224, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 227, 7, 7, 2, 2, 226, 218, 3, 2, 2, 2, 226, 220, 3, 2, 2, 2, 227, 230, 3, 2, 2, 2, 228, 226, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 25, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 231, 232, 8, 14, 1, 2, 232, 233, 7, 8, 2, 2, 233, 234, 5, 26, 14, 2, 234, 235, 7, 9, 2, 2, 235, 247, 3, 2, 2, 2, 236, 247, 7, 84, 2, 2, 237, 239, 7, 83, 2, 2, 238, 240, 7, 84, 2, 2, 239, 238, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 247, 3, 2, 2, 2, 241, 247, 5, 30, 16, 2, 242, 247, 5, 28, 15, 2, 243, 247, 5, 36, 19, 2, 244, 247, 5, 34, 18, 2, 245, 247, 7, 3, 2, 2, 246, 231, 3, 2, 2, 2, 246, 236, 3, 2, 2, 2, 246, 237, 3, 2, 2, 2, 246, 241, 3, 2, 2, 2, 246, 242, 3, 2, 2, 2, 246, 243, 3, 2, 2, 2, 246, 244, 3, 2, 2, 2, 246, 245, 3, 2, 2, 2, 247, 259, 3, 2, 2, 2, 248, 249, 12, 9, 2, 2, 249, 251, 7, 6, 2, 2, 250, 252, 5, 72, 37, 2, 251, 250, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 258, 7, 7, 2, 2, 254, 255, 12, 8, 2, 2, 255, 256, 7, 8, 2, 2, 256, 258, 7, 9, 2, 2, 257, 248, 3, 2, 2, 2, 257, 254, 3, 2, 2, 2, 258, 261, 3, 2, 2, 2, 259, 257, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 27, 3, 2, 2, 2, 261, 259, 3, 2, 2, 2, 262, 263, 7, 71, 2, 2, 263, 264, 7, 109, 2, 2, 264, 29, 3, 2, 2, 2, 265, 267, 7, 71, 2, 2, 266, 268, 7, 109, 2, 2, 267, 266, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 271, 7, 4, 2, 2, 270, 272, 5, 32, 17, 2, 271, 270, 3, 2, 2, 2, 272, 273, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 276, 7, 5, 2, 2, 276, 31, 3, 2, 2, 2, 277, 278, 5, 10, 6, 2, 278, 279, 7, 10, 2, 2, 279, 33, 3, 2, 2, 2, 280, 281, 7, 72, 2, 2, 281, 282, 7, 109, 2, 2, 282, 35, 3, 2, 2, 2, 283, 285, 7, 72, 2, 2, 284, 286, 7, 109, 2, 2, 285, 284, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 287, 288, 7, 4, 2, 2, 288, 289, 5, 38, 20, 2, 289, 290, 7, 5, 2, 2, 290, 37, 3, 2, 2, 2, 291, 292, 8, 20, 1, 2, 292, 293, 5, 40, 21, 2, 293, 299, 3, 2, 2, 2, 294, 295, 12, 3, 2, 2, 295, 296, 7, 12, 2, 2, 296, 298, 5, 40, 21, 2, 297, 294, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 39, 3, 2, 2, 2, 301, 299, 3, 2, 2, 2, 302, 305, 7, 109, 2, 2, 303, 304, 7, 39, 2, 2, 304, 306, 5, 72, 37, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 41, 3, 2, 2, 2, 307, 311, 5, 18, 10, 2, 308, 310, 5, 20, 11, 2, 309, 308, 3, 2, 2, 2, 310, 313, 3, 2, 2, 2, 311, 309, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 314, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 314, 315, 7, 109, 2, 2, 315, 317, 7, 8, 2, 2, 316, 318, 5, 46, 24, 2, 317, 316, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 322, 7, 9, 2, 2, 320, 323, 5, 44, 23, 2, 321, 323, 7, 10, 2, 2, 322, 320, 3, 2, 2, 2, 322, 321, 3, 2, 2, 2, 323, 43, 3, 2, 2, 2, 324, 326, 7, 4, 2, 2, 325, 327, 5, 56, 29, 2, 326, 325, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 328, 3, 2, 2, 2, 328, 329, 7, 5, 2, 2, 329, 45, 3, 2, 2, 2, 330, 335, 5, 48, 25, 2, 331, 332, 7, 12, 2, 2, 332, 334, 5, 48, 25, 2, 333, 331, 3, 2, 2, 2, 334, 337, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 335, 336, 3, 2, 2, 2, 336, 47, 3, 2, 2, 2, 337, 335, 3, 2, 2, 2, 338, 342, 5, 18, 10, 2, 339, 341, 5, 20, 11, 2, 340, 339, 3, 2, 2, 2, 341, 344, 3, 2, 2, 2, 342, 340, 3, 2, 2, 2, 342, 343, 3, 2, 2, 2, 343, 345, 3, 2, 2, 2, 344, 342, 3, 2, 2, 2, 345, 346, 7, 109, 2, 2, 346, 350, 3, 2, 2, 2, 347, 350, 7, 84, 2, 2, 348, 350, 7, 14, 2, 2, 349, 338, 3, 2, 2, 2, 349, 347, 3, 2, 2, 2, 349, 348, 3, 2, 2, 2, 350, 49, 3, 2, 2, 2, 351, 352, 7, 89, 2, 2, 352, 353, 7, 109, 2, 2, 353, 354, 7, 8, 2, 2, 354, 359, 5, 52, 27, 2, 355, 356, 7, 12, 2, 2, 356, 358, 5, 52, 27, 2, 357, 355, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 362, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 363, 7, 9, 2, 2, 363, 51, 3, 2, 2, 2, 364, 372, 7, 100, 2, 2, 365, 366, 7, 100, 2, 2, 366, 367, 7, 13, 2, 2, 367, 372, 7, 100, 2, 2, 368, 372, 7, 109, 2, 2, 369, 372, 7, 110, 2, 2, 370, 372, 7, 58, 2, 2, 371, 364, 3, 2, 2, 2, 371, 365, 3, 2, 2, 2, 371, 368, 3, 2, 2, 2, 371, 369, 3, 2, 2, 2, 371, 370, 3, 2, 2, 2, 372, 53, 3, 2, 2, 2, 373, 419, 7, 42, 2, 2, 374, 375, 7, 45, 2, 2, 375, 376, 7, 8, 2, 2, 376, 377, 7, 100, 2, 2, 377, 419, 7, 9, 2, 2, 378, 382, 7, 50, 2, 2, 379, 380, 7, 8, 2, 2, 380, 381, 7, 109, 2, 2, 381, 383, 7, 9, 2, 2, 382, 379, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 419, 3, 2, 2, 2, 384, 419, 7, 53, 2, 2, 385, 419, 7, 54, 2, 2, 386, 387, 7, 52, 2, 2, 387, 388, 7, 8, 2, 2, 388, 389, 5, 72, 37, 2, 389, 390, 7, 9, 2, 2, 390, 419, 3, 2, 2, 2, 391, 419, 7, 47, 2, 2, 392, 419, 7, 48, 2, 2, 393, 419, 7, 55, 2, 2, 394, 419, 7, 56, 2, 2, 395, 419, 7, 43, 2, 2, 396, 419, 7, 44, 2, 2, 397, 419, 7, 46, 2, 2, 398, 419, 7, 57, 2, 2, 399, 403, 7, 49, 2, 2, 400, 401, 7, 8, 2, 2, 401, 402, 7, 109, 2, 2, 402, 404, 7, 9, 2, 2, 403, 400, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 419, 3, 2, 2, 2, 405, 406, 7, 51, 2, 2, 406, 407, 7, 8, 2, 2, 407, 412, 5, 52, 27, 2, 408, 409, 7, 12, 2, 2, 409, 411, 5, 52, 27, 2, 410, 408, 3, 2, 2, 2, 411, 414, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 415, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 416, 7, 9, 2, 2, 416, 419, 3, 2, 2, 2, 417, 419, 7, 58, 2, 2, 418, 373, 3, 2, 2, 2, 418, 374, 3, 2, 2, 2, 418, 378, 3, 2, 2, 2, 418, 384, 3, 2, 2, 2, 418, 385, 3, 2, 2, 2, 418, 386, 3, 2, 2, 2, 418, 391, 3, 2, 2, 2, 418, 392, 3, 2, 2, 2, 418, 393, 3, 2, 2, 2, 418, 394, 3, 2, 2, 2, 418, 395, 3, 2, 2, 2, 418, 396, 3, 2, 2, 2, 418, 397, 3, 2, 2, 2, 418, 398, 3, 2, 2, 2, 418, 399, 3, 2, 2, 2, 418, 405, 3, 2, 2, 2, 418, 417, 3, 2, 2, 2, 419, 55, 3, 2, 2, 2, 420, 422, 5, 58, 30, 2, 421, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 57, 3, 2, 2, 2, 425, 426, 5, 10, 6, 2, 426, 427, 7, 10, 2, 2, 427, 511, 3, 2, 2, 2, 428, 430, 7, 4, 2, 2, 429, 431, 5, 56, 29, 2, 430, 429, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 432, 511, 7, 5, 2, 2, 433, 434, 5, 70, 36, 2, 434, 435, 7, 10, 2, 2, 435, 511, 3, 2, 2, 2, 436, 437, 7, 59, 2, 2, 437, 438, 7, 8, 2, 2, 438, 439, 5, 70, 36, 2, 439, 440, 7, 9, 2, 2, 440, 443, 5, 58, 30, 2, 441, 442, 7, 60, 2, 2, 442, 444, 5, 58, 30, 2, 443, 441, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 511, 3, 2, 2, 2, 445, 447, 5, 54, 28, 2, 446, 445, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 451, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 7, 61, 2, 2, 452, 453, 7, 8, 2, 2, 453, 454, 5, 70, 36, 2, 454, 455, 7, 9, 2, 2, 455, 456, 5, 58, 30, 2, 456, 511, 3, 2, 2, 2, 457, 459, 5, 54, 28, 2, 458, 457, 3, 2, 2, 2, 459, 462, 3, 2, 2, 2, 460, 458, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 463, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 463, 464, 7, 62, 2, 2, 464, 465, 5, 58, 30, 2, 465, 466, 7, 61, 2, 2, 466, 467, 7, 8, 2, 2, 467, 468, 5, 70, 36, 2, 468, 469, 7, 9, 2, 2, 469, 470, 7, 10, 2, 2, 470, 511, 3, 2, 2, 2, 471, 473, 5, 54, 28, 2, 472, 471, 3, 2, 2, 2, 473, 476, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 477, 3, 2, 2, 2, 476, 474, 3, 2, 2, 2, 477, 478, 7, 63, 2, 2, 478, 479, 7, 8, 2, 2, 479, 480, 5, 64, 33, 2, 480, 481, 7, 9, 2, 2, 481, 482, 5, 58, 30, 2, 482, 511, 3, 2, 2, 2, 483, 484, 7, 64, 2, 2, 484, 485, 7, 8, 2, 2, 485, 486, 5, 70, 36, 2, 486, 487, 7, 9, 2, 2, 487, 488, 7, 4, 2, 2, 488, 489, 5, 60, 31, 2, 489, 490, 7, 5, 2, 2, 490, 511, 3, 2, 2, 2, 491, 493, 7, 65, 2, 2, 492, 494, 5, 70, 36, 2, 493, 492, 3, 2, 2, 2, 493, 494, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 511, 7, 10, 2, 2, 496, 497, 7, 66, 2, 2, 497, 511, 7, 10, 2, 2, 498, 499, 7, 67, 2, 2, 499, 511, 7, 10, 2, 2, 500, 502, 7, 68, 2, 2, 501, 503, 5, 78, 40, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 505, 7, 4, 2, 2, 505, 506, 5, 82, 42, 2, 506, 507, 7, 134, 2, 2, 507, 511, 3, 2, 2, 2, 508, 511, 5, 76, 39, 2, 509, 511, 7, 10, 2, 2, 510, 425, 3, 2, 2, 2, 510, 428, 3, 2, 2, 2, 510, 433, 3, 2, 2, 2, 510, 436, 3, 2, 2, 2, 510, 448, 3, 2, 2, 2, 510, 460, 3, 2, 2, 2, 510, 474, 3, 2, 2, 2, 510, 483, 3, 2, 2, 2, 510, 491, 3, 2, 2, 2, 510, 496, 3, 2, 2, 2, 510, 498, 3, 2, 2, 2, 510, 500, 3, 2, 2, 2, 510, 508, 3, 2, 2, 2, 510, 509, 3, 2, 2, 2, 511, 59, 3, 2, 2, 2, 512, 514, 5, 62, 32, 2, 513, 512, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 522, 3, 2, 2, 2, 517, 518, 7, 69, 2, 2, 518, 520, 7, 11, 2, 2, 519, 521, 5, 56, 29, 2, 520, 519, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 523, 3, 2, 2, 2, 522, 517, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 61, 3, 2, 2, 2, 524, 525, 7, 70, 2, 2, 525, 526, 5, 72, 37, 2, 526, 528, 7, 11, 2, 2, 527, 529, 5, 56, 29, 2, 528, 527, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 63, 3, 2, 2, 2, 530, 531, 5, 66, 34, 2, 531, 533, 7, 10, 2, 2, 532, 534, 5, 68, 35, 2, 533, 532, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 537, 7, 10, 2, 2, 536, 538, 5, 70, 36, 2, 537, 536, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 555, 3, 2, 2, 2, 539, 543, 5, 18, 10, 2, 540, 542, 5, 20, 11, 2, 541, 540, 3, 2, 2, 2, 542, 545, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 547, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 546, 539, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 549, 7, 109, 2, 2, 549, 550, 7, 11, 2, 2, 550, 551, 5, 72, 37, 2, 551, 552, 7, 13, 2, 2, 552, 553, 5, 72, 37, 2, 553, 555, 3, 2, 2, 2, 554, 530, 3, 2, 2, 2, 554, 546, 3, 2, 2, 2, 555, 65, 3, 2, 2, 2, 556, 558, 5, 10, 6, 2, 557, 556, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 561, 3, 2, 2, 2, 559, 561, 5, 70, 36, 2, 560, 557, 3, 2, 2, 2, 560, 559, 3, 2, 2, 2, 561, 67, 3, 2, 2, 2, 562, 563, 5, 70, 36, 2, 563, 69, 3, 2, 2, 2, 564, 565, 8, 36, 1, 2, 565, 566, 5, 72, 37, 2, 566, 572, 3, 2, 2, 2, 567, 568, 12, 3, 2, 2, 568, 569, 7, 12, 2, 2, 569, 571, 5, 72, 37, 2, 570, 567, 3, 2, 2, 2, 571, 574, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 71, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 575, 576, 8, 37, 1, 2, 576, 577, 7, 8, 2, 2, 577, 578, 5, 70, 36, 2, 578, 579, 7, 9, 2, 2, 579, 641, 3, 2, 2, 2, 580, 581, 7, 73, 2, 2, 581, 584, 7, 8, 2, 2, 582, 585, 5, 72, 37, 2, 583, 585, 5, 24, 13, 2, 584, 582, 3, 2, 2, 2, 584, 583, 3, 2, 2, 2, 585, 586, 3, 2, 2, 2, 586, 587, 7, 9, 2, 2, 587, 641, 3, 2, 2, 2, 588, 589, 7, 74, 2, 2, 589, 592, 7, 8, 2, 2, 590, 593, 5, 72, 37, 2, 591, 593, 5, 24, 13, 2, 592, 590, 3, 2, 2, 2, 592, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 595, 7, 9, 2, 2, 595, 641, 3, 2, 2, 2, 596, 598, 7, 75, 2, 2, 597, 599, 7, 8, 2, 2, 598, 597, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 602, 7, 109, 2, 2, 601, 603, 7, 9, 2, 2, 602, 601, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 641, 3, 2, 2, 2, 604, 605, 7, 8, 2, 2, 605, 606, 5, 24, 13, 2, 606, 607, 7, 9, 2, 2, 607, 608, 5, 72, 37, 26, 608, 641, 3, 2, 2, 2, 609, 610, 9, 2, 2, 2, 610, 641, 5, 72, 37, 25, 611, 612, 7, 20, 2, 2, 612, 641, 5, 72, 37, 23, 613, 614, 9, 3, 2, 2, 614, 641, 5, 72, 37, 22, 615, 616, 9, 4, 2, 2, 616, 641, 5, 72, 37, 18, 617, 618, 7, 4, 2, 2, 618, 623, 5, 72, 37, 2, 619, 620, 7, 12, 2, 2, 620, 622, 5, 72, 37, 2, 621, 619, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 628, 7, 12, 2, 2, 627, 626, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 7, 5, 2, 2, 630, 641, 3, 2, 2, 2, 631, 641, 7, 109, 2, 2, 632, 641, 7, 100, 2, 2, 633, 635, 7, 110, 2, 2, 634, 633, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 636, 637, 3, 2, 2, 2, 637, 641, 3, 2, 2, 2, 638, 641, 7, 111, 2, 2, 639, 641, 7, 85, 2, 2, 640, 575, 3, 2, 2, 2, 640, 580, 3, 2, 2, 2, 640, 588, 3, 2, 2, 2, 640, 596, 3, 2, 2, 2, 640, 604, 3, 2, 2, 2, 640, 609, 3, 2, 2, 2, 640, 611, 3, 2, 2, 2, 640, 613, 3, 2, 2, 2, 640, 615, 3, 2, 2, 2, 640, 617, 3, 2, 2, 2, 640, 631, 3, 2, 2, 2, 640, 632, 3, 2, 2, 2, 640, 634, 3, 2, 2, 2, 640, 638, 3, 2, 2, 2, 640, 639, 3, 2, 2, 2, 641, 702, 3, 2, 2, 2, 642, 643, 12, 21, 2, 2, 643, 644, 9, 5, 2, 2, 644, 701, 5, 72, 37, 22, 645, 646, 12, 20, 2, 2, 646, 647, 9, 6, 2, 2, 647, 701, 5, 72, 37, 21, 648, 649, 12, 19, 2, 2, 649, 650, 9, 7, 2, 2, 650, 701, 5, 72, 37, 20, 651, 652, 12, 17, 2, 2, 652, 653, 9, 8, 2, 2, 653, 701, 5, 72, 37, 18, 654, 655, 12, 16, 2, 2, 655, 656, 7, 25, 2, 2, 656, 701, 5, 72, 37, 17, 657, 658, 12, 15, 2, 2, 658, 659, 7, 27, 2, 2, 659, 701, 5, 72, 37, 16, 660, 661, 12, 14, 2, 2, 661, 662, 7, 28, 2, 2, 662, 701, 5, 72, 37, 15, 663, 664, 12, 13, 2, 2, 664, 665, 7, 37, 2, 2, 665, 701, 5, 72, 37, 14, 666, 667, 12, 12, 2, 2, 667, 668, 7, 38, 2, 2, 668, 701, 5, 72, 37, 13, 669, 670, 12, 11, 2, 2, 670, 671, 7, 15, 2, 2, 671, 672, 5, 72, 37, 2, 672, 673, 7, 11, 2, 2, 673, 674, 5, 72, 37, 12, 674, 701, 3, 2, 2, 2, 675, 676, 12, 10, 2, 2, 676, 677, 7, 39, 2, 2, 677, 701, 5, 72, 37, 10, 678, 679, 12, 9, 2, 2, 679, 680, 7, 40, 2, 2, 680, 701, 5, 72, 37, 9, 681, 682, 12, 33, 2, 2, 682, 683, 7, 16, 2, 2, 683, 701, 7, 109, 2, 2, 684, 685, 12, 32, 2, 2, 685, 686, 7, 17, 2, 2, 686, 701, 7, 109, 2, 2, 687, 688, 12, 31, 2, 2, 688, 690, 7, 8, 2, 2, 689, 691, 5, 74, 38, 2, 690, 689, 3, 2, 2, 2, 690, 691, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 701, 7, 9, 2, 2, 693, 694, 12, 27, 2, 2, 694, 695, 7, 6, 2, 2, 695, 696, 5, 70, 36, 2, 696, 697, 7, 7, 2, 2, 697, 701, 3, 2, 2, 2, 698, 699, 12, 24, 2, 2, 699, 701, 9, 2, 2, 2, 700, 642, 3, 2, 2, 2, 700, 645, 3, 2, 2, 2, 700, 648, 3, 2, 2, 2, 700, 651, 3, 2, 2, 2, 700, 654, 3, 2, 2, 2, 700, 657, 3, 2, 2, 2, 700, 660, 3, 2, 2, 2, 700, 663, 3, 2, 2, 2, 700, 666, 3, 2, 2, 2, 700, 669, 3, 2, 2, 2, 700, 675, 3, 2, 2, 2, 700, 678, 3, 2, 2, 2, 700, 681, 3, 2, 2, 2, 700, 684, 3, 2, 2, 2, 700, 687, 3, 2, 2, 2, 700, 693, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 701, 704, 3, 2, 2, 2, 702, 700, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 73, 3, 2, 2, 2, 704, 702, 3, 2, 2, 2, 705, 710, 5, 72, 37, 2, 706, 707, 7, 12, 2, 2, 707, 709, 5, 72, 37, 2, 708, 706, 3, 2, 2, 2, 709, 712, 3, 2, 2, 2, 710, 708, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 75, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 713, 715, 7, 76, 2, 2, 714, 716, 5, 78, 40, 2, 715, 714, 3, 2, 2, 2, 715, 716, 3, 2, 2, 2, 716, 717, 3, 2, 2, 2, 717, 718, 7, 86, 2, 2, 718, 77, 3, 2, 2, 2, 719, 720, 7, 8, 2, 2, 720, 725, 5, 80, 41, 2, 721, 722, 7, 12, 2, 2, 722, 724, 5, 80, 41, 2, 723, 721, 3, 2, 2, 2, 724, 727, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 728, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 728, 729, 7, 9, 2, 2, 729, 79, 3, 2, 2, 2, 730, 731, 7, 77, 2, 2, 731, 741, 7, 110, 2, 2, 732, 733, 7, 78, 2, 2, 733, 741, 7, 109, 2, 2, 734, 735, 7, 79, 2, 2, 735, 741, 7, 110, 2, 2, 736, 737, 7, 80, 2, 2, 737, 741, 5, 72, 37, 2, 738, 739, 7, 81, 2, 2, 739, 741, 5, 72, 37, 2, 740, 730, 3, 2, 2, 2, 740, 732, 3, 2, 2, 2, 740, 734, 3, 2, 2, 2, 740, 736, 3, 2, 2, 2, 740, 738, 3, 2, 2, 2, 741, 81, 3, 2, 2, 2, 742, 744, 5, 84, 43, 2, 743, 742, 3, 2, 2, 2, 744, 747, 3, 2, 2, 2, 745, 743, 3, 2, 2, 2, 745, 746, 3, 2, 2, 2, 746, 83, 3, 2, 2, 2, 747, 745, 3, 2, 2, 2, 748, 752, 5, 86, 44, 2, 749, 752, 5, 88, 45, 2, 750, 752, 5, 90, 46, 2, 751, 748, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 750, 3, 2, 2, 2, 752, 85, 3, 2, 2, 2, 753, 754, 7, 147, 2, 2, 754, 758, 7, 118, 2, 2, 755, 757, 7, 148, 2, 2, 756, 755, 3, 2, 2, 2, 757, 760, 3, 2, 2, 2, 758, 756, 3, 2, 2, 2, 758, 759, 3, 2, 2, 2, 759, 770, 3, 2, 2, 2, 760, 758, 3, 2, 2, 2, 761, 762, 7, 146, 2, 2, 762, 766, 7, 118, 2, 2, 763, 765, 7, 148, 2, 2, 764, 763, 3, 2, 2, 2, 765, 768, 3, 2, 2, 2, 766, 764, 3, 2, 2, 2, 766, 767, 3, 2, 2, 2, 767, 770, 3, 2, 2, 2, 768, 766, 3, 2, 2, 2, 769, 753, 3, 2, 2, 2, 769, 761, 3, 2, 2, 2, 770, 87, 3, 2, 2, 2, 771, 773, 7, 116, 2, 2, 772, 774, 5, 92, 47, 2, 773, 772, 3, 2, 2, 2, 773, 774, 3, 2, 2, 2, 774, 778, 3, 2, 2, 2, 775, 777, 7, 148, 2, 2, 776, 775, 3, 2, 2, 2, 777, 780, 3, 2, 2, 2, 778, 776, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 89, 3, 2, 2, 2, 780, 778, 3, 2, 2, 2, 781, 782, 7, 115, 2, 2, 782, 787, 5, 94, 48, 2, 783, 784, 7, 119, 2, 2, 784, 786, 5, 94, 48, 2, 785, 783, 3, 2, 2, 2, 786, 789, 3, 2, 2, 2, 787, 785, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 788, 793, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 790, 792, 7, 148, 2, 2, 791, 790, 3, 2, 2, 2, 792, 795, 3, 2, 2, 2, 793, 791, 3, 2, 2, 2, 793, 794, 3, 2, 2, 2, 794, 91, 3, 2, 2, 2, 795, 793, 3, 2, 2, 2, 796, 842, 5, 94, 48, 2, 797, 798, 7, 117, 2, 2, 798, 842, 5, 94, 48, 2, 799, 800, 5, 94, 48, 2, 800, 801, 7, 119, 2, 2, 801, 802, 5, 94, 48, 2, 802, 842, 3, 2, 2, 2, 803, 804, 7, 120, 2, 2, 804, 805, 5, 94, 48, 2, 805, 806, 7, 121, 2, 2, 806, 807, 7, 119, 2, 2, 807, 808, 7, 147, 2, 2, 808, 842, 3, 2, 2, 2, 809, 810, 7, 120, 2, 2, 810, 811, 7, 120, 2, 2, 811, 812, 5, 94, 48, 2, 812, 813, 7, 121, 2, 2, 813, 814, 7, 121, 2, 2, 814, 815, 7, 119, 2, 2, 815, 816, 7, 147, 2, 2, 816, 842, 3, 2, 2, 2, 817, 818, 7, 120, 2, 2, 818, 819, 5, 94, 48, 2, 819, 820, 7, 119, 2, 2, 820, 821, 7, 147, 2, 2, 821, 822, 7, 121, 2, 2, 822, 823, 7, 119, 2, 2, 823, 824, 7, 147, 2, 2, 824, 842, 3, 2, 2, 2, 825, 826, 7, 120, 2, 2, 826, 827, 5, 94, 48, 2, 827, 828, 7, 119, 2, 2, 828, 829, 7, 147, 2, 2, 829, 830, 7, 121, 2, 2, 830, 842, 3, 2, 2, 2, 831, 832, 7, 120, 2, 2, 832, 833, 5, 94, 48, 2, 833, 834, 7, 121, 2, 2, 834, 842, 3, 2, 2, 2, 835, 836, 7, 120, 2, 2, 836, 837, 7, 120, 2, 2, 837, 838, 5, 94, 48, 2, 838, 839, 7, 121, 2, 2, 839, 840, 7, 121, 2, 2, 840, 842, 3, 2, 2, 2, 841, 796, 3, 2, 2, 2, 841, 797, 3, 2, 2, 2, 841, 799, 3, 2, 2, 2, 841, 803, 3, 2, 2, 2, 841, 809, 3, 2, 2, 2, 841, 817, 3, 2, 2, 2, 841, 825, 3, 2, 2, 2, 841, 831, 3, 2, 2, 2, 841, 835, 3, 2, 2, 2, 842, 93, 3, 2, 2, 2, 843, 844, 8, 48, 1, 2, 844, 845, 7, 122, 2, 2, 845, 846, 5, 94, 48, 2, 846, 847, 7, 123, 2, 2, 847, 858, 3, 2, 2, 2, 848, 849, 9, 9, 2, 2, 849, 858, 5, 94, 48, 10, 850, 858, 7, 147, 2, 2, 851, 858, 7, 145, 2, 2, 852, 853, 7, 133, 2, 2, 853, 854, 7, 147, 2, 2, 854, 858, 7, 134, 2, 2, 855, 858, 7, 135, 2, 2, 856, 858, 7, 144, 2, 2, 857, 843, 3, 2, 2, 2, 857, 848, 3, 2, 2, 2, 857, 850, 3, 2, 2, 2, 857, 851, 3, 2, 2, 2, 857, 852, 3, 2, 2, 2, 857, 855, 3, 2, 2, 2, 857, 856, 3, 2, 2, 2, 858, 873, 3, 2, 2, 2, 859, 860, 12, 12, 2, 2, 860, 861, 7, 124, 2, 2, 861, 872, 5, 94, 48, 13, 862, 863, 12, 11, 2, 2, 863, 864, 9, 10, 2, 2, 864, 872, 5, 94, 48, 12, 865, 866, 12, 9, 2, 2, 866, 867, 9, 11, 2, 2, 867, 872, 5, 94, 48, 10, 868, 869, 12, 8, 2, 2, 869, 870, 9, 12, 2, 2, 870, 872, 5, 94, 48, 9, 871, 859, 3, 2, 2, 2, 871, 862, 3, 2, 2, 2, 871, 865, 3, 2, 2, 2, 871, 868, 3, 2, 2, 2, 872, 875, 3, 2, 2, 2, 873, 871, 3, 2, 2, 2, 873, 874, 3, 2, 2, 2, 874, 95, 3, 2, 2, 2, 875, 873, 3, 2, 2, 2, 92, 105, 122, 131, 141, 147, 155, 162, 171, 176, 182, 187, 192, 199, 206, 211, 223, 226, 228, 239, 246, 251, 257, 259, 267, 273, 285, 299, 305, 311, 317, 322, 326, 335, 342, 349, 359, 371, 382, 403, 412, 418, 423, 430, 443, 448, 460, 474, 493, 502, 510, 515, 520, 522, 528, 533, 537, 543, 546, 554, 557, 560, 572, 584, 592, 598, 602, 623, 627, 636, 640, 690, 700, 702, 710, 715, 725, 740, 745, 751, 758, 766, 769, 773, 778, 787, 793, 841, 857, 871, 873]
\ No newline at end of file
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
index 38017962c..8a7687385 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
@@ -6119,7 +6119,10 @@ public class KickCParser extends Parser {
public static class AsmLabelNameContext extends AsmLabelContext {
public TerminalNode ASM_NAME() { return getToken(KickCParser.ASM_NAME, 0); }
public TerminalNode ASM_COLON() { return getToken(KickCParser.ASM_COLON, 0); }
- public TerminalNode ASM_TAG() { return getToken(KickCParser.ASM_TAG, 0); }
+ public List ASM_TAG() { return getTokens(KickCParser.ASM_TAG); }
+ public TerminalNode ASM_TAG(int i) {
+ return getToken(KickCParser.ASM_TAG, i);
+ }
public AsmLabelNameContext(AsmLabelContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
@@ -6138,7 +6141,10 @@ public class KickCParser extends Parser {
public static class AsmLabelMultiContext extends AsmLabelContext {
public TerminalNode ASM_MULTI_NAME() { return getToken(KickCParser.ASM_MULTI_NAME, 0); }
public TerminalNode ASM_COLON() { return getToken(KickCParser.ASM_COLON, 0); }
- public TerminalNode ASM_TAG() { return getToken(KickCParser.ASM_TAG, 0); }
+ public List ASM_TAG() { return getTokens(KickCParser.ASM_TAG); }
+ public TerminalNode ASM_TAG(int i) {
+ return getToken(KickCParser.ASM_TAG, i);
+ }
public AsmLabelMultiContext(AsmLabelContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
@@ -6160,7 +6166,7 @@ public class KickCParser extends Parser {
enterRule(_localctx, 84, RULE_asmLabel);
int _la;
try {
- setState(761);
+ setState(767);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASM_NAME:
@@ -6171,36 +6177,44 @@ public class KickCParser extends Parser {
match(ASM_NAME);
setState(752);
match(ASM_COLON);
- setState(754);
+ setState(756);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==ASM_TAG) {
+ while (_la==ASM_TAG) {
+ {
{
setState(753);
match(ASM_TAG);
}
+ }
+ setState(758);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
}
-
}
break;
case ASM_MULTI_NAME:
_localctx = new AsmLabelMultiContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(756);
- match(ASM_MULTI_NAME);
- setState(757);
- match(ASM_COLON);
setState(759);
+ match(ASM_MULTI_NAME);
+ setState(760);
+ match(ASM_COLON);
+ setState(764);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==ASM_TAG) {
+ while (_la==ASM_TAG) {
{
- setState(758);
+ {
+ setState(761);
match(ASM_TAG);
}
+ }
+ setState(766);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
}
-
}
break;
default:
@@ -6223,7 +6237,10 @@ public class KickCParser extends Parser {
public AsmParamModeContext asmParamMode() {
return getRuleContext(AsmParamModeContext.class,0);
}
- public TerminalNode ASM_TAG() { return getToken(KickCParser.ASM_TAG, 0); }
+ public List ASM_TAG() { return getTokens(KickCParser.ASM_TAG); }
+ public TerminalNode ASM_TAG(int i) {
+ return getToken(KickCParser.ASM_TAG, i);
+ }
public AsmInstructionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -6250,28 +6267,32 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(763);
+ setState(769);
match(ASM_MNEMONIC);
- setState(765);
+ setState(771);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) {
case 1:
{
- setState(764);
+ setState(770);
asmParamMode();
}
break;
}
- setState(768);
+ setState(776);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==ASM_TAG) {
+ while (_la==ASM_TAG) {
{
- setState(767);
+ {
+ setState(773);
match(ASM_TAG);
}
+ }
+ setState(778);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
}
-
}
}
catch (RecognitionException re) {
@@ -6297,7 +6318,10 @@ public class KickCParser extends Parser {
public TerminalNode ASM_COMMA(int i) {
return getToken(KickCParser.ASM_COMMA, i);
}
- public TerminalNode ASM_TAG() { return getToken(KickCParser.ASM_TAG, 0); }
+ public List ASM_TAG() { return getTokens(KickCParser.ASM_TAG); }
+ public TerminalNode ASM_TAG(int i) {
+ return getToken(KickCParser.ASM_TAG, i);
+ }
public AsmBytesContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -6324,36 +6348,40 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(770);
+ setState(779);
match(ASM_BYTE);
- setState(771);
+ setState(780);
asmExpr(0);
- setState(776);
+ setState(785);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==ASM_COMMA) {
{
{
- setState(772);
+ setState(781);
match(ASM_COMMA);
- setState(773);
+ setState(782);
asmExpr(0);
}
}
- setState(778);
+ setState(787);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(780);
+ setState(791);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==ASM_TAG) {
+ while (_la==ASM_TAG) {
{
- setState(779);
+ {
+ setState(788);
match(ASM_TAG);
}
+ }
+ setState(793);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
}
-
}
}
catch (RecognitionException re) {
@@ -6597,14 +6625,14 @@ public class KickCParser extends Parser {
AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState());
enterRule(_localctx, 90, RULE_asmParamMode);
try {
- setState(827);
+ setState(839);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
case 1:
_localctx = new AsmModeAbsContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(782);
+ setState(794);
asmExpr(0);
}
break;
@@ -6612,9 +6640,9 @@ public class KickCParser extends Parser {
_localctx = new AsmModeImmContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(783);
+ setState(795);
match(ASM_IMM);
- setState(784);
+ setState(796);
asmExpr(0);
}
break;
@@ -6622,11 +6650,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeAbsXYContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(785);
+ setState(797);
asmExpr(0);
- setState(786);
+ setState(798);
match(ASM_COMMA);
- setState(787);
+ setState(799);
asmExpr(0);
}
break;
@@ -6634,15 +6662,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndIdxXYContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(789);
+ setState(801);
match(ASM_PAR_BEGIN);
- setState(790);
+ setState(802);
asmExpr(0);
- setState(791);
+ setState(803);
match(ASM_PAR_END);
- setState(792);
+ setState(804);
match(ASM_COMMA);
- setState(793);
+ setState(805);
match(ASM_NAME);
}
break;
@@ -6650,19 +6678,19 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndLongIdxXYContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(795);
+ setState(807);
match(ASM_PAR_BEGIN);
- setState(796);
+ setState(808);
match(ASM_PAR_BEGIN);
- setState(797);
+ setState(809);
asmExpr(0);
- setState(798);
+ setState(810);
match(ASM_PAR_END);
- setState(799);
+ setState(811);
match(ASM_PAR_END);
- setState(800);
+ setState(812);
match(ASM_COMMA);
- setState(801);
+ setState(813);
match(ASM_NAME);
}
break;
@@ -6670,19 +6698,19 @@ public class KickCParser extends Parser {
_localctx = new AsmModeSPIndIdxContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(803);
+ setState(815);
match(ASM_PAR_BEGIN);
- setState(804);
+ setState(816);
asmExpr(0);
- setState(805);
+ setState(817);
match(ASM_COMMA);
- setState(806);
+ setState(818);
match(ASM_NAME);
- setState(807);
+ setState(819);
match(ASM_PAR_END);
- setState(808);
+ setState(820);
match(ASM_COMMA);
- setState(809);
+ setState(821);
match(ASM_NAME);
}
break;
@@ -6690,15 +6718,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIdxIndXYContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(811);
+ setState(823);
match(ASM_PAR_BEGIN);
- setState(812);
+ setState(824);
asmExpr(0);
- setState(813);
+ setState(825);
match(ASM_COMMA);
- setState(814);
+ setState(826);
match(ASM_NAME);
- setState(815);
+ setState(827);
match(ASM_PAR_END);
}
break;
@@ -6706,11 +6734,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(817);
+ setState(829);
match(ASM_PAR_BEGIN);
- setState(818);
+ setState(830);
asmExpr(0);
- setState(819);
+ setState(831);
match(ASM_PAR_END);
}
break;
@@ -6718,15 +6746,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndLongContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(821);
+ setState(833);
match(ASM_PAR_BEGIN);
- setState(822);
+ setState(834);
match(ASM_PAR_BEGIN);
- setState(823);
+ setState(835);
asmExpr(0);
- setState(824);
+ setState(836);
match(ASM_PAR_END);
- setState(825);
+ setState(837);
match(ASM_PAR_END);
}
break;
@@ -6931,7 +6959,7 @@ public class KickCParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(843);
+ setState(855);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASM_BRACKET_BEGIN:
@@ -6940,11 +6968,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(830);
+ setState(842);
match(ASM_BRACKET_BEGIN);
- setState(831);
+ setState(843);
asmExpr(0);
- setState(832);
+ setState(844);
match(ASM_BRACKET_END);
}
break;
@@ -6956,7 +6984,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(834);
+ setState(846);
_la = _input.LA(1);
if ( !(((((_la - 125)) & ~0x3f) == 0 && ((1L << (_la - 125)) & ((1L << (ASM_PLUS - 125)) | (1L << (ASM_MINUS - 125)) | (1L << (ASM_LESS_THAN - 125)) | (1L << (ASM_GREATER_THAN - 125)))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -6966,7 +6994,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(835);
+ setState(847);
asmExpr(8);
}
break;
@@ -6975,7 +7003,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(836);
+ setState(848);
match(ASM_NAME);
}
break;
@@ -6984,7 +7012,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelRelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(837);
+ setState(849);
match(ASM_MULTI_REL);
}
break;
@@ -6993,11 +7021,11 @@ public class KickCParser extends Parser {
_localctx = new AsmExprReplaceContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(838);
+ setState(850);
match(ASM_CURLY_BEGIN);
- setState(839);
+ setState(851);
match(ASM_NAME);
- setState(840);
+ setState(852);
match(ASM_CURLY_END);
}
break;
@@ -7006,7 +7034,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprIntContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(841);
+ setState(853);
match(ASM_NUMBER);
}
break;
@@ -7015,7 +7043,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(842);
+ setState(854);
match(ASM_CHAR);
}
break;
@@ -7023,7 +7051,7 @@ public class KickCParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(859);
+ setState(871);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,89,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -7031,20 +7059,20 @@ public class KickCParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(857);
+ setState(869);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
case 1:
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(845);
+ setState(857);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
{
- setState(846);
+ setState(858);
match(ASM_DOT);
}
- setState(847);
+ setState(859);
asmExpr(11);
}
break;
@@ -7052,9 +7080,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(848);
+ setState(860);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(849);
+ setState(861);
_la = _input.LA(1);
if ( !(_la==ASM_SHIFT_LEFT || _la==ASM_SHIFT_RIGHT) ) {
_errHandler.recoverInline(this);
@@ -7064,7 +7092,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(850);
+ setState(862);
asmExpr(10);
}
break;
@@ -7072,9 +7100,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(851);
+ setState(863);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(852);
+ setState(864);
_la = _input.LA(1);
if ( !(_la==ASM_MULTIPLY || _la==ASM_DIVIDE) ) {
_errHandler.recoverInline(this);
@@ -7084,7 +7112,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(853);
+ setState(865);
asmExpr(8);
}
break;
@@ -7092,9 +7120,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(854);
+ setState(866);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(855);
+ setState(867);
_la = _input.LA(1);
if ( !(_la==ASM_PLUS || _la==ASM_MINUS) ) {
_errHandler.recoverInline(this);
@@ -7104,14 +7132,14 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(856);
+ setState(868);
asmExpr(7);
}
break;
}
}
}
- setState(861);
+ setState(873);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,89,_ctx);
}
@@ -7240,7 +7268,7 @@ public class KickCParser extends Parser {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u009c\u0361\4\2\t"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u009c\u036d\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -7295,61 +7323,62 @@ public class KickCParser extends Parser {
"\u02bd\n%\f%\16%\u02c0\13%\3&\3&\3&\7&\u02c5\n&\f&\16&\u02c8\13&\3\'\3"+
"\'\5\'\u02cc\n\'\3\'\3\'\3(\3(\3(\3(\7(\u02d4\n(\f(\16(\u02d7\13(\3(\3"+
"(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\5)\u02e5\n)\3*\7*\u02e8\n*\f*\16*\u02eb"+
- "\13*\3+\3+\3+\5+\u02f0\n+\3,\3,\3,\5,\u02f5\n,\3,\3,\3,\5,\u02fa\n,\5"+
- ",\u02fc\n,\3-\3-\5-\u0300\n-\3-\5-\u0303\n-\3.\3.\3.\3.\7.\u0309\n.\f"+
- ".\16.\u030c\13.\3.\5.\u030f\n.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/"+
- "\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/"+
- "\3/\3/\3/\3/\3/\3/\3/\3/\3/\5/\u033e\n/\3\60\3\60\3\60\3\60\3\60\3\60"+
- "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u034e\n\60\3\60\3\60\3\60"+
- "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\7\60\u035c\n\60\f\60\16"+
- "\60\u035f\13\60\3\60\2\t\f\30\32&FH^\61\2\4\6\b\n\f\16\20\22\24\26\30"+
- "\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^\2\r\3\2\27\30\5\2"+
- "\22\23\31\32RR\4\2!!$$\3\2\35\36\3\2\24\26\3\2\22\23\3\2\37$\3\2\177\u0082"+
- "\3\2}~\3\2\u0083\u0084\3\2\177\u0080\2\u03e2\2`\3\2\2\2\4c\3\2\2\2\6i"+
- "\3\2\2\2\bz\3\2\2\2\n|\3\2\2\2\f\177\3\2\2\2\16\u0096\3\2\2\2\20\u00bb"+
- "\3\2\2\2\22\u00c0\3\2\2\2\24\u00ca\3\2\2\2\26\u00d1\3\2\2\2\30\u00d7\3"+
- "\2\2\2\32\u00f6\3\2\2\2\34\u0106\3\2\2\2\36\u0109\3\2\2\2 \u0115\3\2\2"+
- "\2\"\u0118\3\2\2\2$\u011b\3\2\2\2&\u0123\3\2\2\2(\u012e\3\2\2\2*\u0133"+
- "\3\2\2\2,\u0144\3\2\2\2.\u014a\3\2\2\2\60\u015d\3\2\2\2\62\u015f\3\2\2"+
- "\2\64\u0173\3\2\2\2\66\u01a2\3\2\2\28\u01a5\3\2\2\2:\u01fe\3\2\2\2<\u0201"+
- "\3\2\2\2>\u020c\3\2\2\2@\u022a\3\2\2\2B\u0230\3\2\2\2D\u0232\3\2\2\2F"+
- "\u0234\3\2\2\2H\u0280\3\2\2\2J\u02c1\3\2\2\2L\u02c9\3\2\2\2N\u02cf\3\2"+
- "\2\2P\u02e4\3\2\2\2R\u02e9\3\2\2\2T\u02ef\3\2\2\2V\u02fb\3\2\2\2X\u02fd"+
- "\3\2\2\2Z\u0304\3\2\2\2\\\u033d\3\2\2\2^\u034d\3\2\2\2`a\5\6\4\2ab\7\2"+
- "\2\3b\3\3\2\2\2cd\5R*\2de\7\2\2\3e\5\3\2\2\2fh\5\b\5\2gf\3\2\2\2hk\3\2"+
- "\2\2ig\3\2\2\2ij\3\2\2\2j\7\3\2\2\2ki\3\2\2\2lm\5\n\6\2mn\7\n\2\2n{\3"+
- "\2\2\2op\5\36\20\2pq\7\n\2\2q{\3\2\2\2rs\5$\23\2st\7\n\2\2t{\3\2\2\2u"+
- "{\5*\26\2v{\5\62\32\2wx\5\16\b\2xy\7\n\2\2y{\3\2\2\2zl\3\2\2\2zo\3\2\2"+
- "\2zr\3\2\2\2zu\3\2\2\2zv\3\2\2\2zw\3\2\2\2{\t\3\2\2\2|}\5\22\n\2}~\5\f"+
- "\7\2~\13\3\2\2\2\177\u0083\b\7\1\2\u0080\u0082\5\24\13\2\u0081\u0080\3"+
- "\2\2\2\u0082\u0085\3\2\2\2\u0083\u0081\3\2\2\2\u0083\u0084\3\2\2\2\u0084"+
- "\u0086\3\2\2\2\u0085\u0083\3\2\2\2\u0086\u0087\5\20\t\2\u0087\u0093\3"+
- "\2\2\2\u0088\u0089\f\3\2\2\u0089\u008d\7\f\2\2\u008a\u008c\5\24\13\2\u008b"+
- "\u008a\3\2\2\2\u008c\u008f\3\2\2\2\u008d\u008b\3\2\2\2\u008d\u008e\3\2"+
- "\2\2\u008e\u0090\3\2\2\2\u008f\u008d\3\2\2\2\u0090\u0092\5\20\t\2\u0091"+
- "\u0088\3\2\2\2\u0092\u0095\3\2\2\2\u0093\u0091\3\2\2\2\u0093\u0094\3\2"+
- "\2\2\u0094\r\3\2\2\2\u0095\u0093\3\2\2\2\u0096\u0097\7)\2\2\u0097\u009b"+
- "\5\22\n\2\u0098\u009a\5\24\13\2\u0099\u0098\3\2\2\2\u009a\u009d\3\2\2"+
- "\2\u009b\u0099\3\2\2\2\u009b\u009c\3\2\2\2\u009c\u009e\3\2\2\2\u009d\u009b"+
- "\3\2\2\2\u009e\u00a2\7m\2\2\u009f\u00a1\5\26\f\2\u00a0\u009f\3\2\2\2\u00a1"+
- "\u00a4\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a5\3\2"+
- "\2\2\u00a4\u00a2\3\2\2\2\u00a5\u00a6\b\b\1\2\u00a6\17\3\2\2\2\u00a7\u00ab"+
- "\7m\2\2\u00a8\u00aa\5\26\f\2\u00a9\u00a8\3\2\2\2\u00aa\u00ad\3\2\2\2\u00ab"+
- "\u00a9\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00b0\3\2\2\2\u00ad\u00ab\3\2"+
- "\2\2\u00ae\u00af\7\'\2\2\u00af\u00b1\5H%\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1"+
- "\3\2\2\2\u00b1\u00bc\3\2\2\2\u00b2\u00b6\7m\2\2\u00b3\u00b5\5\26\f\2\u00b4"+
- "\u00b3\3\2\2\2\u00b5\u00b8\3\2\2\2\u00b6\u00b4\3\2\2\2\u00b6\u00b7\3\2"+
- "\2\2\u00b7\u00b9\3\2\2\2\u00b8\u00b6\3\2\2\2\u00b9\u00ba\7\'\2\2\u00ba"+
- "\u00bc\5L\'\2\u00bb\u00a7\3\2\2\2\u00bb\u00b2\3\2\2\2\u00bc\21\3\2\2\2"+
- "\u00bd\u00bf\5\66\34\2\u00be\u00bd\3\2\2\2\u00bf\u00c2\3\2\2\2\u00c0\u00be"+
- "\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c3\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c3"+
- "\u00c7\5\32\16\2\u00c4\u00c6\5\66\34\2\u00c5\u00c4\3\2\2\2\u00c6\u00c9"+
- "\3\2\2\2\u00c7\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\23\3\2\2\2\u00c9"+
- "\u00c7\3\2\2\2\u00ca\u00ce\7\24\2\2\u00cb\u00cd\5\66\34\2\u00cc\u00cb"+
- "\3\2\2\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf"+
- "\25\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1\u00d3\7\6\2\2\u00d2\u00d4\5H%\2"+
- "\u00d3\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00d6"+
- "\7\7\2\2\u00d6\27\3\2\2\2\u00d7\u00d8\b\r\1\2\u00d8\u00d9\5\32\16\2\u00d9"+
+ "\13*\3+\3+\3+\5+\u02f0\n+\3,\3,\3,\7,\u02f5\n,\f,\16,\u02f8\13,\3,\3,"+
+ "\3,\7,\u02fd\n,\f,\16,\u0300\13,\5,\u0302\n,\3-\3-\5-\u0306\n-\3-\7-\u0309"+
+ "\n-\f-\16-\u030c\13-\3.\3.\3.\3.\7.\u0312\n.\f.\16.\u0315\13.\3.\7.\u0318"+
+ "\n.\f.\16.\u031b\13.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3"+
+ "/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3"+
+ "/\3/\3/\3/\3/\3/\5/\u034a\n/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3"+
+ "\60\3\60\3\60\3\60\3\60\3\60\5\60\u035a\n\60\3\60\3\60\3\60\3\60\3\60"+
+ "\3\60\3\60\3\60\3\60\3\60\3\60\3\60\7\60\u0368\n\60\f\60\16\60\u036b\13"+
+ "\60\3\60\2\t\f\30\32&FH^\61\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \""+
+ "$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^\2\r\3\2\27\30\5\2\22\23\31\32"+
+ "RR\4\2!!$$\3\2\35\36\3\2\24\26\3\2\22\23\3\2\37$\3\2\177\u0082\3\2}~\3"+
+ "\2\u0083\u0084\3\2\177\u0080\2\u03ee\2`\3\2\2\2\4c\3\2\2\2\6i\3\2\2\2"+
+ "\bz\3\2\2\2\n|\3\2\2\2\f\177\3\2\2\2\16\u0096\3\2\2\2\20\u00bb\3\2\2\2"+
+ "\22\u00c0\3\2\2\2\24\u00ca\3\2\2\2\26\u00d1\3\2\2\2\30\u00d7\3\2\2\2\32"+
+ "\u00f6\3\2\2\2\34\u0106\3\2\2\2\36\u0109\3\2\2\2 \u0115\3\2\2\2\"\u0118"+
+ "\3\2\2\2$\u011b\3\2\2\2&\u0123\3\2\2\2(\u012e\3\2\2\2*\u0133\3\2\2\2,"+
+ "\u0144\3\2\2\2.\u014a\3\2\2\2\60\u015d\3\2\2\2\62\u015f\3\2\2\2\64\u0173"+
+ "\3\2\2\2\66\u01a2\3\2\2\28\u01a5\3\2\2\2:\u01fe\3\2\2\2<\u0201\3\2\2\2"+
+ ">\u020c\3\2\2\2@\u022a\3\2\2\2B\u0230\3\2\2\2D\u0232\3\2\2\2F\u0234\3"+
+ "\2\2\2H\u0280\3\2\2\2J\u02c1\3\2\2\2L\u02c9\3\2\2\2N\u02cf\3\2\2\2P\u02e4"+
+ "\3\2\2\2R\u02e9\3\2\2\2T\u02ef\3\2\2\2V\u0301\3\2\2\2X\u0303\3\2\2\2Z"+
+ "\u030d\3\2\2\2\\\u0349\3\2\2\2^\u0359\3\2\2\2`a\5\6\4\2ab\7\2\2\3b\3\3"+
+ "\2\2\2cd\5R*\2de\7\2\2\3e\5\3\2\2\2fh\5\b\5\2gf\3\2\2\2hk\3\2\2\2ig\3"+
+ "\2\2\2ij\3\2\2\2j\7\3\2\2\2ki\3\2\2\2lm\5\n\6\2mn\7\n\2\2n{\3\2\2\2op"+
+ "\5\36\20\2pq\7\n\2\2q{\3\2\2\2rs\5$\23\2st\7\n\2\2t{\3\2\2\2u{\5*\26\2"+
+ "v{\5\62\32\2wx\5\16\b\2xy\7\n\2\2y{\3\2\2\2zl\3\2\2\2zo\3\2\2\2zr\3\2"+
+ "\2\2zu\3\2\2\2zv\3\2\2\2zw\3\2\2\2{\t\3\2\2\2|}\5\22\n\2}~\5\f\7\2~\13"+
+ "\3\2\2\2\177\u0083\b\7\1\2\u0080\u0082\5\24\13\2\u0081\u0080\3\2\2\2\u0082"+
+ "\u0085\3\2\2\2\u0083\u0081\3\2\2\2\u0083\u0084\3\2\2\2\u0084\u0086\3\2"+
+ "\2\2\u0085\u0083\3\2\2\2\u0086\u0087\5\20\t\2\u0087\u0093\3\2\2\2\u0088"+
+ "\u0089\f\3\2\2\u0089\u008d\7\f\2\2\u008a\u008c\5\24\13\2\u008b\u008a\3"+
+ "\2\2\2\u008c\u008f\3\2\2\2\u008d\u008b\3\2\2\2\u008d\u008e\3\2\2\2\u008e"+
+ "\u0090\3\2\2\2\u008f\u008d\3\2\2\2\u0090\u0092\5\20\t\2\u0091\u0088\3"+
+ "\2\2\2\u0092\u0095\3\2\2\2\u0093\u0091\3\2\2\2\u0093\u0094\3\2\2\2\u0094"+
+ "\r\3\2\2\2\u0095\u0093\3\2\2\2\u0096\u0097\7)\2\2\u0097\u009b\5\22\n\2"+
+ "\u0098\u009a\5\24\13\2\u0099\u0098\3\2\2\2\u009a\u009d\3\2\2\2\u009b\u0099"+
+ "\3\2\2\2\u009b\u009c\3\2\2\2\u009c\u009e\3\2\2\2\u009d\u009b\3\2\2\2\u009e"+
+ "\u00a2\7m\2\2\u009f\u00a1\5\26\f\2\u00a0\u009f\3\2\2\2\u00a1\u00a4\3\2"+
+ "\2\2\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a5\3\2\2\2\u00a4"+
+ "\u00a2\3\2\2\2\u00a5\u00a6\b\b\1\2\u00a6\17\3\2\2\2\u00a7\u00ab\7m\2\2"+
+ "\u00a8\u00aa\5\26\f\2\u00a9\u00a8\3\2\2\2\u00aa\u00ad\3\2\2\2\u00ab\u00a9"+
+ "\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00b0\3\2\2\2\u00ad\u00ab\3\2\2\2\u00ae"+
+ "\u00af\7\'\2\2\u00af\u00b1\5H%\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2\2"+
+ "\2\u00b1\u00bc\3\2\2\2\u00b2\u00b6\7m\2\2\u00b3\u00b5\5\26\f\2\u00b4\u00b3"+
+ "\3\2\2\2\u00b5\u00b8\3\2\2\2\u00b6\u00b4\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7"+
+ "\u00b9\3\2\2\2\u00b8\u00b6\3\2\2\2\u00b9\u00ba\7\'\2\2\u00ba\u00bc\5L"+
+ "\'\2\u00bb\u00a7\3\2\2\2\u00bb\u00b2\3\2\2\2\u00bc\21\3\2\2\2\u00bd\u00bf"+
+ "\5\66\34\2\u00be\u00bd\3\2\2\2\u00bf\u00c2\3\2\2\2\u00c0\u00be\3\2\2\2"+
+ "\u00c0\u00c1\3\2\2\2\u00c1\u00c3\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c3\u00c7"+
+ "\5\32\16\2\u00c4\u00c6\5\66\34\2\u00c5\u00c4\3\2\2\2\u00c6\u00c9\3\2\2"+
+ "\2\u00c7\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\23\3\2\2\2\u00c9\u00c7"+
+ "\3\2\2\2\u00ca\u00ce\7\24\2\2\u00cb\u00cd\5\66\34\2\u00cc\u00cb\3\2\2"+
+ "\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf\25"+
+ "\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1\u00d3\7\6\2\2\u00d2\u00d4\5H%\2\u00d3"+
+ "\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00d6\7\7"+
+ "\2\2\u00d6\27\3\2\2\2\u00d7\u00d8\b\r\1\2\u00d8\u00d9\5\32\16\2\u00d9"+
"\u00e4\3\2\2\2\u00da\u00db\f\4\2\2\u00db\u00e3\7\24\2\2\u00dc\u00dd\f"+
"\3\2\2\u00dd\u00df\7\6\2\2\u00de\u00e0\5H%\2\u00df\u00de\3\2\2\2\u00df"+
"\u00e0\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1\u00e3\7\7\2\2\u00e2\u00da\3\2"+
@@ -7535,52 +7564,56 @@ public class KickCParser extends Parser {
"\u02eb\3\2\2\2\u02e9\u02e7\3\2\2\2\u02e9\u02ea\3\2\2\2\u02eaS\3\2\2\2"+
"\u02eb\u02e9\3\2\2\2\u02ec\u02f0\5V,\2\u02ed\u02f0\5X-\2\u02ee\u02f0\5"+
"Z.\2\u02ef\u02ec\3\2\2\2\u02ef\u02ed\3\2\2\2\u02ef\u02ee\3\2\2\2\u02f0"+
- "U\3\2\2\2\u02f1\u02f2\7\u0093\2\2\u02f2\u02f4\7v\2\2\u02f3\u02f5\7\u0094"+
- "\2\2\u02f4\u02f3\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u02fc\3\2\2\2\u02f6"+
- "\u02f7\7\u0092\2\2\u02f7\u02f9\7v\2\2\u02f8\u02fa\7\u0094\2\2\u02f9\u02f8"+
- "\3\2\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02fc\3\2\2\2\u02fb\u02f1\3\2\2\2\u02fb"+
- "\u02f6\3\2\2\2\u02fcW\3\2\2\2\u02fd\u02ff\7t\2\2\u02fe\u0300\5\\/\2\u02ff"+
- "\u02fe\3\2\2\2\u02ff\u0300\3\2\2\2\u0300\u0302\3\2\2\2\u0301\u0303\7\u0094"+
- "\2\2\u0302\u0301\3\2\2\2\u0302\u0303\3\2\2\2\u0303Y\3\2\2\2\u0304\u0305"+
- "\7s\2\2\u0305\u030a\5^\60\2\u0306\u0307\7w\2\2\u0307\u0309\5^\60\2\u0308"+
- "\u0306\3\2\2\2\u0309\u030c\3\2\2\2\u030a\u0308\3\2\2\2\u030a\u030b\3\2"+
- "\2\2\u030b\u030e\3\2\2\2\u030c\u030a\3\2\2\2\u030d\u030f\7\u0094\2\2\u030e"+
- "\u030d\3\2\2\2\u030e\u030f\3\2\2\2\u030f[\3\2\2\2\u0310\u033e\5^\60\2"+
- "\u0311\u0312\7u\2\2\u0312\u033e\5^\60\2\u0313\u0314\5^\60\2\u0314\u0315"+
- "\7w\2\2\u0315\u0316\5^\60\2\u0316\u033e\3\2\2\2\u0317\u0318\7x\2\2\u0318"+
- "\u0319\5^\60\2\u0319\u031a\7y\2\2\u031a\u031b\7w\2\2\u031b\u031c\7\u0093"+
- "\2\2\u031c\u033e\3\2\2\2\u031d\u031e\7x\2\2\u031e\u031f\7x\2\2\u031f\u0320"+
- "\5^\60\2\u0320\u0321\7y\2\2\u0321\u0322\7y\2\2\u0322\u0323\7w\2\2\u0323"+
- "\u0324\7\u0093\2\2\u0324\u033e\3\2\2\2\u0325\u0326\7x\2\2\u0326\u0327"+
- "\5^\60\2\u0327\u0328\7w\2\2\u0328\u0329\7\u0093\2\2\u0329\u032a\7y\2\2"+
- "\u032a\u032b\7w\2\2\u032b\u032c\7\u0093\2\2\u032c\u033e\3\2\2\2\u032d"+
- "\u032e\7x\2\2\u032e\u032f\5^\60\2\u032f\u0330\7w\2\2\u0330\u0331\7\u0093"+
- "\2\2\u0331\u0332\7y\2\2\u0332\u033e\3\2\2\2\u0333\u0334\7x\2\2\u0334\u0335"+
- "\5^\60\2\u0335\u0336\7y\2\2\u0336\u033e\3\2\2\2\u0337\u0338\7x\2\2\u0338"+
- "\u0339\7x\2\2\u0339\u033a\5^\60\2\u033a\u033b\7y\2\2\u033b\u033c\7y\2"+
- "\2\u033c\u033e\3\2\2\2\u033d\u0310\3\2\2\2\u033d\u0311\3\2\2\2\u033d\u0313"+
- "\3\2\2\2\u033d\u0317\3\2\2\2\u033d\u031d\3\2\2\2\u033d\u0325\3\2\2\2\u033d"+
- "\u032d\3\2\2\2\u033d\u0333\3\2\2\2\u033d\u0337\3\2\2\2\u033e]\3\2\2\2"+
- "\u033f\u0340\b\60\1\2\u0340\u0341\7z\2\2\u0341\u0342\5^\60\2\u0342\u0343"+
- "\7{\2\2\u0343\u034e\3\2\2\2\u0344\u0345\t\t\2\2\u0345\u034e\5^\60\n\u0346"+
- "\u034e\7\u0093\2\2\u0347\u034e\7\u0091\2\2\u0348\u0349\7\u0085\2\2\u0349"+
- "\u034a\7\u0093\2\2\u034a\u034e\7\u0086\2\2\u034b\u034e\7\u0087\2\2\u034c"+
- "\u034e\7\u0090\2\2\u034d\u033f\3\2\2\2\u034d\u0344\3\2\2\2\u034d\u0346"+
- "\3\2\2\2\u034d\u0347\3\2\2\2\u034d\u0348\3\2\2\2\u034d\u034b\3\2\2\2\u034d"+
- "\u034c\3\2\2\2\u034e\u035d\3\2\2\2\u034f\u0350\f\f\2\2\u0350\u0351\7|"+
- "\2\2\u0351\u035c\5^\60\r\u0352\u0353\f\13\2\2\u0353\u0354\t\n\2\2\u0354"+
- "\u035c\5^\60\f\u0355\u0356\f\t\2\2\u0356\u0357\t\13\2\2\u0357\u035c\5"+
- "^\60\n\u0358\u0359\f\b\2\2\u0359\u035a\t\f\2\2\u035a\u035c\5^\60\t\u035b"+
- "\u034f\3\2\2\2\u035b\u0352\3\2\2\2\u035b\u0355\3\2\2\2\u035b\u0358\3\2"+
- "\2\2\u035c\u035f\3\2\2\2\u035d\u035b\3\2\2\2\u035d\u035e\3\2\2\2\u035e"+
- "_\3\2\2\2\u035f\u035d\3\2\2\2\\iz\u0083\u008d\u0093\u009b\u00a2\u00ab"+
- "\u00b0\u00b6\u00bb\u00c0\u00c7\u00ce\u00d3\u00df\u00e2\u00e4\u00ef\u00f6"+
- "\u00fb\u0101\u0103\u010b\u0111\u011d\u012b\u0131\u0137\u013d\u0142\u0146"+
- "\u014f\u0156\u015d\u0167\u0173\u017e\u0193\u019c\u01a2\u01a7\u01ae\u01bb"+
- "\u01c0\u01cc\u01da\u01ed\u01f6\u01fe\u0203\u0208\u020a\u0210\u0215\u0219"+
- "\u021f\u0222\u022a\u022d\u0230\u023c\u0248\u0250\u0256\u025a\u026f\u0273"+
- "\u027c\u0280\u02b2\u02bc\u02be\u02c6\u02cb\u02d5\u02e4\u02e9\u02ef\u02f4"+
- "\u02f9\u02fb\u02ff\u0302\u030a\u030e\u033d\u034d\u035b\u035d";
+ "U\3\2\2\2\u02f1\u02f2\7\u0093\2\2\u02f2\u02f6\7v\2\2\u02f3\u02f5\7\u0094"+
+ "\2\2\u02f4\u02f3\3\2\2\2\u02f5\u02f8\3\2\2\2\u02f6\u02f4\3\2\2\2\u02f6"+
+ "\u02f7\3\2\2\2\u02f7\u0302\3\2\2\2\u02f8\u02f6\3\2\2\2\u02f9\u02fa\7\u0092"+
+ "\2\2\u02fa\u02fe\7v\2\2\u02fb\u02fd\7\u0094\2\2\u02fc\u02fb\3\2\2\2\u02fd"+
+ "\u0300\3\2\2\2\u02fe\u02fc\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0302\3\2"+
+ "\2\2\u0300\u02fe\3\2\2\2\u0301\u02f1\3\2\2\2\u0301\u02f9\3\2\2\2\u0302"+
+ "W\3\2\2\2\u0303\u0305\7t\2\2\u0304\u0306\5\\/\2\u0305\u0304\3\2\2\2\u0305"+
+ "\u0306\3\2\2\2\u0306\u030a\3\2\2\2\u0307\u0309\7\u0094\2\2\u0308\u0307"+
+ "\3\2\2\2\u0309\u030c\3\2\2\2\u030a\u0308\3\2\2\2\u030a\u030b\3\2\2\2\u030b"+
+ "Y\3\2\2\2\u030c\u030a\3\2\2\2\u030d\u030e\7s\2\2\u030e\u0313\5^\60\2\u030f"+
+ "\u0310\7w\2\2\u0310\u0312\5^\60\2\u0311\u030f\3\2\2\2\u0312\u0315\3\2"+
+ "\2\2\u0313\u0311\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0319\3\2\2\2\u0315"+
+ "\u0313\3\2\2\2\u0316\u0318\7\u0094\2\2\u0317\u0316\3\2\2\2\u0318\u031b"+
+ "\3\2\2\2\u0319\u0317\3\2\2\2\u0319\u031a\3\2\2\2\u031a[\3\2\2\2\u031b"+
+ "\u0319\3\2\2\2\u031c\u034a\5^\60\2\u031d\u031e\7u\2\2\u031e\u034a\5^\60"+
+ "\2\u031f\u0320\5^\60\2\u0320\u0321\7w\2\2\u0321\u0322\5^\60\2\u0322\u034a"+
+ "\3\2\2\2\u0323\u0324\7x\2\2\u0324\u0325\5^\60\2\u0325\u0326\7y\2\2\u0326"+
+ "\u0327\7w\2\2\u0327\u0328\7\u0093\2\2\u0328\u034a\3\2\2\2\u0329\u032a"+
+ "\7x\2\2\u032a\u032b\7x\2\2\u032b\u032c\5^\60\2\u032c\u032d\7y\2\2\u032d"+
+ "\u032e\7y\2\2\u032e\u032f\7w\2\2\u032f\u0330\7\u0093\2\2\u0330\u034a\3"+
+ "\2\2\2\u0331\u0332\7x\2\2\u0332\u0333\5^\60\2\u0333\u0334\7w\2\2\u0334"+
+ "\u0335\7\u0093\2\2\u0335\u0336\7y\2\2\u0336\u0337\7w\2\2\u0337\u0338\7"+
+ "\u0093\2\2\u0338\u034a\3\2\2\2\u0339\u033a\7x\2\2\u033a\u033b\5^\60\2"+
+ "\u033b\u033c\7w\2\2\u033c\u033d\7\u0093\2\2\u033d\u033e\7y\2\2\u033e\u034a"+
+ "\3\2\2\2\u033f\u0340\7x\2\2\u0340\u0341\5^\60\2\u0341\u0342\7y\2\2\u0342"+
+ "\u034a\3\2\2\2\u0343\u0344\7x\2\2\u0344\u0345\7x\2\2\u0345\u0346\5^\60"+
+ "\2\u0346\u0347\7y\2\2\u0347\u0348\7y\2\2\u0348\u034a\3\2\2\2\u0349\u031c"+
+ "\3\2\2\2\u0349\u031d\3\2\2\2\u0349\u031f\3\2\2\2\u0349\u0323\3\2\2\2\u0349"+
+ "\u0329\3\2\2\2\u0349\u0331\3\2\2\2\u0349\u0339\3\2\2\2\u0349\u033f\3\2"+
+ "\2\2\u0349\u0343\3\2\2\2\u034a]\3\2\2\2\u034b\u034c\b\60\1\2\u034c\u034d"+
+ "\7z\2\2\u034d\u034e\5^\60\2\u034e\u034f\7{\2\2\u034f\u035a\3\2\2\2\u0350"+
+ "\u0351\t\t\2\2\u0351\u035a\5^\60\n\u0352\u035a\7\u0093\2\2\u0353\u035a"+
+ "\7\u0091\2\2\u0354\u0355\7\u0085\2\2\u0355\u0356\7\u0093\2\2\u0356\u035a"+
+ "\7\u0086\2\2\u0357\u035a\7\u0087\2\2\u0358\u035a\7\u0090\2\2\u0359\u034b"+
+ "\3\2\2\2\u0359\u0350\3\2\2\2\u0359\u0352\3\2\2\2\u0359\u0353\3\2\2\2\u0359"+
+ "\u0354\3\2\2\2\u0359\u0357\3\2\2\2\u0359\u0358\3\2\2\2\u035a\u0369\3\2"+
+ "\2\2\u035b\u035c\f\f\2\2\u035c\u035d\7|\2\2\u035d\u0368\5^\60\r\u035e"+
+ "\u035f\f\13\2\2\u035f\u0360\t\n\2\2\u0360\u0368\5^\60\f\u0361\u0362\f"+
+ "\t\2\2\u0362\u0363\t\13\2\2\u0363\u0368\5^\60\n\u0364\u0365\f\b\2\2\u0365"+
+ "\u0366\t\f\2\2\u0366\u0368\5^\60\t\u0367\u035b\3\2\2\2\u0367\u035e\3\2"+
+ "\2\2\u0367\u0361\3\2\2\2\u0367\u0364\3\2\2\2\u0368\u036b\3\2\2\2\u0369"+
+ "\u0367\3\2\2\2\u0369\u036a\3\2\2\2\u036a_\3\2\2\2\u036b\u0369\3\2\2\2"+
+ "\\iz\u0083\u008d\u0093\u009b\u00a2\u00ab\u00b0\u00b6\u00bb\u00c0\u00c7"+
+ "\u00ce\u00d3\u00df\u00e2\u00e4\u00ef\u00f6\u00fb\u0101\u0103\u010b\u0111"+
+ "\u011d\u012b\u0131\u0137\u013d\u0142\u0146\u014f\u0156\u015d\u0167\u0173"+
+ "\u017e\u0193\u019c\u01a2\u01a7\u01ae\u01bb\u01c0\u01cc\u01da\u01ed\u01f6"+
+ "\u01fe\u0203\u0208\u020a\u0210\u0215\u0219\u021f\u0222\u022a\u022d\u0230"+
+ "\u023c\u0248\u0250\u0256\u025a\u026f\u0273\u027c\u0280\u02b2\u02bc\u02be"+
+ "\u02c6\u02cb\u02d5\u02e4\u02e9\u02ef\u02f6\u02fe\u0301\u0305\u030a\u0313"+
+ "\u0319\u0349\u0359\u0367\u0369";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java
index 88168deeb..d485ec6df 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java
@@ -1060,10 +1060,6 @@ public class Pass4CodeGeneration {
} catch(AsmFragmentTemplateSynthesizer.UnknownFragmentException e) {
throw new CompileError("Interrupt type not supported " + procedure.getInterruptType() + " int " + procedure.toString() + "\n" + e.getMessage());
}
- // Mark labels as don't optimize
- for(AsmLine asmLine : asm.getCurrentChunk().getLines()) {
- if(asmLine instanceof AsmLabel) ((AsmLabel) asmLine).setDontOptimize(true);
- }
}
private void addKickAsm(AsmProgram asm, StatementKickAsm statementKasm) {
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass5UnnecesaryLoadElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass5UnnecesaryLoadElimination.java
index 4379c4ae7..10a7cf14c 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass5UnnecesaryLoadElimination.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass5UnnecesaryLoadElimination.java
@@ -32,7 +32,7 @@ public class Pass5UnnecesaryLoadElimination extends Pass5AsmOptimization {
AsmLine line = lineIt.next();
if(line instanceof AsmInstruction) {
AsmInstruction instruction = (AsmInstruction) line;
- if(instruction.isDontOptimize()) {
+ if(instruction.isNoOptimize()) {
continue;
}
CpuOpcode cpuOpcode = instruction.getCpuOpcode();
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java
index 0bb8b9d3e..f739d9bae 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java
@@ -72,7 +72,7 @@ public class Pass5UnusedLabelElimination extends Pass5AsmOptimization {
currentScope = "";
} else if(line instanceof AsmLabel) {
AsmLabel label = (AsmLabel) line;
- if(label.isDontOptimize()) {
+ if(label.isNoOptimize()) {
continue;
}
String labelStr = currentScope + "::" + label.getLabel();